From fc2e4ff2109d09046fe3b22f83eabb20df42a88c Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Fri, 12 Apr 2024 07:45:26 +0800 Subject: [PATCH] Optimize routing --- .../src/main/kotlin/com/v2ray/ang/AppConfig.kt | 5 +++-- .../kotlin/com/v2ray/ang/dto/ServerConfig.kt | 4 ++-- .../com/v2ray/ang/ui/RoutingSettingsFragment.kt | 2 +- .../kotlin/com/v2ray/ang/ui/SettingsActivity.kt | 4 ++-- .../src/main/kotlin/com/v2ray/ang/util/Utils.kt | 8 ++++---- .../com/v2ray/ang/util/V2rayConfigUtil.kt | 17 +++++++++++++---- .../app/src/main/res/values-zh-rCN/strings.xml | 2 +- .../app/src/main/res/values-zh-rTW/strings.xml | 2 +- V2rayNG/app/src/main/res/values/strings.xml | 2 +- 9 files changed, 28 insertions(+), 18 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 0d96ac02..7b099a48 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt @@ -63,7 +63,7 @@ object AppConfig { const val TASKER_EXTRA_BUNDLE_GUID = "tasker_extra_bundle_guid" const val TASKER_DEFAULT_GUID = "Default" - const val TAG_AGENT = "proxy" + const val TAG_PROXY = "proxy" const val TAG_DIRECT = "direct" const val TAG_BLOCKED = "block" const val TAG_FRAGMENT = "fragment" @@ -78,8 +78,9 @@ object AppConfig { const val promotionUrl = "aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=" const val geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/" - const val DNS_AGENT = "1.1.1.1" + const val DNS_PROXY = "1.1.1.1" const val DNS_DIRECT = "223.5.5.5" + const val DNS_VPN = "1.1.1.1" const val PORT_LOCAL_DNS = "10853" const val PORT_SOCKS = "10808" diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt index b4cd3e16..1999c977 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt @@ -1,6 +1,6 @@ package com.v2ray.ang.dto -import com.v2ray.ang.AppConfig.TAG_AGENT +import com.v2ray.ang.AppConfig.TAG_PROXY import com.v2ray.ang.AppConfig.TAG_BLOCKED import com.v2ray.ang.AppConfig.TAG_DIRECT import com.v2ray.ang.util.Utils @@ -58,7 +58,7 @@ data class ServerConfig( fun getAllOutboundTags(): MutableList { if (configType != EConfigType.CUSTOM) { - return mutableListOf(TAG_AGENT, TAG_DIRECT, TAG_BLOCKED) + return mutableListOf(TAG_PROXY, TAG_DIRECT, TAG_BLOCKED) } fullConfig?.let { config -> return config.outbounds.map { it.tag }.toMutableList() diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt index 88f65d41..d4f77234 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/RoutingSettingsFragment.kt @@ -127,7 +127,7 @@ class RoutingSettingsFragment : Fragment() { var tag = "" when (requireArguments().getString(routing_arg)) { AppConfig.PREF_V2RAY_ROUTING_AGENT -> { - tag = AppConfig.TAG_AGENT + tag = AppConfig.TAG_PROXY } AppConfig.PREF_V2RAY_ROUTING_DIRECT -> { tag = AppConfig.TAG_DIRECT 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 8bb9bea2..470540b5 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 @@ -120,7 +120,7 @@ class SettingsActivity : BaseActivity() { remoteDns?.setOnPreferenceChangeListener { _, any -> // remoteDns.summary = any as String val nval = any as String - remoteDns?.summary = if (nval == "") AppConfig.DNS_AGENT else nval + remoteDns?.summary = if (nval == "") AppConfig.DNS_PROXY else nval true } domesticDns?.setOnPreferenceChangeListener { _, any -> @@ -213,7 +213,7 @@ class SettingsActivity : BaseActivity() { autoUpdateInterval?.isEnabled = defaultSharedPreferences.getBoolean(AppConfig.SUBSCRIPTION_AUTO_UPDATE, false) if (TextUtils.isEmpty(remoteDnsString)) { - remoteDnsString = AppConfig.DNS_AGENT + remoteDnsString = AppConfig.DNS_PROXY } if (TextUtils.isEmpty(domesticDns?.summary)) { domesticDns?.summary = AppConfig.DNS_DIRECT 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 f2639db7..47153633 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 @@ -139,10 +139,10 @@ object Utils { * get remote dns servers from preference */ fun getRemoteDnsServers(): List { - val remoteDns = settingsStorage?.decodeString(AppConfig.PREF_REMOTE_DNS) ?: AppConfig.DNS_AGENT + val remoteDns = settingsStorage?.decodeString(AppConfig.PREF_REMOTE_DNS) ?: AppConfig.DNS_PROXY val ret = remoteDns.split(",").filter { isPureIpAddress(it) || isCoreDNSAddress(it) } if (ret.isEmpty()) { - return listOf(AppConfig.DNS_AGENT) + return listOf(AppConfig.DNS_PROXY) } return ret } @@ -150,7 +150,7 @@ object Utils { fun getVpnDnsServers(): List { val vpnDns = settingsStorage?.decodeString(AppConfig.PREF_VPN_DNS) ?: settingsStorage?.decodeString(AppConfig.PREF_REMOTE_DNS) - ?: AppConfig.DNS_AGENT + ?: AppConfig.DNS_VPN return vpnDns.split(",").filter { isPureIpAddress(it) } // allow empty, in that case dns will use system default } @@ -160,7 +160,7 @@ object Utils { */ fun getDomesticDnsServers(): List { val domesticDns = settingsStorage?.decodeString(AppConfig.PREF_DOMESTIC_DNS) ?: AppConfig.DNS_DIRECT - val ret = domesticDns.split(",").filter { isPureIpAddress(it) || isCoreDNSAddress(it) } + val ret = domesticDns.split(",").filter { isPureIpAddress(it) } if (ret.isEmpty()) { return listOf(AppConfig.DNS_DIRECT) } diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt index 2c4911c2..a549610b 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt @@ -175,7 +175,7 @@ object V2rayConfigUtil { try { routingUserRule( settingsStorage?.decodeString(AppConfig.PREF_V2RAY_ROUTING_AGENT) - ?: "", AppConfig.TAG_AGENT, v2rayConfig + ?: "", AppConfig.TAG_PROXY, v2rayConfig ) routingUserRule( settingsStorage?.decodeString(AppConfig.PREF_V2RAY_ROUTING_DIRECT) @@ -195,7 +195,7 @@ object V2rayConfigUtil { // Hardcode googleapis.cn val googleapisRoute = V2rayConfig.RoutingBean.RulesBean( - outboundTag = AppConfig.TAG_AGENT, + outboundTag = AppConfig.TAG_PROXY, domain = arrayListOf("domain:googleapis.cn") ) @@ -225,6 +225,15 @@ object V2rayConfigUtil { v2rayConfig.routing.rules.add(globalDirect) } } + + if(routingMode != ERoutingMode.GLOBAL_DIRECT.value) { + v2rayConfig.routing.rules.add( + V2rayConfig.RoutingBean.RulesBean( + outboundTag = AppConfig.TAG_PROXY, + port = "0-65535" + )) + } + } catch (e: Exception) { e.printStackTrace() return false @@ -340,7 +349,7 @@ object V2rayConfigUtil { val remoteDns = Utils.getRemoteDnsServers() if (v2rayConfig.inbounds.none { e -> e.protocol == "dokodemo-door" && e.tag == "dns-in" }) { val dnsInboundSettings = V2rayConfig.InboundBean.InSettingsBean( - address = if (Utils.isPureIpAddress(remoteDns.first())) remoteDns.first() else "1.1.1.1", + address = if (Utils.isPureIpAddress(remoteDns.first())) remoteDns.first() else AppConfig.DNS_PROXY, port = 53, network = "tcp,udp" ) @@ -477,7 +486,7 @@ object V2rayConfigUtil { if (Utils.isPureIpAddress(remoteDns.first())) { v2rayConfig.routing.rules.add( 0, V2rayConfig.RoutingBean.RulesBean( - outboundTag = AppConfig.TAG_AGENT, + outboundTag = AppConfig.TAG_PROXY, port = "53", ip = arrayListOf(remoteDns.first()), domain = null 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 bb6add7d..a517af0a 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -135,7 +135,7 @@ 预定义规则 自定义规则 - 远程DNS (可选) + 远程DNS (udp/tcp/https/quic)(可选) DNS VPN DNS (仅支持 IPv4/v6) 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 86a56169..22c82d6c 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -135,7 +135,7 @@ 轉送模式 自訂轉送 - 遠端 DNS (可選) + 遠端DNS (udp/tcp/https/quic)(可選) DNS VPN DNS (僅支援 IPv4/v6) diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index e8faccee..3bfd95d0 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -148,7 +148,7 @@ Predefined rules Custom rules - Remote DNS (Optional) + Remote DNS (udp/tcp/https/quic)(Optional) DNS VPN DNS (only IPv4/v6)