Added IP display in connection test

https://github.com/2dust/v2rayNG/issues/4489
This commit is contained in:
2dust
2025-04-14 14:15:25 +08:00
parent 358713a2a3
commit 38193b5621
5 changed files with 30 additions and 2 deletions

View File

@@ -103,6 +103,7 @@ object AppConfig {
const val TG_CHANNEL_URL = "https://t.me/github_2dust" 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_URL = "https://www.gstatic.com/generate_204"
const val DELAY_TEST_URL2 = "https://www.google.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. */ /** DNS server addresses. */
const val DNS_PROXY = "1.1.1.1" const val DNS_PROXY = "1.1.1.1"

View File

@@ -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
)

View File

@@ -6,8 +6,10 @@ import android.text.TextUtils
import android.util.Log import android.util.Log
import com.v2ray.ang.AppConfig import com.v2ray.ang.AppConfig
import com.v2ray.ang.R import com.v2ray.ang.R
import com.v2ray.ang.dto.IPAPIInfo
import com.v2ray.ang.extension.responseLength import com.v2ray.ang.extension.responseLength
import com.v2ray.ang.util.HttpUtil import com.v2ray.ang.util.HttpUtil
import com.v2ray.ang.util.JsonUtil
import kotlinx.coroutines.isActive import kotlinx.coroutines.isActive
import libv2ray.Libv2ray import libv2ray.Libv2ray
import java.io.IOException import java.io.IOException
@@ -164,6 +166,14 @@ object SpeedtestManager {
return Pair(elapsed, result) 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. * Gets the version of the V2Ray library.
* *

View File

@@ -15,6 +15,7 @@ import com.v2ray.ang.dto.ProfileItem
import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toast
import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.MmkvManager
import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.SettingsManager
import com.v2ray.ang.handler.SpeedtestManager
import com.v2ray.ang.handler.V2rayConfigManager import com.v2ray.ang.handler.V2rayConfigManager
import com.v2ray.ang.util.MessageUtil import com.v2ray.ang.util.MessageUtil
import com.v2ray.ang.util.PluginUtil import com.v2ray.ang.util.PluginUtil
@@ -231,7 +232,12 @@ object V2RayServiceManager {
val result = if (time == -1L) { val result = if (time == -1L) {
service.getString(R.string.connection_test_error, errstr) service.getString(R.string.connection_test_error, errstr)
} else { } 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) MessageUtil.sendMsg2UI(service, AppConfig.MSG_MEASURE_DELAY_SUCCESS, result)

View File

@@ -304,7 +304,7 @@
<string name="connection_test_pending">Check Connectivity</string> <string name="connection_test_pending">Check Connectivity</string>
<string name="connection_test_testing">Testing…</string> <string name="connection_test_testing">Testing…</string>
<string name="connection_test_testing_count">Testing %d configurations…</string> <string name="connection_test_testing_count">Testing %d configurations…</string>
<string name="connection_test_available">Success: HTTP connection took %dms</string> <string name="connection_test_available">Success: Connection took %dms</string>
<string name="connection_test_error">Fail to detect internet connection: %s</string> <string name="connection_test_error">Fail to detect internet connection: %s</string>
<string name="connection_test_fail">Internet Unavailable</string> <string name="connection_test_fail">Internet Unavailable</string>
<string name="connection_test_error_status_code">Error code: #%d</string> <string name="connection_test_error_status_code">Error code: #%d</string>