djoeni 3 лет назад
Родитель
Сommit
5255a0de81

+ 1 - 1
build.gradle.kts

@@ -40,7 +40,7 @@ subprojects {
             minSdk = 21
             targetSdk = 31
 
-            versionName = "2.5.11-pre01"
+            versionName = "2.5.11-pre02"
             versionCode = 205011
 
             resValue("string", "release_name", "v$versionName")

+ 6 - 0
core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt

@@ -73,6 +73,9 @@ data class ConfigurationOverride(
         @SerialName("enable")
         var enable: Boolean? = null,
 
+        @SerialName("prefer-h3")
+        var preferH3: Boolean? = null,
+
         @SerialName("listen")
         var listen: String? = null,
 
@@ -150,6 +153,9 @@ data class ConfigurationOverride(
 
         @SerialName("skip-domain")
         var skipDomain: List<String>? = null,
+
+        @SerialName("port-whitelist")
+        var portWhitelist: List<String>? = null,
     )
 
     @Serializable

+ 51 - 1
design/src/main/java/com/github/kr328/clash/design/MetaFeatureSettingsDesign.kt

@@ -93,6 +93,47 @@ class MetaFeatureSettingsDesign(
                 title = R.string.enable_process,
             )
 
+            category(R.string.dns)
+
+            val dnsDependencies: MutableList<Preference> = mutableListOf()
+
+            val dns = selectableList(
+                value = configuration.dns::enable,
+                values = arrayOf(
+                    null,
+                    true,
+                    false
+                ),
+                valuesText = arrayOf(
+                    R.string.dont_modify,
+                    R.string.force_enable,
+                    R.string.use_built_in,
+                ),
+                title = R.string.strategy
+            ) {
+                listener = OnChangedListener {
+                    if (configuration.dns.enable == false) {
+                        dnsDependencies.forEach {
+                            it.enabled = false
+                        }
+                    } else {
+                        dnsDependencies.forEach {
+                            it.enabled = true
+                        }
+                    }
+                }
+            }
+
+            selectableList(
+                value = configuration.dns::preferH3,
+                values = booleanValues,
+                valuesText = booleanValuesText,
+                title = R.string.prefer_h3,
+                configure = dnsDependencies::add,
+            )
+
+            dns.listener?.onChanged()
+
             category(R.string.sniffer_setting)
 
             val snifferDependencies: MutableList<Preference> = mutableListOf()
@@ -148,8 +189,16 @@ class MetaFeatureSettingsDesign(
                 configure = snifferDependencies::add,
             )
 
-            sniffer.listener?.onChanged()
+            editableTextList(
+                value = configuration.sniffer::portWhitelist,
+                adapter = TextAdapter.String,
+                title = R.string.port_whitelist,
+                placeholder = R.string.dont_modify,
+                configure = snifferDependencies::add,
+            )
 
+            sniffer.listener?.onChanged()
+/*
             category(R.string.geox_url_setting)
 
             val geoxurlDependencies: MutableList<Preference> = mutableListOf()
@@ -180,6 +229,7 @@ class MetaFeatureSettingsDesign(
                 empty = R.string.geosite_url,
                 configure = geoxurlDependencies::add,
             )
+*/
         }
 
         binding.content.addView(screen.root)

+ 8 - 0
design/src/main/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt

@@ -271,6 +271,14 @@ class OverrideSettingsDesign(
                 }
             }
 
+            selectableList(
+                value = configuration.dns::preferH3,
+                values = booleanValues,
+                valuesText = booleanValuesText,
+                title = R.string.prefer_h3,
+                configure = dnsDependencies::add,
+            )
+
             editableText(
                 value = configuration.dns::listen,
                 adapter = NullableTextAdapter.String,

+ 2 - 0
design/src/main/res/values-zh-rHK/strings.xml

@@ -228,4 +228,6 @@
     <string name="geox_geoip">GeoIp Url</string>
     <string name="geox_mmdb">MMDB Url</string>
     <string name="geox_geosite">Geosite Url</string>
+    <string name="prefer_h3">Prefer h3</string>
+    <string name="port_whitelist">Port Whitelist</string>
 </resources>

+ 2 - 0
design/src/main/res/values-zh-rTW/strings.xml

@@ -228,4 +228,6 @@
     <string name="geox_geoip">GeoIp Url</string>
     <string name="geox_mmdb">MMDB Url</string>
     <string name="geox_geosite">Geosite Url</string>
+    <string name="prefer_h3">Prefer h3</string>
+    <string name="port_whitelist">Port Whitelist</string>
 </resources>

+ 2 - 0
design/src/main/res/values-zh/strings.xml

@@ -231,4 +231,6 @@
     <string name="geox_geoip">GeoIp Url</string>
     <string name="geox_mmdb">MMDB Url</string>
     <string name="geox_geosite">Geosite Url</string>
+    <string name="prefer_h3">Prefer h3</string>
+    <string name="port_whitelist">Port Whitelist</string>
 </resources>

+ 2 - 1
design/src/main/res/values/strings.xml

@@ -132,7 +132,7 @@
 
     <string name="general">General</string>
     <string name="dns">DNS</string>
-
+    <string name="prefer_h3">Prefer h3</string>
     <string name="http_port">HTTP Port</string>
     <string name="socks_port">Socks Port</string>
     <string name="redirect_port">Redirect Port</string>
@@ -286,6 +286,7 @@
     <string name="sniffing">Sniffer Mode</string>
     <string name="force_domain">Force Domain</string>
     <string name="skip_domain">Skip Domain</string>
+    <string name="port_whitelist">Port Whitelist</string>
     <string name="disable_sniffer">Disable Sniffer</string>
     <string name="sniffer_config">Load Sniffer From Config</string>
     <string name="sniffer_override">Override Sniffer Config</string>