diff --git a/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua b/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua index f00686d..dece0c8 100644 --- a/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua +++ b/luci-app-mosdns/luasrc/model/cbi/mosdns/basic.lua @@ -39,22 +39,27 @@ remote_dns.default = "tls://8.8.8.8" remote_dns:value("tls://1.1.1.1", "1.1.1.1 (CloudFlare DNS)") remote_dns:value("tls://8.8.8.8", "8.8.8.8 (Google DNS)") remote_dns:value("tls://8.8.4.4", "8.8.4.4 (Google DNS)") -remote_dns:value("tls://185.222.222.222", "185.222.222.222 (DNS.SB)") +remote_dns:value("tls://9.9.9.9", "9.9.9.9 (Quad9 DNS)") remote_dns:value("tls://45.11.45.11", "45.11.45.11 (DNS.SB)") -remote_dns:value("208.67.222.222", "208.67.222.222 (Open DNS)") -remote_dns:value("208.67.220.220", "208.67.220.220 (Open DNS)") +remote_dns:value("tls://208.67.222.222", "208.67.222.222 (Open DNS)") +remote_dns:value("tls://208.67.220.220", "208.67.220.220 (Open DNS)") remote_dns:depends( "configfile", "/etc/mosdns/config.yaml") remote_dns = s:option(Value, "remote_dns2", " ") remote_dns.default = "tls://1.1.1.1" remote_dns:value("tls://1.1.1.1", "1.1.1.1 (CloudFlare DNS)") remote_dns:value("tls://8.8.8.8", "8.8.8.8 (Google DNS)") remote_dns:value("tls://8.8.4.4", "8.8.4.4 (Google DNS)") -remote_dns:value("tls://185.222.222.222", "185.222.222.222 (DNS.SB)") +remote_dns:value("tls://9.9.9.9", "9.9.9.9 (Quad9 DNS)") remote_dns:value("tls://45.11.45.11", "45.11.45.11 (DNS.SB)") -remote_dns:value("208.67.222.222", "208.67.222.222 (Open DNS)") -remote_dns:value("208.67.220.220", "208.67.220.220 (Open DNS)") +remote_dns:value("tls://208.67.222.222", "208.67.222.222 (Open DNS)") +remote_dns:value("tls://208.67.220.220", "208.67.220.220 (Open DNS)") remote_dns:depends( "configfile", "/etc/mosdns/config.yaml") +remote_dns_pipeline = s:option(Flag, "enable_pipeline", translate("Remote DNS Connection Multiplexing"), translate("Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode")) +remote_dns_pipeline.rmempty = false +remote_dns_pipeline.default = false +remote_dns_pipeline:depends( "configfile", "/etc/mosdns/config.yaml") + cache_size = s:option(Value, "cache_size", translate("DNS Cache Size")) cache_size.datatype = "and(uinteger,min(0))" cache_size.default = "200000" diff --git a/luci-app-mosdns/po/zh-cn/mosdns.po b/luci-app-mosdns/po/zh-cn/mosdns.po index f1cc02b..4b26958 100644 --- a/luci-app-mosdns/po/zh-cn/mosdns.po +++ b/luci-app-mosdns/po/zh-cn/mosdns.po @@ -91,6 +91,12 @@ msgstr "日志文件" msgid "Remote DNS" msgstr "远程 DNS" +msgid "Remote DNS Connection Multiplexing" +msgstr "远程 DNS 连接复用" + +msgid "Enable TCP/DoT RFC 7766 new Query Pipelining connection multiplexing mode" +msgstr "启用 TCP/DoT RFC 7766 新型 Query Pipelining 连接复用模式" + msgid "DNS Cache Size" msgstr "DNS 缓存大小(条)" diff --git a/luci-app-mosdns/root/etc/config/mosdns b/luci-app-mosdns/root/etc/config/mosdns index c677248..c43fe17 100644 --- a/luci-app-mosdns/root/etc/config/mosdns +++ b/luci-app-mosdns/root/etc/config/mosdns @@ -16,4 +16,5 @@ config mosdns 'mosdns' option cache_survival_time '259200' option minimal_ttl '0' option maximum_ttl '0' + option enable_pipeline '0' diff --git a/luci-app-mosdns/root/etc/init.d/mosdns b/luci-app-mosdns/root/etc/init.d/mosdns index d2ba7eb..f657952 100755 --- a/luci-app-mosdns/root/etc/init.d/mosdns +++ b/luci-app-mosdns/root/etc/init.d/mosdns @@ -1,8 +1,24 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2020 IrineSistiana -# shellcheck disable=SC2034 +# +# Copyright (C) 2020-2022, IrineSistiana +# +# This file is part of mosdns. +# +# mosdns is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# mosdns is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# -START=91 +START=99 USE_PROCD=1 PROG=/usr/bin/mosdns @@ -27,7 +43,18 @@ init_yaml() { remote_dns1=$(uci -q get mosdns.mosdns.remote_dns1) remote_dns2=$(uci -q get mosdns.mosdns.remote_dns2) adblock=$(/usr/share/mosdns/ad_domain.sh) - sed "s,log_level,$log_level,g;s,log_file,$log_file,g;s,listen_port,$listen_port,g;s,cache_size,$cache_size,g;s,cache_survival_time,$cache_survival_time,g;s,minimal_ttl_custom,$minimal_ttl_custom,g;s,maximum_ttl_custom,$maximum_ttl_custom,g;s,local_dns1,$local_dns1,g;s,local_dns2,$local_dns2,g;s,remote_dns1,$remote_dns1,g;s,remote_dns2,$remote_dns2,g;s,adblock,$adblock,g" /usr/share/mosdns/default.yaml > /etc/mosdns/config.yaml + enable_pipeline=$(uci -q get mosdns.mosdns.enable_pipeline) + [ $enable_pipeline = 0 ] && enable_pipeline=false + [ $enable_pipeline = 1 ] && enable_pipeline=true + sed "s,log_level,$log_level,g;s,log_file,$log_file,g; \ + s,listen_port,$listen_port,g;s,cache_size,$cache_size,g; \ + s,cache_survival_time,$cache_survival_time,g; \ + s,minimal_ttl_custom,$minimal_ttl_custom,g; \ + s,maximum_ttl_custom,$maximum_ttl_custom,g; \ + s,local_dns1,$local_dns1,g;s,local_dns2,$local_dns2,g; \ + s,remote_dns1,$remote_dns1,g;s,remote_dns2,$remote_dns2,g; \ + s,adblock,$adblock,g;s,remote_dns_pipeline,$enable_pipeline,g" \ + /usr/share/mosdns/default.yaml > $(uci -q get mosdns.mosdns.configfile) } service_triggers() { @@ -86,7 +113,7 @@ start_service() { [ $enabled != 1 ] && return 1 delcron setcron - init_yaml + [ "${CONF}" = "/etc/mosdns/config.yaml" ] && init_yaml cat /dev/null > $(/usr/share/mosdns/log_path.sh) procd_open_instance mosdns procd_set_param command $PROG start -c "$CONF" diff --git a/luci-app-mosdns/root/usr/share/mosdns/default.yaml b/luci-app-mosdns/root/usr/share/mosdns/default.yaml index 2fc8ad5..fc287cc 100644 --- a/luci-app-mosdns/root/usr/share/mosdns/default.yaml +++ b/luci-app-mosdns/root/usr/share/mosdns/default.yaml @@ -58,7 +58,9 @@ plugins: args: upstream: - addr: remote_dns1 + enable_pipeline: remote_dns_pipeline - addr: remote_dns2 + enable_pipeline: remote_dns_pipeline - tag: query_is_whitelist_domain type: query_matcher