Skip to content

Commit fc8a207

Browse files
committed
rework boot, config load
1 parent 219a719 commit fc8a207

File tree

2 files changed

+81
-82
lines changed

2 files changed

+81
-82
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk
33

44
PKG_NAME:=https-dns-proxy
55
PKG_VERSION:=2025.09.11
6-
PKG_RELEASE:=1
6+
PKG_RELEASE:=2
77

88
PKG_SOURCE_PROTO:=git
99
PKG_SOURCE_URL:=https://github.com/baranyaib90/https_dns_proxy/

files/etc/init.d/https-dns-proxy

Lines changed: 80 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# shellcheck disable=SC1091,SC3043,SC3060
44

55
# shellcheck disable=SC2034
6-
START=25
6+
START=20
77
# shellcheck disable=SC2034
88
STOP=15
99
# shellcheck disable=SC2034
@@ -32,7 +32,32 @@ readonly canaryDomainsiCloud='mask.icloud.com mask-h2.icloud.com'
3232

3333
hdp_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; }
3661
is_alnum() { case "$1" in (*[![:alnum:]_\ @]*|"") return 1;; esac; }
3762
is_fw4_restart_needed() { [ "$(uci_get "$packageName" 'config' 'force_dns' '1')" = '1' ]; }
3863
is_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

148173
boot() {
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

156210
start_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

251305
start_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

331343
stop_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
357359
service_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; }
385384
restart() { procd_send_signal "$packageName"; rc_procd start_service "$*"; }
386385

387386
dnsmasq_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

Comments
 (0)