x1ongzhu 1 ano atrás
pai
commit
90974d0f01

+ 1 - 1
app/build.gradle

@@ -24,7 +24,7 @@ android {
         applicationId "com.example.modifier"
         minSdk 29
         targetSdk 34
-        versionCode 135
+        versionCode 136
         versionName "1.0.1"
         archivesBaseName = "modifier-${versionCode}"
 

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -24,6 +24,7 @@
     <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
     <uses-permission android:name="android.permission.SEND_SMS" />
     <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.READ_SMS" />
     <uses-permission android:name="android.permission.WRITE_SMS" />
     <uses-permission

+ 3 - 0
app/src/main/java/com/example/modifier/MainActivity.kt

@@ -4,12 +4,14 @@ import android.content.DialogInterface
 import android.content.Intent
 import android.os.Bundle
 import android.provider.Settings
+import android.util.Log
 import androidx.activity.enableEdgeToEdge
 import androidx.appcompat.app.AppCompatActivity
 import androidx.navigation.fragment.NavHostFragment
 import androidx.navigation.ui.NavigationUI.setupWithNavController
 import com.example.modifier.databinding.ActivityMainBinding
 import com.example.modifier.utils.enableAccessibility
+import com.example.modifier.utils.getIPAddress
 import com.example.modifier.utils.hasRootAccess
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import kotlinx.coroutines.CoroutineScope
@@ -52,6 +54,7 @@ class MainActivity : AppCompatActivity() {
                         .show()
                 }
             }
+            Log.i("getIPAddress", getIPAddress().joinToString())
         }
     }
 }

+ 5 - 1
app/src/main/java/com/example/modifier/service/SocketClient.kt

@@ -13,6 +13,7 @@ import com.example.modifier.model.TaskConfig
 import com.example.modifier.model.TaskExecutionResult
 import com.example.modifier.model.UpdateDeviceAction
 import com.example.modifier.serializer.Json
+import com.example.modifier.utils.getIPAddress
 import io.socket.client.IO
 import io.socket.client.Socket
 import io.socket.emitter.Emitter
@@ -36,7 +37,9 @@ class SocketClient(
 
     init {
         mSocketOpts.query =
-            "model=${Build.MODEL}&name=${name}&id=$id&version=${BuildConfig.VERSION_CODE}"
+            "model=${Build.MODEL}&name=${name}&id=$id&version=${BuildConfig.VERSION_CODE}&ip=${
+                getIPAddress().joinToString(",")
+            }}"
         mSocketOpts.transports = arrayOf("websocket")
 
         mSocket = IO.socket(server, mSocketOpts)
@@ -185,6 +188,7 @@ class SocketClient(
             dataObj.put("canSend", canSend)
             dataObj.put("busy", busy)
             dataObj.put("currentCountry", currentCountry)
+            dataObj.put("ip", getIPAddress().joinToString(","))
             data.put("data", dataObj)
             mSocket.emit("message", data)
         } catch (e: JSONException) {

+ 26 - 3
app/src/main/java/com/example/modifier/utils/System.kt

@@ -22,17 +22,22 @@ import com.example.modifier.http.ktorClient
 import com.example.modifier.service.ModifierService
 import io.ktor.client.request.head
 import kotlinx.coroutines.delay
-import kotlinx.coroutines.runBlocking
-import org.apache.commons.lang3.StringUtils
+import java.io.BufferedInputStream
+import java.io.ByteArrayOutputStream
 import java.io.File
+import java.io.FileInputStream
+import java.io.IOException
+import java.net.InetAddress
+import java.net.NetworkInterface
 import java.time.ZoneId
 import java.time.ZonedDateTime
 import java.time.format.DateTimeFormatter
+import java.util.Collections
 import java.util.Locale
-import java.util.Objects
 import java.util.UUID
 import kotlin.system.exitProcess
 
+
 const val systemTag = "$baseTag/System"
 val uniqueId: String
     @SuppressLint("HardwareIds")
@@ -269,4 +274,22 @@ fun restartSelf() {
     val mgr = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
     mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent)
     exitProcess(0)
+}
+
+fun getIPAddress(): List<String> {
+    return try {
+        NetworkInterface.getNetworkInterfaces().toList()
+            .flatMap { intf ->
+                intf.inetAddresses.toList()
+                    .map {
+                        it.hostAddress
+                    }
+            }
+            .filter {
+                it.matches(Regex("\\d+\\.\\d+\\.\\d+\\.\\d+")) && !it.startsWith("127.")
+            }
+    } catch (e: Exception) {
+        Log.e(systemTag, "Error getIPAddress", e)
+        emptyList()
+    }
 }