diff --git a/app/src/main/java/io/nekohasekai/sagernet/Constants.kt b/app/src/main/java/io/nekohasekai/sagernet/Constants.kt index 47bd5d3..32dca19 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/Constants.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/Constants.kt @@ -30,7 +30,6 @@ object Key { const val INDIVIDUAL = "individual" const val METERED_NETWORK = "meteredNetwork" - const val DOMAIN_STRATEGY = "domainStrategy" const val TRAFFIC_SNIFFING = "trafficSniffing" const val RESOLVE_DESTINATION = "resolveDestination" diff --git a/app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt b/app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt index 2c043d8..e70b91c 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/database/DataStore.kt @@ -82,8 +82,7 @@ object DataStore : OnPreferenceDataStoreChangeListener { var nightTheme by configurationStore.stringToInt(Key.NIGHT_THEME) var serviceMode by configurationStore.string(Key.SERVICE_MODE) { Key.MODE_VPN } - // var domainStrategy by configurationStore.string(Key.DOMAIN_STRATEGY) { "AsIs" } - var trafficSniffing by configurationStore.boolean(Key.TRAFFIC_SNIFFING) { true } + var trafficSniffing by configurationStore.stringToInt(Key.TRAFFIC_SNIFFING) { 1 } var resolveDestination by configurationStore.boolean(Key.RESOLVE_DESTINATION) // var tcpKeepAliveInterval by configurationStore.stringToInt(Key.TCP_KEEP_ALIVE_INTERVAL) { 15 } diff --git a/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt b/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt index d977f16..cb75058 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/fmt/ConfigBuilder.kt @@ -159,7 +159,8 @@ fun buildConfig( .mapNotNull { dns -> dns.trim().takeIf { it.isNotBlank() && !it.startsWith("#") } } val enableDnsRouting = DataStore.enableDnsRouting val useFakeDns = DataStore.enableFakeDns && !forTest && DataStore.ipv6Mode != IPv6Mode.ONLY - val needSniff = DataStore.trafficSniffing + val needSniff = DataStore.trafficSniffing > 0 + val needSniffOverride = DataStore.trafficSniffing == 2 val externalIndexMap = ArrayList() val requireTransproxy = if (forTest) false else DataStore.requireTransproxy val ipv6Mode = if (forTest) IPv6Mode.ENABLE else DataStore.ipv6Mode @@ -225,9 +226,10 @@ fun buildConfig( type = "tun" tag = "tun-in" stack = if (DataStore.tunImplementation == 1) "system" else "gvisor" - sniff = needSniff endpoint_independent_nat = true domain_strategy = genDomainStrategy(false) + sniff = needSniff + sniff_override_destination = needSniffOverride when (ipv6Mode) { IPv6Mode.DISABLE -> { inet4_address = listOf(VpnService.PRIVATE_VLAN4_CLIENT + "/28") @@ -249,16 +251,8 @@ fun buildConfig( listen = bind listen_port = DataStore.mixedPort domain_strategy = genDomainStrategy(false) - if (needSniff) { - sniff = true -// destOverride = when { -// useFakeDns && !trafficSniffing -> listOf("fakedns") -// useFakeDns -> listOf("fakedns", "http", "tls", "quic") -// else -> listOf("http", "tls", "quic") -// } -// metadataOnly = useFakeDns && !trafficSniffing -// routeOnly = true - } + sniff = needSniff + sniff_override_destination = needSniffOverride }) } @@ -269,8 +263,9 @@ fun buildConfig( tag = TAG_TRANS listen = bind listen_port = DataStore.transproxyPort - sniff = needSniff domain_strategy = genDomainStrategy(false) + sniff = needSniff + sniff_override_destination = needSniffOverride }) } else { inbounds.add(Inbound_RedirectOptions().apply { @@ -278,8 +273,9 @@ fun buildConfig( tag = TAG_TRANS listen = bind listen_port = DataStore.transproxyPort - sniff = needSniff domain_strategy = genDomainStrategy(false) + sniff = needSniff + sniff_override_destination = needSniffOverride }) } } diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt index a7bee74..a0c0516 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt @@ -79,7 +79,6 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() { val portLocalDns = findPreference(Key.LOCAL_DNS_PORT)!! val showDirectSpeed = findPreference(Key.SHOW_DIRECT_SPEED)!! val ipv6Mode = findPreference(Key.IPV6_MODE)!! -// val domainStrategy = findPreference(Key.DOMAIN_STRATEGY)!! val trafficSniffing = findPreference(Key.TRAFFIC_SNIFFING)!! val muxConcurrency = findPreference(Key.MUX_CONCURRENCY)!! @@ -203,7 +202,6 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() { mixedPort.onPreferenceChangeListener = reloadListener appendHttpProxy.onPreferenceChangeListener = reloadListener showDirectSpeed.onPreferenceChangeListener = reloadListener -// domainStrategy.onPreferenceChangeListener = reloadListener trafficSniffing.onPreferenceChangeListener = reloadListener muxConcurrency.onPreferenceChangeListener = reloadListener tcpKeepAliveInterval.onPreferenceChangeListener = reloadListener diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 6dbc71b..c009ac3 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -475,4 +475,6 @@ 长按设置项以设置缓冲区大小。 测试并发 Mux 协议 + 探测结果用于路由判断 + 探测结果用于目标地址 \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 6d672d2..665073e 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -517,4 +517,10 @@ 3 + + @string/off + @string/sniff_routing + @string/sniff_override + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b20b034..034905a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -516,5 +516,7 @@ Anyone can write advanced plugins, which can control NekoBox. please download an TLS Camouflage Settings Test concurrency Mux protocol + Sniff result for routing + Sniff result for destination \ No newline at end of file diff --git a/app/src/main/res/xml/global_preferences.xml b/app/src/main/res/xml/global_preferences.xml index afebcbc..73707cc 100644 --- a/app/src/main/res/xml/global_preferences.xml +++ b/app/src/main/res/xml/global_preferences.xml @@ -103,11 +103,14 @@ - + app:title="@string/traffic_sniffing" + app:useSimpleSummaryProvider="true" />