From 791b83ab853d6c0143d509d1b1b0bf2d758f71a0 Mon Sep 17 00:00:00 2001 From: juewuy Date: Sun, 19 Apr 2026 10:40:28 +0800 Subject: [PATCH] =?UTF-8?q?~DNS=E6=9C=8D=E5=8A=A1=E5=99=A8=E4=B8=AD?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E4=B8=93=E9=97=A8=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E8=8A=82=E7=82=B9=E5=9F=9F=E5=90=8D=E7=9A=84?= =?UTF-8?q?=E6=94=B9PROXY-SERVER-DNS=E9=80=89=E9=A1=B9=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=BA=86=E5=AF=B9oix=E7=9A=84=E5=8D=95?= =?UTF-8?q?=E7=8B=AC=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/lang/chs/dns.lang | 15 +++----- scripts/lang/en/dns.lang | 15 +++----- scripts/libs/get_config.sh | 1 + scripts/menus/dns.sh | 57 +++++++++++++++++++++++------- scripts/menus/providers_singbox.sh | 3 +- scripts/starts/clash_modify.sh | 4 +-- scripts/starts/singbox_modify.sh | 4 +-- 7 files changed, 60 insertions(+), 39 deletions(-) diff --git a/scripts/lang/chs/dns.lang b/scripts/lang/chs/dns.lang index e2930422..08d92c0b 100644 --- a/scripts/lang/chs/dns.lang +++ b/scripts/lang/chs/dns.lang @@ -42,7 +42,8 @@ DNS_ADV_SINGBOX_LIMIT="注意:SingBox内核仅加载第一个DNS" DNS_ADV_EDIT_DIRECT="修改DIRECT-DNS" DNS_ADV_EDIT_PROXY="修改PROXY-DNS(该DNS查询会经过节点)" -DNS_ADV_EDIT_DEFAULT="修改DEFAULT-DNS(必须是IP,用于解析其他DNS)" +DNS_ADV_EDIT_RESOLVER="修改DEFAULT-DNS(必须是IP,用于解析其他DNS)" +DNS_ADV_EDIT_PROXY_SERVER="修改PROXY-SERVER-DNS(必须是IP,用于解析节点域名)" DNS_ADV_AUTO_ENCRYPT="一键配置加密DNS" DNS_ADV_RESET="重置默认DNS配置" @@ -61,12 +62,6 @@ DNS_CONFIRM_ADD="请确认需要添加的地址:" DNS_CONFIRM_OK="确认无误" DNS_ADD_OK="添加成功" DNS_ADD_FAIL="添加失败" -DNS_DIRECT_NOW="当前DIRECT-DNS:" -DNS_PROXY_NOW="当前PROXY-DNS:" -DNS_DEFAULT_NOW="当前DEFAULT-DNS:" -DNS_INPUT_DIRECT_NEW="请直接输入新的DIRECT-DNS地址" -DNS_INPUT_DIRECT_RESET="或输入 r 重置DIRECT-DNS地址" -DNS_INPUT_PROXY_NEW="请直接输入新的PROXY-DNS地址" -DNS_INPUT_PROXY_RESET="或输入 r 重置PROXY-DNS地址" -DNS_INPUT_DEFAULT_NEW="请直接输入新的DEFAULT-DNS地址" -DNS_INPUT_DEFAULT_RESET="或输入 r 重置DEFAULT-DNS地址" +DNS_NOW="当前DNS:" +DNS_INPUT_NEW="请直接输入新的DNS地址" +DNS_INPUT_RESET="或输入 r 重置DNS地址" diff --git a/scripts/lang/en/dns.lang b/scripts/lang/en/dns.lang index 25293cd4..3f56f9d8 100644 --- a/scripts/lang/en/dns.lang +++ b/scripts/lang/en/dns.lang @@ -43,7 +43,8 @@ DNS_ADV_SINGBOX_LIMIT="Note: SingBox core only loads the first DNS entry" DNS_ADV_EDIT_DIRECT="Edit DIRECT-DNS" DNS_ADV_EDIT_PROXY="Edit PROXY-DNS (queries go through the proxy)" -DNS_ADV_EDIT_DEFAULT="Edit DEFAULT-DNS (must be an IP, used to resolve other DNS servers)" +DNS_ADV_EDIT_RESOLVER="Edit DEFAULT-DNS (must be an IP, used to resolve other DNS servers)" +DNS_ADV_EDIT_PROXY_SERVER="Edit PROXY-SERVER-DNS (must be an IP, used to resolve proxy hostnames)" DNS_ADV_AUTO_ENCRYPT="Auto-configure Encrypted DNS" DNS_ADV_RESET="Reset to default DNS configuration" @@ -63,12 +64,6 @@ DNS_CONFIRM_ADD="Please confirm the address to add: " DNS_CONFIRM_OK="Confirm" DNS_ADD_OK="Added successfully" DNS_ADD_FAIL="Add failed" -DNS_DIRECT_NOW="Current DIRECT-DNS: " -DNS_PROXY_NOW="Current PROXY-DNS: " -DNS_DEFAULT_NOW="Current DEFAULT-DNS: " -DNS_INPUT_DIRECT_NEW="Please input new DIRECT-DNS" -DNS_INPUT_DIRECT_RESET="or input r to reset DIRECT-DNS" -DNS_INPUT_PROXY_NEW="Please input new PROXY-DNS" -DNS_INPUT_PROXY_RESET="or input r to reset PROXY-DNS" -DNS_INPUT_DEFAULT_NEW="Please input new DEFAULT-DNS" -DNS_INPUT_DEFAULT_RESET="or input r to reset DEFAULT-DNS" +DNS_NOW="Current DNS: " +DNS_INPUT_NEW="Please input a new DNS address" +DNS_INPUT_RESET="or input r to reset the DNS address" diff --git a/scripts/libs/get_config.sh b/scripts/libs/get_config.sh index 7102d3ae..8eb66a49 100644 --- a/scripts/libs/get_config.sh +++ b/scripts/libs/get_config.sh @@ -20,3 +20,4 @@ routing_mark=$((fwmark + 2)) } [ -z "$dns_fallback" ] && dns_fallback="1.1.1.1, 8.8.8.8" [ -z "$dns_resolver" ] && dns_resolver="223.5.5.5, 2400:3200::1" +[ -z "$dns_proxy_server" ] && dns_proxy_server="$dns_resolver" diff --git a/scripts/menus/dns.sh b/scripts/menus/dns.sh index a920c4f5..c939c01e 100644 --- a/scripts/menus/dns.sh +++ b/scripts/menus/dns.sh @@ -185,13 +185,17 @@ set_dns_adv() { "PROXY-DNS:" \ "\033[36m$dns_fallback\033[0m" \ "" \ - "DEFAULT-DNS:" \ + "RESOLVER-DNS:" \ "\033[33m$dns_resolver\033[0m" \ + "" \ + "PROXY-SERVER-DNS:" \ + "\033[33m$dns_proxy_server\033[0m" \ "" btm_box "1) $DNS_ADV_EDIT_DIRECT" \ "2) $DNS_ADV_EDIT_PROXY" \ - "3) $DNS_ADV_EDIT_DEFAULT" \ - "4) \033[32m$DNS_ADV_AUTO_ENCRYPT\033[0m" \ + "3) $DNS_ADV_EDIT_RESOLVER" \ + "4) $DNS_ADV_EDIT_PROXY_SERVER" \ + "5) \033[32m$DNS_ADV_AUTO_ENCRYPT\033[0m" \ "9) \033[33m$DNS_ADV_RESET\033[0m" \ "" \ "0) $COMMON_BACK" @@ -201,9 +205,9 @@ set_dns_adv() { break ;; 1) - comp_box "$DNS_DIRECT_NOW\033[32m$dns_nameserver\033[0m" - btm_box "\033[36m$DNS_INPUT_DIRECT_NEW\033[0m" \ - "$DNS_INPUT_DIRECT_RESET" \ + comp_box "$DNS_NOW\033[32m$dns_nameserver\033[0m" + btm_box "\033[36m$DNS_INPUT_NEW\033[0m" \ + "$DNS_INPUT_RESET" \ "$DNS_INPUT_REDIR_BACK" read -r -p "$DNS_INPUT> " res case "$res" in @@ -227,9 +231,9 @@ set_dns_adv() { esac ;; 2) - comp_box "$DNS_PROXY_NOW\033[32m$dns_fallback\033[0m" - btm_box "\033[36m$DNS_INPUT_PROXY_NEW\033[0m" \ - "$DNS_INPUT_PROXY_RESET" \ + comp_box "$DNS_NOW\033[32m$dns_fallback\033[0m" + btm_box "\033[36m$DNS_INPUT_NEW\033[0m" \ + "$DNS_INPUT_RESET" \ "$DNS_INPUT_REDIR_BACK" read -r -p "$DNS_INPUT> " res case "$res" in @@ -253,9 +257,9 @@ set_dns_adv() { esac ;; 3) - comp_box "$DNS_DEFAULT_NOW\033[32m$dns_resolver\033[0m" - btm_box "\033[36m$DNS_INPUT_DEFAULT_NEW\033[0m" \ - "$DNS_INPUT_DEFAULT_RESET" \ + comp_box "$DNS_NOW\033[32m$dns_resolver\033[0m" + btm_box "\033[36m$DNS_INPUT_NEW\033[0m" \ + "$DNS_INPUT_RESET" \ "$DNS_INPUT_REDIR_BACK" separator_line "=" read -r -p "$DNS_INPUT> " res @@ -266,7 +270,7 @@ set_dns_adv() { "r") dns_resolver="223.5.5.5, 2400:3200::1" setconfig dns_resolver "'$dns_resolver'" - common_failed + common_success ;; *) if echo "$res" | grep -qE '://.*::'; then @@ -280,6 +284,33 @@ set_dns_adv() { esac ;; 4) + comp_box "$DNS_NOW\033[32m$dns_proxy_server\033[0m" + btm_box "\033[36m$DNS_INPUT_NEW\033[0m" \ + "$DNS_INPUT_RESET" \ + "$DNS_INPUT_REDIR_BACK" + separator_line "=" + read -r -p "$DNS_INPUT> " res + case "$res" in + 0) + continue + ;; + "r") + dns_proxy_server="$dns_resolver" + setconfig dns_proxy_server "'$dns_proxy_server'" + common_success + ;; + *) + if echo "$res" | grep -qE '://.*::'; then + msg_alert "\033[31m$DNS_IPV6_NOT_SUPPORT\033[0m" + else + dns_proxy_server=$(echo "$res" | sed 's#|#,\ #g') + setconfig dns_proxy_server "'$dns_proxy_server'" + msg_alert "\033[32m$COMMON_SUCCESS\033[0m" + fi + ;; + esac + ;; + 5) line_break separator_line "=" if echo "$crashcore" | grep -qE 'meta|singbox'; then diff --git a/scripts/menus/providers_singbox.sh b/scripts/menus/providers_singbox.sh index 4a5fc186..26aa5b94 100644 --- a/scripts/menus/providers_singbox.sh +++ b/scripts/menus/providers_singbox.sh @@ -117,7 +117,6 @@ EOF fi # 通用部分生成 [ "$skip_cert" != "OFF" ] && override_tls='true' || override_tls='false' - [ -n "$(echo "$2" | grep 'oics.net')" ] && domain_resolver='dns_oix' || domain_resolver='dns_resolver' cat >>"$TMPDIR"/providers/providers.json <>"$TMPDIR"/dns.yaml <