From f0f9da0f1b8f4cc3cf4a1eaff6f55b3ad6f2a050 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Sun, 12 May 2024 11:55:10 +0800 Subject: [PATCH] Add delayed test URL --- .../main/kotlin/com/v2ray/ang/AppConfig.kt | 2 ++ .../v2ray/ang/service/V2RayServiceManager.kt | 2 +- .../com/v2ray/ang/ui/SettingsActivity.kt | 32 +++++++++++-------- .../com/v2ray/ang/util/SpeedtestUtil.kt | 10 ++++-- .../main/kotlin/com/v2ray/ang/util/Utils.kt | 4 +++ .../v2ray/ang/viewmodel/SettingsViewModel.kt | 1 + .../app/src/main/res/values-ar/strings.xml | 3 ++ .../app/src/main/res/values-fa/strings.xml | 3 ++ .../app/src/main/res/values-ru/strings.xml | 3 ++ .../app/src/main/res/values-vi/strings.xml | 3 ++ .../src/main/res/values-zh-rCN/strings.xml | 3 ++ .../src/main/res/values-zh-rTW/strings.xml | 3 ++ V2rayNG/app/src/main/res/values/strings.xml | 3 ++ .../app/src/main/res/xml/pref_settings.xml | 5 +++ 14 files changed, 60 insertions(+), 17 deletions(-) diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt index 4151f5b8..f423a224 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt @@ -60,6 +60,7 @@ object AppConfig { const val PREF_HTTP_PORT = "pref_http_port" const val PREF_REMOTE_DNS = "pref_remote_dns" const val PREF_DOMESTIC_DNS = "pref_domestic_dns" + const val PREF_DELAY_TEST_URL = "pref_delay_test_url" const val PREF_LOGLEVEL = "pref_core_loglevel" const val PREF_MODE = "pref_mode" @@ -98,6 +99,7 @@ object AppConfig { const val PromotionUrl = "aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=" const val GeoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/" const val TgChannelUrl = "https://t.me/github_2dust" + const val DelayTestUrl = "https://www.google.com/generate_204" const val DNS_PROXY = "1.1.1.1" const val DNS_DIRECT = "223.5.5.5" diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt index fe6df1ff..6d5ee86f 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt @@ -237,7 +237,7 @@ object V2RayServiceManager { var errstr = "" if (v2rayPoint.isRunning) { try { - time = v2rayPoint.measureDelay() + time = v2rayPoint.measureDelay(Utils.getDelayTestUrl()) } catch (e: Exception) { Log.d(ANG_PACKAGE, "measureV2rayDelay: $e") errstr = e.message?.substringAfter("\":") ?: "empty message" diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt index 7b9e215a..a025909a 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt @@ -63,6 +63,7 @@ class SettingsActivity : BaseActivity() { private val httpPort by lazy { findPreference(AppConfig.PREF_HTTP_PORT) } private val remoteDns by lazy { findPreference(AppConfig.PREF_REMOTE_DNS) } private val domesticDns by lazy { findPreference(AppConfig.PREF_DOMESTIC_DNS) } + private val delayTestUrl by lazy { findPreference(AppConfig.PREF_DELAY_TEST_URL) } private val mode by lazy { findPreference(AppConfig.PREF_MODE) } override fun onCreatePreferences(bundle: Bundle?, s: String?) { @@ -143,18 +144,6 @@ class SettingsActivity : BaseActivity() { true } - remoteDns?.setOnPreferenceChangeListener { _, any -> - // remoteDns.summary = any as String - val nval = any as String - remoteDns?.summary = if (nval == "") AppConfig.DNS_PROXY else nval - true - } - domesticDns?.setOnPreferenceChangeListener { _, any -> - // domesticDns.summary = any as String - val nval = any as String - domesticDns?.summary = if (nval == "") AppConfig.DNS_DIRECT else nval - true - } socksPort?.setOnPreferenceChangeListener { _, any -> val nval = any as String socksPort?.summary = if (TextUtils.isEmpty(nval)) AppConfig.PORT_SOCKS else nval @@ -165,6 +154,21 @@ class SettingsActivity : BaseActivity() { httpPort?.summary = if (TextUtils.isEmpty(nval)) AppConfig.PORT_HTTP else nval true } + remoteDns?.setOnPreferenceChangeListener { _, any -> + val nval = any as String + remoteDns?.summary = if (nval == "") AppConfig.DNS_PROXY else nval + true + } + domesticDns?.setOnPreferenceChangeListener { _, any -> + val nval = any as String + domesticDns?.summary = if (nval == "") AppConfig.DNS_DIRECT else nval + true + } + delayTestUrl?.setOnPreferenceChangeListener { _, any -> + val nval = any as String + delayTestUrl?.summary = if (nval == "") AppConfig.DelayTestUrl else nval + true + } mode?.setOnPreferenceChangeListener { _, newValue -> updateMode(newValue.toString()) true @@ -201,6 +205,7 @@ class SettingsActivity : BaseActivity() { httpPort?.summary = settingsStorage.decodeString(AppConfig.PREF_HTTP_PORT, AppConfig.PORT_HTTP) remoteDns?.summary = settingsStorage.decodeString(AppConfig.PREF_REMOTE_DNS, AppConfig.DNS_PROXY) domesticDns?.summary = settingsStorage.decodeString(AppConfig.PREF_DOMESTIC_DNS, AppConfig.DNS_DIRECT) + delayTestUrl?.summary = settingsStorage.decodeString(AppConfig.PREF_DELAY_TEST_URL, AppConfig.DelayTestUrl) initSharedPreference() } @@ -217,7 +222,8 @@ class SettingsActivity : BaseActivity() { socksPort, httpPort, remoteDns, - domesticDns + domesticDns, + delayTestUrl ).forEach { key -> key?.text = key?.summary.toString() } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt index 5a0e5989..1adfda65 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt @@ -10,8 +10,12 @@ import com.v2ray.ang.extension.responseLength import kotlinx.coroutines.isActive import libv2ray.Libv2ray import java.io.IOException -import java.net.* -import java.util.* +import java.net.HttpURLConnection +import java.net.InetSocketAddress +import java.net.Proxy +import java.net.Socket +import java.net.URL +import java.net.UnknownHostException import kotlin.coroutines.coroutineContext object SpeedtestUtil { @@ -34,7 +38,7 @@ object SpeedtestUtil { fun realPing(config: String): Long { return try { - Libv2ray.measureOutboundDelay(config) + Libv2ray.measureOutboundDelay(config, Utils.getDelayTestUrl()) } catch (e: Exception) { Log.d(AppConfig.ANG_PACKAGE, "realPing: $e") -1L diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt index 902de261..b672b667 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt @@ -434,5 +434,9 @@ object Utils { fun isTv(context: Context): Boolean = context.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) + fun getDelayTestUrl(): String { + val url = settingsStorage.decodeString(AppConfig.PREF_DELAY_TEST_URL) + return if (url.isNullOrEmpty()) AppConfig.DelayTestUrl else url + } } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt index b13d24be..9f8d8447 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt @@ -39,6 +39,7 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application AppConfig.PREF_VPN_DNS, AppConfig.PREF_REMOTE_DNS, AppConfig.PREF_DOMESTIC_DNS, + AppConfig.PREF_DELAY_TEST_URL, AppConfig.PREF_LOCAL_DNS_PORT, AppConfig.PREF_SOCKS_PORT, AppConfig.PREF_HTTP_PORT, diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml index 5b697684..ba5f54d9 100644 --- a/V2rayNG/app/src/main/res/values-ar/strings.xml +++ b/V2rayNG/app/src/main/res/values-ar/strings.xml @@ -156,6 +156,9 @@ DNS المحلي (اختياري) DNS + True delay test url (http/https) + Url + السماح بالاتصالات من الشبكة المحلية يمكن للأجهزة الأخرى الاتصال بالبروكسي بواسطة عنوان IP الخاص بك من خلال socks/http، يتم التمكين فقط في الشبكة الموثوقة لتجنب الاتصال غير المصرح به السماح بالاتصالات من الشبكة المحلية، تأكد من أنك في شبكة موثوقة diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index 892b273b..7f6d6e6d 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -146,6 +146,9 @@ DNS داخلی (اختیاری) DNS + True delay test url (http/https) + Url + اجازه اتصالات از طریق LAN دستگاه‌های دیگر می‌توانند از طریق socks/http به پراکسی توسط نشانی آی‌پی شما متصل شوند، فقط در شبکه مورد اعتماد فعال می‌شوند تا از اتصال غیرمجاز جلوگیری کنند اتصالات از طریق LAN را مجاز کنید، مطمئن شوید که در یک شبکه قابل اعتماد هستید diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index acba5867..7e83f6fb 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -149,6 +149,9 @@ Внутренняя DNS (необязательно) DNS + True delay test url (http/https) + Url + Разрешать подключения из LAN Другие устройства могут подключаться, используя ваш IP-адрес, чтобы использовать прокси по протоколам SOCKS/HTTP. Используйте только в доверенной сети, чтобы избежать несанкционированного подключения. Доступ из LAN разрешён, убедитесь, что вы находитесь в надёжной сети diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index f0c10e07..95de112c 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -148,6 +148,9 @@ DNS nội địa (không bắt buộc) DNS + True delay test url (http/https) + Url + Cho phép kết nối từ mạng LAN Các thiết bị khác trong cùng mạng LAN có thể kết nối đến SOCKS/HTTP proxy trên thiết bị của bạn. \nChỉ bật tính năng này trong các mạng đáng tin cậy để tránh kết nối trái phép. Đang bật cho phép kết nối từ mạng LAN diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index 338f900f..ff3d54a7 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -146,6 +146,9 @@ 境内DNS (可选) DNS + 真连接延迟测试网址 (http/https) + Url + 允许来自局域网的连接 其他设备可以使用socks/http协议通过您的IP地址连接到代理,仅在受信任的网络中启用以避免未经授权的连接 允许来自局域网的连接,请确保处于受信网络 diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index d6638543..a63e2a3d 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -147,6 +147,9 @@ 國內 DNS (可選) DNS + 真連線延遲測試網址 (http/https) + Url + 允許來自區域網路的連線 其他裝置可以使用 socks/http 協定透過您的 IP 位址連線到 Proxy,僅在受信任的網路中啟用以避免未經授權的連線 允許來自區域網路的連線,請確保處於受信網路 diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 9a100f7d..c38dcf63 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -159,6 +159,9 @@ Domestic DNS (Optional) DNS + True delay test url (http/https) + Url + Allow connections from the LAN Other devices can connect to proxy by your ip address through socks/http, Only enable in trusted network to avoid unauthorized connection Allow connections from the LAN, Make sure you are in a trusted network diff --git a/V2rayNG/app/src/main/res/xml/pref_settings.xml b/V2rayNG/app/src/main/res/xml/pref_settings.xml index 95399101..cf0cd2ec 100644 --- a/V2rayNG/app/src/main/res/xml/pref_settings.xml +++ b/V2rayNG/app/src/main/res/xml/pref_settings.xml @@ -211,6 +211,11 @@ android:summary="@string/summary_pref_domestic_dns" android:title="@string/title_pref_domestic_dns" /> + +