@@ -104,9 +104,10 @@ append_parm() {
104104 local option=" $2 "
105105 local switch=" $3 "
106106 local default=" $4 "
107+ local skip_value=" $5 "
107108 local _loctmp
108109 config_get _loctmp " $section " " $option " " $default "
109- [ -n " $_loctmp " ] && xappend " $switch $_loctmp "
110+ [ -n " $_loctmp " ] && [ " $_loctmp " != " $skip_value " ] && xappend " $switch $_loctmp "
110111}
111112
112113append_counter () {
@@ -133,14 +134,14 @@ append_bootstrap() {
133134 [ -z " $_loctmp " ] && return 0
134135 IFS=" ,"
135136 for i in $_loctmp ; do
136- if { [ " $ipv6_resolvers_only " -eq 0 ] && is_ipv4 " $i " ; } || \
137- { [ " $ipv6_resolvers_only " -ne 0 ] && is_ipv6 " $i " ; }; then
137+ if { [ " $force_ipv6 " -eq 0 ] && is_ipv4 " $i " ; } || \
138+ { [ " $force_ipv6 " -ne 0 ] && is_ipv6 " $i " ; }; then
138139 [ -z " $_newtmp " ] && _newtmp=" $i " || _newtmp=" ${_newtmp} ,${i} "
139140 fi
140141 done
141142 IFS=" $_old_ifs "
142143 [ -n " $_newtmp " ] && xappend " $switch $_newtmp "
143- [ " $ipv6_resolvers_only " -eq 0 ] && xappend ' -4'
144+ [ " $force_ipv6 " -eq 0 ] && xappend ' -4'
144145}
145146
146147boot () {
@@ -154,26 +155,33 @@ boot() {
154155start_instance () {
155156 local cfg=" $1 " param=" $2 "
156157 local PROG_param
157- local listen_addr listen_port ipv6_resolvers_only p url iface
158+ local listen_addr listen_port force_ipv6 p url iface
158159
159- config_get url " $cfg " ' resolver_url'
160- config_get_bool ipv6_resolvers_only " $cfg " ' use_ipv6_resolvers_only' ' 0'
161- append_parm " $cfg " ' resolver_url' ' -r'
162- append_parm " $cfg " ' listen_addr' ' -a' ' 127.0.0.1'
163- append_parm " $cfg " ' listen_port' ' -p' " $port "
164- append_parm " $cfg " ' dscp_codepoint' ' -c'
160+ config_get url " $cfg " ' resolver_url'
161+ config_get listen_addr " $cfg " ' listen_addr' " $global_listen_addr "
162+ config_get listen_port " $cfg " ' listen_port' " $port "
163+ config_get_bool force_ipv6 " $cfg " ' force_ipv6_resolvers' " $global_force_ipv6 "
164+
165+ append_parm " $cfg " ' resolver_url' ' -r'
166+ append_parm " $cfg " ' listen_addr' ' -a' " $global_listen_addr " ' 127.0.0.1'
167+ append_parm " $cfg " ' listen_port' ' -p' " $port "
165168 append_bootstrap " $cfg " ' bootstrap_dns' ' -b' " $DEFAULT_BOOTSTRAP "
166- append_parm " $cfg " ' user' ' -u' ' nobody'
167- append_parm " $cfg " ' group' ' -g' ' nogroup'
168- append_parm " $cfg " ' ca_certs_file' ' -C'
169- append_parm " $cfg " ' polling_interval' ' -i'
170- append_parm " $cfg " ' proxy_server' ' -t'
171- append_parm " $cfg " ' logfile' ' -l'
172- append_bool " $cfg " ' use_http1' ' -x'
173- append_counter " $cfg " ' verbosity' ' -v' ' 0'
169+ append_parm " $cfg " ' dscp_codepoint' ' -c'
170+ append_parm " $cfg " ' tcp_client_limit' ' -T' " $global_tcp_client_limit " ' 20'
171+ append_parm " $cfg " ' polling_interval' ' -i' " $global_polling_interval " ' 120'
172+ append_parm " $cfg " ' proxy_server' ' -t' " $global_proxy_server "
173+ append_bool " $cfg " ' force_http1' ' -x' " $global_force_http1 "
174+ append_bool " $cfg " ' force_http3' ' -q' " $global_force_http3 "
175+ append_parm " $cfg " ' max_idle_time' ' -m' " $global_max_idle_time " ' 118'
176+ append_parm " $cfg " ' conn_loss_time' ' -L' " $global_conn_loss_time " ' 15'
177+ append_parm " $cfg " ' ca_certs_file' ' -C' " $global_ca_certs_file "
178+ append_parm " $cfg " ' user' ' -u' " $global_user "
179+ append_parm " $cfg " ' group' ' -g' " $global_group "
180+ append_parm " $cfg " ' logfile' ' -l' " $global_logfile "
181+ append_parm " $cfg " ' statistic_interval' ' -s' " $global_statistic_interval " ' 0'
182+ append_parm " $cfg " ' log_limit' ' -F' " $global_log_limit " ' 0'
183+ append_counter " $cfg " ' verbosity' ' -v' " $global_verbosity "
174184
175- config_get listen_addr " $cfg " ' listen_addr' ' 127.0.0.1'
176- config_get listen_port " $cfg " ' listen_port' " $port "
177185 if [ " $dnsmasq_config_update " = ' *' ]; then
178186 config_load ' dhcp'
179187 config_foreach dnsmasq_doh_server ' dnsmasq' ' add' " ${listen_addr} " " ${listen_port} "
@@ -199,7 +207,7 @@ start_instance() {
199207 json_close_object
200208 if [ " $force_dns " -ne ' 0' ]; then
201209 json_add_array firewall
202- for iface in ${procd_fw_src_interfaces / ,/ } ; do
210+ for iface in ${force_dns_src_interface / ,/ } ; do
203211 for p in ${force_dns_port/ ,/ } ; do
204212 if netstat -tuln | grep ' LISTEN' | grep " :${p} " > /dev/null 2>&1 || [ " $p " = ' 53' ]; then
205213 json_add_object ' '
@@ -243,17 +251,50 @@ start_service() {
243251 local param=" $1 "
244252 local canaryDomains canary_domains_icloud canary_domains_mozilla
245253 local dnsmasq_config_update force_dns force_dns_port
246- local procd_fw_src_interfaces
254+ local force_dns_src_interface
247255 local port=5053
248256
257+ local global_listen_addr
258+ local global_tcp_client_limit
259+ local global_polling_interval
260+ local global_proxy_server
261+ local global_force_http1
262+ local global_force_http3
263+ local global_force_ipv6
264+ local global_max_idle_time
265+ local global_conn_loss_time
266+ local global_ca_certs_file
267+ local global_user
268+ local global_group
269+ local global_verbosity
270+ local global_logfile
271+ local global_statistic_interval
272+ local global_log_limit
273+
249274 output " Starting $serviceName instances ${param: +$param } "
250275 config_load " $packageName "
251276 config_get_bool canary_domains_icloud ' config' ' canary_domains_icloud' ' 1'
252277 config_get_bool canary_domains_mozilla ' config' ' canary_domains_mozilla' ' 1'
253- config_get_bool force_dns ' config' ' force_dns' ' 1'
254- config_get dnsmasq_config_update ' config' ' dnsmasq_config_update' ' *'
255- config_get force_dns_port ' config' ' force_dns_port' ' 53 853'
256- config_get procd_fw_src_interfaces ' config' ' procd_fw_src_interfaces' ' lan'
278+ config_get_bool force_dns ' config' ' force_dns' ' 1'
279+ config_get dnsmasq_config_update ' config' ' dnsmasq_config_update' ' *'
280+ config_get force_dns_port ' config' ' force_dns_port' ' 53 853'
281+ config_get force_dns_src_interface ' config' ' force_dns_src_interface' ' lan'
282+ config_get global_listen_addr ' config' ' listen_addr' ' 127.0.0.1'
283+ config_get global_tcp_client_limit ' config' ' tcp_client_limit' ' 20'
284+ config_get global_polling_interval ' config' ' polling_interval' ' 120'
285+ config_get global_proxy_server ' config' ' proxy_server'
286+ config_get_bool global_force_http1 ' config' ' force_http1' ' 0'
287+ config_get_bool global_force_http3 ' config' ' force_http3' ' 0'
288+ config_get_bool global_force_ipv6 ' config' ' global_force_ipv6_resolvers' ' 0'
289+ config_get global_max_idle_time ' config' ' max_idle_time' ' 118'
290+ config_get global_conn_loss_time ' config' ' conn_loss_time' ' 15'
291+ config_get global_ca_certs_file ' config' ' ca_certs_file'
292+ config_get global_user ' config' ' user' ' nobody'
293+ config_get global_group ' config' ' group' ' nogroup'
294+ config_get global_verbosity ' config' ' verbosity' ' 0'
295+ config_get global_logfile ' config' ' logfile'
296+ config_get global_statistic_interval ' config' ' statistic_interval' ' 0'
297+ config_get global_log_limit ' config' ' log_limit' ' 0'
257298
258299 if [ " $canary_domains_icloud " -ne 0 ]; then
259300 canaryDomains=" ${canaryDomains: +$canaryDomains }${canaryDomainsiCloud} "
0 commit comments