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 82e8867f..2b422985 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt @@ -25,6 +25,7 @@ object AppConfig { const val PREF_APPEND_HTTP_PROXY = "pref_append_http_proxy" const val PREF_LOCAL_DNS_PORT = "pref_local_dns_port" const val PREF_VPN_DNS = "pref_vpn_dns" + const val PREF_VPN_BYPASS_LAN = "pref_vpn_bypass_lan" const val PREF_ROUTING_DOMAIN_STRATEGY = "pref_routing_domain_strategy" const val PREF_ROUTING_RULESET = "pref_routing_ruleset" const val PREF_MUX_ENABLED = "pref_mux_enabled" diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SettingsManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SettingsManager.kt index 79ece4ef..83376356 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SettingsManager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SettingsManager.kt @@ -117,6 +117,14 @@ object SettingsManager { } fun routingRulesetsBypassLan(): Boolean { + val vpnBypassLan = MmkvManager.decodeSettingsString(AppConfig.PREF_VPN_BYPASS_LAN) ?: "0" + if (vpnBypassLan == "1") { + return true + } else if (vpnBypassLan == "2") { + return false + } + + //Follow config val guid = MmkvManager.getSelectServer() ?: return false val config = MmkvManager.decodeServerConfig(guid) ?: return false if (config.configType == EConfigType.CUSTOM) { @@ -133,7 +141,7 @@ object SettingsManager { it.domain?.contains(GEOSITE_PRIVATE) == true || it.ip?.contains(GEOIP_PRIVATE) == true } return exist == true - } + } fun swapRoutingRuleset(fromPosition: Int, toPosition: Int) { val rulesetList = MmkvManager.decodeRoutingRulesets() 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 09901948..d90b353f 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 @@ -43,6 +43,7 @@ class SettingsActivity : BaseActivity() { private val appendHttpProxy by lazy { findPreference(AppConfig.PREF_APPEND_HTTP_PROXY) } private val localDnsPort by lazy { findPreference(AppConfig.PREF_LOCAL_DNS_PORT) } private val vpnDns by lazy { findPreference(AppConfig.PREF_VPN_DNS) } + private val vpnBypassLan by lazy { findPreference(AppConfig.PREF_VPN_BYPASS_LAN) } private val mux by lazy { findPreference(AppConfig.PREF_MUX_ENABLED) } private val muxConcurrency by lazy { findPreference(AppConfig.PREF_MUX_CONCURRENCY) } @@ -246,6 +247,7 @@ class SettingsActivity : BaseActivity() { } listOf( + AppConfig.PREF_VPN_BYPASS_LAN, AppConfig.PREF_ROUTING_DOMAIN_STRATEGY, AppConfig.PREF_MUX_XUDP_QUIC, AppConfig.PREF_FRAGMENT_PACKETS, @@ -269,6 +271,8 @@ class SettingsActivity : BaseActivity() { appendHttpProxy?.isEnabled = vpn localDnsPort?.isEnabled = vpn vpnDns?.isEnabled = vpn + vpnBypassLan?.isEnabled = vpn + vpn if (vpn) { updateLocalDns( MmkvManager.decodeSettingsBool( 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 b0533f02..9e73ff39 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 @@ -29,6 +29,7 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application when (key) { AppConfig.PREF_MODE, AppConfig.PREF_VPN_DNS, + AppConfig.PREF_VPN_BYPASS_LAN, AppConfig.PREF_REMOTE_DNS, AppConfig.PREF_DOMESTIC_DNS, AppConfig.PREF_DNS_HOSTS, diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml index e2bbb68d..29708941 100644 --- a/V2rayNG/app/src/main/res/values-ar/strings.xml +++ b/V2rayNG/app/src/main/res/values-ar/strings.xml @@ -176,6 +176,7 @@ DNS VPN DNS (IPv4/v6 فقط) + Does VPN bypass LAN DNS المحلي (اختياري) DNS @@ -323,4 +324,10 @@ داكن + + Follow config + Bypass + Not Bypass + + diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index 59e68679..e285bc0f 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -176,6 +176,7 @@ DNS VPN DNS (শুধুমাত্র IPv4/v6) + Does VPN bypass LAN ঘরোয়া DNS (ঐচ্ছিক) DNS @@ -327,5 +328,10 @@ ইরান হোয়াইটলিস্ট + + Follow config + Bypass + Not Bypass + \ No newline at end of file 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 a58d9ec9..069d720d 100644 --- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml +++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml @@ -176,6 +176,7 @@ DNS VPN DNS (تینا IPv4/v6) + Does VPN bypass LAN DNS منی (اختیاری) DNS @@ -338,4 +339,10 @@ نومگه اسبؽڌ ایران + + Follow config + Bypass + Not Bypass + + diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index c43f4fd1..82e692fd 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -174,6 +174,7 @@ DNS VPN DNS (فقط IPv4/v6) + Does VPN bypass LAN DNS داخلی (اختیاری) DNS @@ -336,4 +337,10 @@ ایران + + Follow config + Bypass + Not Bypass + + diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index e98eec4c..bb1e3667 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -175,6 +175,7 @@ DNS VPN DNS (только IPv4/v6) + Does VPN bypass LAN Внутренняя DNS (необязательно) DNS @@ -337,4 +338,10 @@ Белый список Ирана + + Follow config + Bypass + Not Bypass + + diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index c7cd80e4..0e104e75 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -175,6 +175,7 @@ DNS VPN DNS (Chỉ IPv4 / IPv6) + Does VPN bypass LAN DNS nội địa (Không bắt buộc) DNS @@ -324,4 +325,10 @@ Fragment Interval (min-max) Enable Fragment + + Follow config + Bypass + Not Bypass + + 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 d0f3df99..4b2d82f7 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -172,6 +172,7 @@ DNS VPN DNS (仅支持 IPv4/v6) + VPN是否绕过局域网 境内DNS (可选) DNS @@ -328,4 +329,10 @@ 伊朗(Iran) + + 跟随配置文件 + 绕过 + 不绕过 + + 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 b4305157..4af294f3 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -174,6 +174,7 @@ DNS VPN DNS (僅支援 IPv4/v6) + VPN是否繞過區域網 DNS hosts (格式: 網域:位址,…) domain:address,… @@ -327,4 +328,10 @@ 伊朗(Iran) + + 跟隨設定檔 + 繞過 + 不繞過 + + diff --git a/V2rayNG/app/src/main/res/values/arrays.xml b/V2rayNG/app/src/main/res/values/arrays.xml index addd526e..ed1c9c7d 100644 --- a/V2rayNG/app/src/main/res/values/arrays.xml +++ b/V2rayNG/app/src/main/res/values/arrays.xml @@ -211,4 +211,11 @@ stream-up stream-one + + + 0 + 1 + 2 + + \ No newline at end of file diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 7f0ca85c..c902ac00 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -178,6 +178,7 @@ DNS VPN DNS (only IPv4/v6) + Does VPN bypass LAN Domestic DNS (Optional) DNS @@ -340,4 +341,10 @@ Iran Whitelist + + Follow config + Bypass + Not Bypass + + diff --git a/V2rayNG/app/src/main/res/xml/pref_settings.xml b/V2rayNG/app/src/main/res/xml/pref_settings.xml index f4cd7577..1739a678 100644 --- a/V2rayNG/app/src/main/res/xml/pref_settings.xml +++ b/V2rayNG/app/src/main/res/xml/pref_settings.xml @@ -49,6 +49,14 @@ android:key="pref_vpn_dns" android:summary="@string/summary_pref_remote_dns" android:title="@string/title_pref_vpn_dns" /> + +