From 1a36218c8034b1629f150218b103edeb3516eac4 Mon Sep 17 00:00:00 2001 From: kr328 <kr328app@outlook.com> Date: Mon, 24 May 2021 12:04:40 +0800 Subject: [PATCH] Feature: add nameserver-policy override --- .../kr328/clash/core/model/ConfigurationOverride.kt | 5 ++++- .../kr328/clash/design/OverrideSettingsDesign.kt | 9 +++++++++ design/src/main/res/values-zh-rHK/strings.xml | 3 +++ design/src/main/res/values-zh-rTW/strings.xml | 3 +++ design/src/main/res/values-zh/strings.xml | 1 + design/src/main/res/values/strings.xml | 1 + .../kr328/clash/design/OverrideSettingsDesign.kt | 11 ++++++++++- 7 files changed, 31 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt b/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt index 6332ce35..8d384067 100644 --- a/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt +++ b/core/src/main/java/com/github/kr328/clash/core/model/ConfigurationOverride.kt @@ -80,7 +80,10 @@ data class ConfigurationOverride( var fakeIpFilter: List<String>? = null, @SerialName("fallback-filter") - val fallbackFilter: DnsFallbackFilter = DnsFallbackFilter() + val fallbackFilter: DnsFallbackFilter = DnsFallbackFilter(), + + @SerialName("nameserver-policy") + var nameserverPolicy: Map<String, String>? = null, ) @Serializable diff --git a/design/src/foss/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt b/design/src/foss/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt index 4df91153..80c2a92e 100644 --- a/design/src/foss/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt +++ b/design/src/foss/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt @@ -378,6 +378,15 @@ class OverrideSettingsDesign( configure = dnsDependencies::add, ) + editableTextMap( + value = configuration.dns::nameserverPolicy, + keyAdapter = TextAdapter.String, + valueAdapter = TextAdapter.String, + title = R.string.name_server_policy, + placeholder = R.string.dont_modify, + configure = dnsDependencies::add, + ) + dns.listener?.onChanged() } diff --git a/design/src/main/res/values-zh-rHK/strings.xml b/design/src/main/res/values-zh-rHK/strings.xml index b5e420bb..26686598 100644 --- a/design/src/main/res/values-zh-rHK/strings.xml +++ b/design/src/main/res/values-zh-rHK/strings.xml @@ -208,4 +208,7 @@ <string name="active_unsaved_tips">é…置文件需è¦åœ¨æ¿€æ´»ä¹‹å‰ä¿å˜</string> <string name="mode_switch_tips">åƒ…åœ¨æœ¬æ¬¡æœƒè©±ä¸æœ‰æ•ˆ</string> <string name="import_">å°Žå…¥</string> + <string name="sources">æºä»£ç¢¼</string> + <string name="clash_core">Clash æ ¸å¿ƒ</string> + <string name="name_server_policy">Name Server ç–ç•¥</string> </resources> \ No newline at end of file diff --git a/design/src/main/res/values-zh-rTW/strings.xml b/design/src/main/res/values-zh-rTW/strings.xml index e91dda22..eb7b62e4 100644 --- a/design/src/main/res/values-zh-rTW/strings.xml +++ b/design/src/main/res/values-zh-rTW/strings.xml @@ -208,4 +208,7 @@ <string name="active_unsaved_tips">é…置文件需è¦åœ¨æ¿€æ´»ä¹‹å‰ä¿å˜</string> <string name="mode_switch_tips">åƒ…åœ¨æœ¬æ¬¡æœƒè©±ä¸æœ‰æ•ˆ</string> <string name="import_">å°Žå…¥</string> + <string name="sources">æºä»£ç¢¼</string> + <string name="clash_core">Clash æ ¸å¿ƒ</string> + <string name="name_server_policy">Name Server ç–ç•¥</string> </resources> \ No newline at end of file diff --git a/design/src/main/res/values-zh/strings.xml b/design/src/main/res/values-zh/strings.xml index cfdbb80a..9bddcbae 100644 --- a/design/src/main/res/values-zh/strings.xml +++ b/design/src/main/res/values-zh/strings.xml @@ -210,4 +210,5 @@ <string name="import_">导入</string> <string name="sources">æºä»£ç </string> <string name="clash_core">Clash æ ¸å¿ƒ</string> + <string name="name_server_policy">Name Server ç–ç•¥</string> </resources> \ No newline at end of file diff --git a/design/src/main/res/values/strings.xml b/design/src/main/res/values/strings.xml index 045856e8..b2c71329 100644 --- a/design/src/main/res/values/strings.xml +++ b/design/src/main/res/values/strings.xml @@ -159,6 +159,7 @@ <string name="geoip_fallback">GeoIP Fallback</string> <string name="ipcidr_fallback">IPCIDR Fallback</string> <string name="domain_fallback">Domain Fallback</string> + <string name="name_server_policy">Name Server Policy</string> <string name="dont_modify">Do not modify</string> <string name="empty">Empty</string> diff --git a/design/src/premium/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt b/design/src/premium/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt index 6850917d..95e2ce0c 100644 --- a/design/src/premium/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt +++ b/design/src/premium/java/com/github/kr328/clash/design/OverrideSettingsDesign.kt @@ -379,6 +379,15 @@ class OverrideSettingsDesign( placeholder = R.string.dont_modify, configure = dnsDependencies::add, ) + + editableTextMap( + value = configuration.dns::nameserverPolicy, + keyAdapter = TextAdapter.String, + valueAdapter = TextAdapter.String, + title = R.string.name_server_policy, + placeholder = R.string.dont_modify, + configure = dnsDependencies::add, + ) dns.listener?.onChanged() } @@ -389,4 +398,4 @@ class OverrideSettingsDesign( fun requestClear() { requests.offer(Request.ResetOverride) } -} \ No newline at end of file +} -- GitLab