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 f7adb61a..3b573114 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt @@ -63,6 +63,8 @@ object AppConfig { const val PREF_CHECK_UPDATE_PRE_RELEASE = "pref_check_update_pre_release" const val PREF_GEO_FILES_SOURCES = "pref_geo_files_sources" const val PREF_USE_HEV_TUNNEL = "pref_use_hev_tunnel" + const val PREF_HEV_TUNNEL_LOGLEVEL = "pref_hev_tunnel_loglevel" + const val PREF_HEV_TUNNEL_RW_TIMEOUT = "pref_hev_tunnel_rw_timeout" /** Cache keys. */ const val CACHE_SUBSCRIPTION_ID = "cache_subscription_id" @@ -166,6 +168,9 @@ object AppConfig { const val VPN = "VPN" const val VPN_MTU = 1500 + /** hev-sock5-tunnel read-write-timeout value */ + const val HEVTUN_RW_TIMEOUT = "300000" + // Google API rule constants const val GOOGLEAPIS_CN_DOMAIN = "domain:googleapis.cn" const val GOOGLEAPIS_COM_DOMAIN = "googleapis.com" diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt index 66370b8a..2e764357 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/service/TProxyService.kt @@ -72,12 +72,11 @@ class TProxyService( appendLine(" address: ${AppConfig.LOOPBACK}") appendLine(" udp: 'udp'") - MmkvManager.decodeSettingsString(AppConfig.PREF_LOGLEVEL)?.let { logPref -> - if (logPref != "none") { - val logLevel = if (logPref == "warning") "warn" else logPref - appendLine("misc:") - appendLine(" log-level: $logLevel") - } + appendLine("misc:") + appendLine(" read-write-timeout: ${MmkvManager.decodeSettingsString(AppConfig.PREF_HEV_TUNNEL_RW_TIMEOUT) ?: AppConfig.HEVTUN_RW_TIMEOUT}") + val hevTunLogLevel = MmkvManager.decodeSettingsString(AppConfig.PREF_HEV_TUNNEL_LOGLEVEL) ?: "none" + if (hevTunLogLevel != "none") { + appendLine(" log-level: $hevTunLogLevel") } } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt index f0317b6f..f465c729 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt @@ -66,6 +66,10 @@ class SettingsActivity : BaseActivity() { private val delayTestUrl by lazy { findPreference(AppConfig.PREF_DELAY_TEST_URL) } private val mode by lazy { findPreference(AppConfig.PREF_MODE) } + private val hevTunLogLevel by lazy { findPreference(AppConfig.PREF_HEV_TUNNEL_LOGLEVEL) } + private val hevTunRwTimeout by lazy { findPreference(AppConfig.PREF_HEV_TUNNEL_RW_TIMEOUT) } + private val useHevTun by lazy { findPreference(AppConfig.PREF_USE_HEV_TUNNEL) } + override fun onCreatePreferences(bundle: Bundle?, s: String?) { addPreferencesFromResource(R.xml.pref_settings) @@ -172,6 +176,16 @@ class SettingsActivity : BaseActivity() { mode?.dialogLayoutResource = R.layout.preference_with_help_link //loglevel.summary = "LogLevel" + useHevTun?.setOnPreferenceChangeListener { _, newValue -> + updateHevTunSettings(newValue as Boolean) + true + } + + hevTunRwTimeout?.setOnPreferenceChangeListener { _, any -> + val nval = any as String + hevTunRwTimeout?.summary = if (TextUtils.isEmpty(nval)) AppConfig.HEVTUN_RW_TIMEOUT else nval + true + } } override fun onStart() { @@ -205,6 +219,9 @@ class SettingsActivity : BaseActivity() { dnsHosts?.summary = MmkvManager.decodeSettingsString(AppConfig.PREF_DNS_HOSTS) delayTestUrl?.summary = MmkvManager.decodeSettingsString(AppConfig.PREF_DELAY_TEST_URL, AppConfig.DELAY_TEST_URL) + updateHevTunSettings(MmkvManager.decodeSettingsBool(AppConfig.PREF_USE_HEV_TUNNEL, false)) + hevTunRwTimeout?.summary = MmkvManager.decodeSettingsString(AppConfig.PREF_HEV_TUNNEL_RW_TIMEOUT, AppConfig.HEVTUN_RW_TIMEOUT) + initSharedPreference() } @@ -220,7 +237,8 @@ class SettingsActivity : BaseActivity() { socksPort, remoteDns, domesticDns, - delayTestUrl + delayTestUrl, + hevTunRwTimeout ).forEach { key -> key?.text = key?.summary.toString() } @@ -260,7 +278,8 @@ class SettingsActivity : BaseActivity() { AppConfig.PREF_LOGLEVEL, AppConfig.PREF_OUTBOUND_DOMAIN_RESOLVE_METHOD, AppConfig.PREF_INTELLIGENT_SELECTION_METHOD, - AppConfig.PREF_MODE + AppConfig.PREF_MODE, + AppConfig.PREF_HEV_TUNNEL_LOGLEVEL ).forEach { key -> if (MmkvManager.decodeSettingsString(key) != null) { findPreference(key)?.value = MmkvManager.decodeSettingsString(key) @@ -366,6 +385,11 @@ class SettingsActivity : BaseActivity() { private fun updateFragmentInterval(value: String?) { fragmentInterval?.summary = value.toString() } + + private fun updateHevTunSettings(enabled: Boolean) { + hevTunLogLevel?.isEnabled = enabled + hevTunRwTimeout?.isEnabled = enabled + } } fun onModeHelpClicked(view: View) { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt index 0001ad05..fee9a80f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt @@ -59,6 +59,8 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application AppConfig.PREF_FRAGMENT_LENGTH, AppConfig.PREF_FRAGMENT_INTERVAL, AppConfig.PREF_MUX_XUDP_QUIC, + AppConfig.PREF_HEV_TUNNEL_LOGLEVEL, + AppConfig.PREF_HEV_TUNNEL_RW_TIMEOUT -> { MmkvManager.encodeSettings(key, sharedPreferences.getString(key, "")) } diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml index 278ee738..f1afa772 100644 --- a/V2rayNG/app/src/main/res/values-ar/strings.xml +++ b/V2rayNG/app/src/main/res/values-ar/strings.xml @@ -249,6 +249,8 @@ إعدادات وضع واجهة المستخدم ليلاً Enable New TUN Feature When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use badvpn-tun2socks. + Hev Tun Log Level + Hev Tun Read/Write Timeout (ms) Logcat نسخ diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index c717b5f7..21bcf850 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -250,6 +250,8 @@ ইউআই মোড সেটিংস Enable New TUN Feature When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use badvpn-tun2socks. + Hev Tun Log Level + Hev Tun Read/Write Timeout (ms) লগক্যাট কপি করুন diff --git a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml index 830dac26..730dc30c 100644 --- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml +++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml @@ -250,6 +250,8 @@ سامووا هالت رابت منتوری فعال کردن ویژیی نۊ TUN مجالی ک فعال بۊ، TUN ، hev-socks5-tunnel ن و کار اگره؛ ٱر چینووݩ نبۊ و جاس badvpn-tun2socks و کار گرؽڌه ابۊ. + Hev Tun Log Level + Hev Tun Read/Write Timeout (ms) داسووا لف گیری diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index f0c78546..4a88248d 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -247,6 +247,8 @@ تنظیمات حالت رابط کاربری فعالسازی قابلیت TUN جدید در صورت فعال بودن، TUN از hev-socks5-tunnel استفاده می‌کند؛ در غیر این صورت از badvpn-tun2socks. + Hev Tun Log Level + Hev Tun Read/Write Timeout (ms) گزارشات کپی diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index 264d9738..fcc93ea5 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -249,6 +249,8 @@ Тема интерфейса Использовать новую версию TUN Если включено, TUN будет использовать hev-socks5-tunnel; иначе будет использоваться badvpn-tun2socks. + Hev Tun Log Level + Hev Tun Read/Write Timeout (ms) Журнал Копировать diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index 62d9515f..3c18726c 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -250,6 +250,8 @@ Cài đặt chế độ UI Enable New TUN Feature When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use badvpn-tun2socks. + Hev Tun Log Level + Hev Tun Read/Write Timeout (ms) Logcat Sao chép 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 5a4e5121..d6854e3c 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -247,6 +247,8 @@ 界面颜色设置 启用新的 TUN 功能 选择启用后 TUN 将使用 hev-socks5-tunnel 否则使用 badvpn-tun2socks + HevTun日志级别 + HevTun读写超时 (ms) Logcat 复制 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 72cf283a..0a15f46b 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -248,6 +248,8 @@ 介面顯示模式 啟用新 TUN 功能 選擇啟用後,TUN 將使用 hev-socks5-tunnel,否則使用 badvpn-tun2socks。 + HevTun日誌級別 + HevTun讀寫超時 (ms) Logcat 複製 diff --git a/V2rayNG/app/src/main/res/values/arrays.xml b/V2rayNG/app/src/main/res/values/arrays.xml index 63ca4c6d..7d49c824 100644 --- a/V2rayNG/app/src/main/res/values/arrays.xml +++ b/V2rayNG/app/src/main/res/values/arrays.xml @@ -118,6 +118,13 @@ Proxy only + + none + error + warn + debug + + xtls-rprx-vision diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 4a93fa95..a183b0e4 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -251,6 +251,8 @@ UI mode settings Enable New TUN Feature When enabled, TUN will use hev-socks5-tunnel; otherwise, it will use badvpn-tun2socks. + Hev Tun Log Level + Hev Tun Read/Write Timeout (ms) Logcat Copy diff --git a/V2rayNG/app/src/main/res/xml/pref_settings.xml b/V2rayNG/app/src/main/res/xml/pref_settings.xml index c51c8281..4d133d49 100644 --- a/V2rayNG/app/src/main/res/xml/pref_settings.xml +++ b/V2rayNG/app/src/main/res/xml/pref_settings.xml @@ -260,7 +260,21 @@ android:key="pref_use_hev_tunnel" android:summary="@string/summary_pref_use_hev_tunnel" android:title="@string/title_pref_use_hev_tunnel" /> + + + + + - \ No newline at end of file