33# shellcheck disable=SC1091,SC3043,SC3060
44
55# shellcheck disable=SC2034
6- START=25
6+ START=20
77# shellcheck disable=SC2034
88STOP=15
99# shellcheck disable=SC2034
@@ -32,7 +32,32 @@ readonly canaryDomainsiCloud='mask.icloud.com mask-h2.icloud.com'
3232
3333hdp_boot_flag=
3434
35- dnsmasq_restart () { [ -x /etc/init.d/dnsmasq ] || return 1; /etc/init.d/dnsmasq restart > /dev/null 2>&1 ; }
35+ # package global config variables
36+ canary_domains_icloud=
37+ canary_domains_mozilla=
38+ dnsmasq_config_update=
39+ force_dns=
40+ force_dns_port=
41+ force_dns_src_interface=
42+ procd_trigger_wan6=
43+ global_listen_addr=
44+ global_tcp_client_limit=
45+ global_polling_interval=
46+ global_proxy_server=
47+ global_force_http1=
48+ global_force_http3=
49+ global_force_ipv6=
50+ global_max_idle_time=
51+ global_conn_loss_time=
52+ global_ca_certs_file=
53+ global_user=
54+ global_group=
55+ global_verbosity=
56+ global_logfile=
57+ global_statistic_interval=
58+ global_log_limit=
59+
60+ dnsmasq_restart () { /etc/init.d/dnsmasq restart > /dev/null 2>&1 ; }
3661is_alnum () { case " $1 " in (* [![:alnum:]_\ @]* |" " ) return 1;; esac ; }
3762is_fw4_restart_needed () { [ " $( uci_get " $packageName " ' config' ' force_dns' ' 1' ) " = ' 1' ]; }
3863is_mac_address () { expr " $1 " : ' [0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]$' > /dev/null; }
@@ -45,7 +70,7 @@ is_resolver_working() {
4570 config_get heartbeat_domain ' config' ' heartbeat_domain' ' heartbeat.melmac.ca'
4671 config_get heartbeat_sleep_timeout ' config' ' heartbeat_sleep_timeout' ' 10'
4772 config_get heartbeat_wait_timeout ' config' ' heartbeat_wait_timeout' ' 30'
48- [ " $heartbeat_domain " = ' -' ] && { hdp_boot_flag=1 ; return 0; }
73+ [ " $heartbeat_domain " = ' -' ] && return 0
4974 is_integer " $heartbeat_sleep_timeout " && sleep " $heartbeat_sleep_timeout "
5075 resolveip -t " $heartbeat_wait_timeout " " $heartbeat_domain " > /dev/null 2>&1
5176}
@@ -111,7 +136,7 @@ append_parm() {
111136 [ -n " $_loctmp " ] && [ " $_loctmp " != " $skip_value " ] && xappend " $switch $_loctmp "
112137}
113138
114- append_counter () {
139+ append_cnt () {
115140 local section=" $1 "
116141 local option=" $2 "
117142 local switch=" $3 "
@@ -124,7 +149,7 @@ append_counter() {
124149 done
125150}
126151
127- append_bootstrap () {
152+ append_boot () {
128153 local section=" $1 "
129154 local option=" $2 "
130155 local switch=" $3 "
@@ -146,11 +171,40 @@ append_bootstrap() {
146171}
147172
148173boot () {
149- # ubus -t 30 wait_for network.interface 2>/dev/null
150174 rc_procd start_service ' on_boot' && service_started ' on_boot'
151- if ! is_resolver_working; then
152- rc_procd stop_service ' on_failed_health_check' && service_stopped ' on_failed_health_check'
153- fi
175+ }
176+
177+ load_package_config () {
178+ local param=" $1 "
179+ config_load " $packageName "
180+ config_load " $packageName "
181+ config_get_bool canary_domains_icloud ' config' ' canary_domains_icloud' ' 1'
182+ config_get_bool canary_domains_mozilla ' config' ' canary_domains_mozilla' ' 1'
183+ config_get_bool force_dns ' config' ' force_dns' ' 1'
184+ config_get_bool procd_trigger_wan6 ' config' ' procd_trigger_wan6' ' 0'
185+ config_get_bool global_force_http1 ' config' ' force_http1' ' 0'
186+ config_get_bool global_force_http3 ' config' ' force_http3' ' 0'
187+ config_get_bool global_force_ipv6 ' config' ' global_force_ipv6_resolvers' ' 0'
188+ config_get dnsmasq_config_update ' config' ' dnsmasq_config_update' ' *'
189+ config_get force_dns_port ' config' ' force_dns_port' ' 53 853'
190+ config_get force_dns_src_interface ' config' ' force_dns_src_interface' ' lan'
191+ config_get global_listen_addr ' config' ' listen_addr' ' 127.0.0.1'
192+ config_get global_tcp_client_limit ' config' ' tcp_client_limit' ' 20'
193+ config_get global_polling_interval ' config' ' polling_interval' ' 120'
194+ config_get global_proxy_server ' config' ' proxy_server'
195+ config_get global_max_idle_time ' config' ' max_idle_time' ' 118'
196+ config_get global_conn_loss_time ' config' ' conn_loss_time' ' 15'
197+ config_get global_ca_certs_file ' config' ' ca_certs_file'
198+ config_get global_user ' config' ' user' ' nobody'
199+ config_get global_group ' config' ' group' ' nogroup'
200+ config_get global_verbosity ' config' ' verbosity' ' 0'
201+ config_get global_logfile ' config' ' logfile'
202+ config_get global_statistic_interval ' config' ' statistic_interval' ' 0'
203+ config_get global_log_limit ' config' ' log_limit' ' 0'
204+ [ " $canary_domains_icloud " = ' 1' ] && canaryDomains=" ${canaryDomains: +$canaryDomains }${canaryDomainsiCloud} "
205+ [ " $canary_domains_mozilla " = ' 1' ] && canaryDomains=" ${canaryDomains: +$canaryDomains }${canaryDomainsMozilla} "
206+ [ " $force_dns " = ' 1' ] || unset force_dns
207+ [ " $procd_trigger_wan6 " = ' 1' ] || unset procd_trigger_wan6
154208}
155209
156210start_instance () {
@@ -166,7 +220,7 @@ start_instance() {
166220 append_parm " $cfg " ' resolver_url' ' -r'
167221 append_parm " $cfg " ' listen_addr' ' -a' " $global_listen_addr " ' 127.0.0.1'
168222 append_parm " $cfg " ' listen_port' ' -p' " $port "
169- append_bootstrap " $cfg " ' bootstrap_dns' ' -b' " $DEFAULT_BOOTSTRAP "
223+ append_boot " $cfg " ' bootstrap_dns' ' -b' " $DEFAULT_BOOTSTRAP "
170224 append_parm " $cfg " ' dscp_codepoint' ' -c'
171225 append_parm " $cfg " ' tcp_client_limit' ' -T' " $global_tcp_client_limit " ' 20'
172226 append_parm " $cfg " ' polling_interval' ' -i' " $global_polling_interval " ' 120'
@@ -181,7 +235,7 @@ start_instance() {
181235 append_parm " $cfg " ' logfile' ' -l' " $global_logfile "
182236 append_parm " $cfg " ' statistic_interval' ' -s' " $global_statistic_interval " ' 0'
183237 append_parm " $cfg " ' log_limit' ' -F' " $global_log_limit " ' 0'
184- append_counter " $cfg " ' verbosity' ' -v' " $global_verbosity "
238+ append_cnt " $cfg " ' verbosity' ' -v' " $global_verbosity "
185239
186240 if [ " $dnsmasq_config_update " = ' *' ]; then
187241 config_load ' dhcp'
@@ -206,7 +260,7 @@ start_instance() {
206260 json_add_object mdns
207261 procd_add_mdns_service " $packageName " ' udp' " $port " " DNS over HTTPS proxy"
208262 json_close_object
209- if [ " $force_dns " -ne ' 0 ' ]; then
263+ if [ -n " $force_dns " ]; then
210264 json_add_array firewall
211265 for iface in ${force_dns_src_interface/ ,/ } ; do
212266 for p in ${force_dns_port/ ,/ } ; do
@@ -234,7 +288,7 @@ start_instance() {
234288 done
235289 done
236290 json_close_array
237- force_dns= ' 0 '
291+ unset force_dns
238292 fi
239293 procd_close_data
240294 procd_close_instance
@@ -250,59 +304,14 @@ start_instance() {
250304
251305start_service () {
252306 local param=" $1 "
253- local canaryDomains canary_domains_icloud canary_domains_mozilla
254- local dnsmasq_config_update force_dns force_dns_port
255- local force_dns_src_interface
307+ local canaryDomains
308+ local force_dns=" $force_dns "
256309 local port=5053
257310
258- local global_listen_addr
259- local global_tcp_client_limit
260- local global_polling_interval
261- local global_proxy_server
262- local global_force_http1
263- local global_force_http3
264- local global_force_ipv6
265- local global_max_idle_time
266- local global_conn_loss_time
267- local global_ca_certs_file
268- local global_user
269- local global_group
270- local global_verbosity
271- local global_logfile
272- local global_statistic_interval
273- local global_log_limit
311+ [ " $param " = ' on_boot' ] && hdp_boot_flag=' true' && return 0
274312
275313 output " Starting $serviceName instances ${param: +$param } "
276- config_load " $packageName "
277- config_get_bool canary_domains_icloud ' config' ' canary_domains_icloud' ' 1'
278- config_get_bool canary_domains_mozilla ' config' ' canary_domains_mozilla' ' 1'
279- config_get_bool force_dns ' config' ' force_dns' ' 1'
280- config_get dnsmasq_config_update ' config' ' dnsmasq_config_update' ' *'
281- config_get force_dns_port ' config' ' force_dns_port' ' 53 853'
282- config_get force_dns_src_interface ' config' ' force_dns_src_interface' ' lan'
283- config_get global_listen_addr ' config' ' listen_addr' ' 127.0.0.1'
284- config_get global_tcp_client_limit ' config' ' tcp_client_limit' ' 20'
285- config_get global_polling_interval ' config' ' polling_interval' ' 120'
286- config_get global_proxy_server ' config' ' proxy_server'
287- config_get_bool global_force_http1 ' config' ' force_http1' ' 0'
288- config_get_bool global_force_http3 ' config' ' force_http3' ' 0'
289- config_get_bool global_force_ipv6 ' config' ' global_force_ipv6_resolvers' ' 0'
290- config_get global_max_idle_time ' config' ' max_idle_time' ' 118'
291- config_get global_conn_loss_time ' config' ' conn_loss_time' ' 15'
292- config_get global_ca_certs_file ' config' ' ca_certs_file'
293- config_get global_user ' config' ' user' ' nobody'
294- config_get global_group ' config' ' group' ' nogroup'
295- config_get global_verbosity ' config' ' verbosity' ' 0'
296- config_get global_logfile ' config' ' logfile'
297- config_get global_statistic_interval ' config' ' statistic_interval' ' 0'
298- config_get global_log_limit ' config' ' log_limit' ' 0'
299-
300- if [ " $canary_domains_icloud " -ne 0 ]; then
301- canaryDomains=" ${canaryDomains: +$canaryDomains }${canaryDomainsiCloud} "
302- fi
303- if [ " $canary_domains_mozilla " -ne 0 ]; then
304- canaryDomains=" ${canaryDomains: +$canaryDomains }${canaryDomainsMozilla} "
305- fi
314+ load_package_config " $param "
306315 dhcp_backup ' create'
307316 config_load " $packageName "
308317 config_foreach start_instance " $packageName " " $param "
@@ -326,24 +335,17 @@ start_service() {
326335 fi
327336 ;;
328337 esac
338+ # if ! is_resolver_working; then
339+ # rc_procd stop_service 'on_failed_health_check' && service_stopped 'on_failed_health_check'
340+ # fi
329341}
330342
331343stop_service () {
332344 local param=" $1 "
333- local canaryDomains canary_domains_icloud canary_domains_mozilla
334- local dnsmasq_config_update
345+ local canaryDomains
335346 local s=0
336347 output " Stopping $serviceName ${param: +$param } "
337- config_load " $packageName "
338- config_get dnsmasq_config_update ' config' ' dnsmasq_config_update' ' *'
339- config_get_bool canary_domains_icloud ' config' ' canary_domains_icloud' ' 1'
340- config_get_bool canary_domains_mozilla ' config' ' canary_domains_mozilla' ' 1'
341- if [ " $canary_domains_icloud " -ne 0 ]; then
342- canaryDomains=" ${canaryDomains: +$canaryDomains }${canaryDomainsiCloud} "
343- fi
344- if [ " $canary_domains_mozilla " -ne 0 ]; then
345- canaryDomains=" ${canaryDomains: +$canaryDomains }${canaryDomainsMozilla} "
346- fi
348+ load_package_config " $param "
347349 dhcp_backup ' restore'
348350 if uci_changes ' dhcp' ; then
349351 uci_commit ' dhcp'
@@ -356,18 +358,15 @@ stop_service() {
356358# shellcheck disable=SC2015
357359service_triggers () {
358360 local wan wan6 i
359- local procd_trigger_wan6
360361 if [ -n " $hdp_boot_flag " ]; then
361362 output " Setting trigger (on_boot) "
362363 procd_add_raw_trigger " interface.*.up" 5000 " /etc/init.d/${packageName} " restart ' on_interface_up' && output_okn || output_failn
363364 else
364- config_load " $packageName "
365- config_get_bool procd_trigger_wan6 ' config' ' procd_trigger_wan6' ' 0'
366365 . /lib/functions/network.sh
367366 network_flush_cache
368367 network_find_wan wan
369368 wan=" ${wan:- wan} "
370- if [ " $procd_trigger_wan6 " -ne 0 ]; then
369+ if [ -n " $procd_trigger_wan6 " ]; then
371370 network_find_wan6 wan6
372371 wan6=" ${wan6:- wan6} "
373372 fi
@@ -380,8 +379,8 @@ service_triggers() {
380379 fi
381380}
382381
383- service_started () { is_fw4_restart_needed && procd_set_config_changed firewall; }
384- service_stopped () { is_fw4_restart_needed && procd_set_config_changed firewall; }
382+ service_started () { [ -n " $force_dns " ] && procd_set_config_changed firewall; }
383+ service_stopped () { [ -n " $force_dns " ] && procd_set_config_changed firewall; }
385384restart () { procd_send_signal " $packageName " ; rc_procd start_service " $* " ; }
386385
387386dnsmasq_instance_append_force_dns_port () {
@@ -395,7 +394,7 @@ dnsmasq_doh_server() {
395394 local cfg=" $1 " param=" $2 " address=" ${3:- 127.0.0.1} " port=" $4 " i
396395 case " $param " in
397396 add)
398- if [ " $force_dns " -ne 0 ]; then
397+ if [ -n " $force_dns " ]; then
399398 for i in $canaryDomains ; do
400399 uci_add_list_if_new ' dhcp' " $cfg " ' server' " /${i} /"
401400 done
0 commit comments