diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt
index 0a2a2946..6a6195d5 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt
@@ -103,6 +103,7 @@ object AppConfig {
const val TG_CHANNEL_URL = "https://t.me/github_2dust"
const val DELAY_TEST_URL = "https://www.gstatic.com/generate_204"
const val DELAY_TEST_URL2 = "https://www.google.com/generate_204"
+ const val IP_API_Url = "https://api.ip.sb/geoip"
/** DNS server addresses. */
const val DNS_PROXY = "1.1.1.1"
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/dto/IPAPIInfo.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/IPAPIInfo.kt
new file mode 100644
index 00000000..4d29ffc7
--- /dev/null
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/dto/IPAPIInfo.kt
@@ -0,0 +1,11 @@
+package com.v2ray.ang.dto
+
+data class IPAPIInfo(
+ var ip: String? = null,
+ var city: String? = null,
+ var region: String? = null,
+ var region_code: String? = null,
+ var country: String? = null,
+ var country_name: String? = null,
+ var country_code: String? = null
+)
\ No newline at end of file
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt
index bab1f1d4..99898a3a 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt
@@ -6,8 +6,10 @@ import android.text.TextUtils
import android.util.Log
import com.v2ray.ang.AppConfig
import com.v2ray.ang.R
+import com.v2ray.ang.dto.IPAPIInfo
import com.v2ray.ang.extension.responseLength
import com.v2ray.ang.util.HttpUtil
+import com.v2ray.ang.util.JsonUtil
import kotlinx.coroutines.isActive
import libv2ray.Libv2ray
import java.io.IOException
@@ -164,6 +166,14 @@ object SpeedtestManager {
return Pair(elapsed, result)
}
+ fun getRemoteIPInfo(): String? {
+ val httpPort = SettingsManager.getHttpPort()
+ var content = HttpUtil.getUrlContent(AppConfig.IP_API_Url, 5000, httpPort) ?: return null
+
+ var ipInfo = JsonUtil.fromJson(content, IPAPIInfo::class.java) ?: return null
+ return "(${ipInfo.country_code}) ${ipInfo.ip}"
+ }
+
/**
* Gets the version of the V2Ray library.
*
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayServiceManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayServiceManager.kt
index d1c17cf1..44cd257a 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayServiceManager.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/V2RayServiceManager.kt
@@ -15,6 +15,7 @@ import com.v2ray.ang.dto.ProfileItem
import com.v2ray.ang.extension.toast
import com.v2ray.ang.handler.MmkvManager
import com.v2ray.ang.handler.SettingsManager
+import com.v2ray.ang.handler.SpeedtestManager
import com.v2ray.ang.handler.V2rayConfigManager
import com.v2ray.ang.util.MessageUtil
import com.v2ray.ang.util.PluginUtil
@@ -231,7 +232,12 @@ object V2RayServiceManager {
val result = if (time == -1L) {
service.getString(R.string.connection_test_error, errstr)
} else {
- service.getString(R.string.connection_test_available, time)
+ buildString {
+ append(service.getString(R.string.connection_test_available, time))
+ SpeedtestManager.getRemoteIPInfo()?.let { ip ->
+ append("\n$ip")
+ }
+ }
}
MessageUtil.sendMsg2UI(service, AppConfig.MSG_MEASURE_DELAY_SUCCESS, result)
diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml
index ced93fa0..c1b31042 100644
--- a/V2rayNG/app/src/main/res/values/strings.xml
+++ b/V2rayNG/app/src/main/res/values/strings.xml
@@ -304,7 +304,7 @@
Check Connectivity
Testing…
Testing %d configurations…
- Success: HTTP connection took %dms
+ Success: Connection took %dms
Fail to detect internet connection: %s
Internet Unavailable
Error code: #%d