1 #!/bin/sh /etc/rc.common
2 # Copyright 2019 Stan Grishin (stangri@melmac.net)
3 # shellcheck disable=SC2039
8 PROG
=/usr
/sbin
/https_dns_proxy
10 xappend
() { param
="$param $1"; }
18 config_get _loctmp
"$section" "$option" "$default"
19 [ -z "$_loctmp" ] && return 0
20 xappend
"$switch $_loctmp"
24 local cfg
="$1" param listen_addr listen_port
26 append_parm
"$cfg" 'listen_addr' '-a' '127.0.0.1'
27 append_parm
"$cfg" 'listen_port' '-p' "$p"
28 append_parm
"$cfg" 'bootstrap_dns' '-b'
29 append_parm
"$cfg" 'url_prefix' '-r'
30 append_parm
"$cfg" 'user' '-u' 'nobody'
31 append_parm
"$cfg" 'group' '-g' 'nogroup'
32 append_parm
"$cfg" 'subnet_addr' '-e'
33 append_parm
"$cfg" 'proxy_server' '-t'
36 # shellcheck disable=SC2086
37 procd_set_param
command ${PROG} ${param}
38 procd_set_param respawn
41 config_get listen_addr
"$cfg" 'listen_addr' '127.0.0.1'
42 config_get listen_port
"$cfg" 'listen_port' "$p"
44 # shellcheck disable=SC2154
45 config_foreach dnsmasq_add_doh_server
'dnsmasq' "${listen_addr}#${listen_port}"
50 procd_add_reload_trigger
'https_dns_proxy'
56 config_load
'https_dns_proxy'
57 config_foreach start_instance
'https_dns_proxy'
58 if [ -z "$(uci -q get dhcp.@dnsmasq[0].server)" ]; then
61 if [ -n "$(uci -q changes dhcp)" ]; then
63 [ -x /etc
/init.d
/dnsmasq
] && /etc
/init.d
/dnsmasq restart
>/dev
/null
2>&1
69 if [ -n "$(uci -q changes dhcp)" ]; then
71 [ -x /etc
/init.d
/dnsmasq
] && /etc
/init.d
/dnsmasq restart
>/dev
/null
2>&1
75 dnsmasq_add_doh_server
() {
76 local cfg
="$1" value
="$2"
77 uci
-q add_list dhcp.
"$cfg".server
="$value"
80 dnsmasq_create_server_backup
() {
82 if ! uci
-q get
"dhcp.$cfg.doh_backup_server" >/dev
/null
; then
83 for i
in $
(uci
-q get
"dhcp.$cfg.server"); do
84 uci
-q add_list dhcp.
"$cfg".doh_backup_server
="$i"
87 uci
-q del
"dhcp.$cfg.server"
90 dnsmasq_restore_server_backup
() {
92 if uci
-q get
"dhcp.$cfg.doh_backup_server" >/dev
/null
; then
93 uci
-q del
"dhcp.$cfg.server"
94 for i
in $
(uci
-q get
"dhcp.$cfg.doh_backup_server"); do
95 uci
-q add_list dhcp.
"$cfg".server
="$i"
104 config_foreach dnsmasq_create_server_backup
'dnsmasq';;
106 config_foreach dnsmasq_restore_server_backup
'dnsmasq';;