1 #!/bin/sh /etc/rc.common
5 PROG
=/usr
/sbin
/dnscrypt-proxy
11 rc_procd start_service
15 local config_path
="$CONFIG_DIR/dnscrypt-proxy-$1.conf"
16 create_config_file
$1 "$config_path"
19 procd_set_param
command $PROG "$config_path"
23 create_config_file
() {
24 local address port resolver resolvers_list ephemeral_keys client_key log_level syslog syslog_prefix local_cache query_log_file block_ipv6 provider_name provider_key resolver_address
25 local config_path
="$2"
26 local plugins_support_enabled
=$
(dnscrypt-proxy
--version |
grep 'Support for plugins: present' |
wc -l)
28 [ ! -d "$CONFIG_DIR" ] && mkdir
-p "$CONFIG_DIR"
29 [ -f "$config_path" ] && rm "$config_path"
31 config_get address
$1 'address' '127.0.0.1'
32 config_get port
$1 'port' '5353'
33 config_get resolver
$1 'resolver' ''
34 config_get provider_name
$1 'providername' ''
35 config_get provider_key
$1 'providerkey' ''
36 config_get resolver_address
$1 'resolveraddress' ''
37 config_get resolvers_list
$1 'resolvers_list' '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv'
38 config_get client_key
$1 'client_key' ''
39 config_get syslog_prefix
$1 'syslog_prefix' 'dnscrypt-proxy'
40 config_get query_log_file
$1 'query_log_file' ''
41 config_get log_level
$1 'log_level' '6'
42 config_get blacklist
$1 'blacklist' ''
43 config_get_bool syslog
$1 'syslog' '1'
44 config_get_bool ephemeral_keys
$1 'ephemeral_keys' '0'
45 config_get_bool local_cache
$1 'local_cache' '0'
46 config_get_bool block_ipv6
$1 'block_ipv6' '0'
48 append_param_not_empty
"ResolverName" "$resolver" $config_path
49 append_param
"ResolversList" "$resolvers_list" $config_path
50 append_param_not_empty
"ProviderName" "$provider_name" $config_path
51 append_param_not_empty
"ProviderKey" "$provider_key" $config_path
52 append_param_not_empty
"ResolverAddress" "$resolver_address" $config_path
53 append_param
"User" "$USER" $config_path
54 append_param
"LocalAddress" "$address:$port" $config_path
55 append_param_not_empty
"ClientKey" "$client_key" $config_path
56 append_on_off
"EphemeralKeys" $ephemeral_keys $config_path
57 append_param
"LogLevel" "$log_level" $config_path
58 append_on_off
"Syslog" $syslog $config_path
59 append_param
"SyslogPrefix" "$syslog_prefix" $config_path
60 append_on_off
"LocalCache" $local_cache $config_path
61 append_param_not_empty
"QueryLogFile" "$query_log_file" $config_path
63 if [ $plugins_support_enabled -ne 0 ] && [ $block_ipv6 -ne 0 ]
65 append_yes_no
"BlockIPv6" $block_ipv6 $config_path
66 elif [ $block_ipv6 -ne 0 ]
68 log_ignored_param
"block_ipv6"
71 if [ $plugins_support_enabled -ne 0 ] && [ -n "$blacklist" ]
73 config_list_foreach
$1 'blacklist' append_blacklists
$config_path
74 elif [ -n "$blacklist" ]
76 log_ignored_param
"blacklist"
82 logger
-t dnscrypt-proxy
-p user.warn
"dnscrypt-proxy plugins support not present, ignoring '$param_name' parameter."
91 if [ $param_value -eq 1 ]
98 echo "$param_name $value" >> $config_path
107 if [ $param_value -eq 1 ]
114 echo "$param_name $value" >> $config_path
122 echo "$param_name $param_value" >> $config_path
125 append_param_not_empty
() {
130 if [ ! -z "$param_value" -a "$param_value" != " " ]
132 append_param
"$param_name" "$param_value" "$config_path"
136 append_blacklists
() {
138 local config_path
="$2"
139 append_param_not_empty
"BlackList" "$value" $config_path
143 if [ -n "${dnscrypt_boot}" ]
147 config_load dnscrypt-proxy
148 config_foreach dnscrypt_instance dnscrypt-proxy
153 local triggerlist
="$(uci_get dnscrypt-proxy.@global[0].procd_trigger)"
155 PROCD_RELOAD_DELAY
=2000
156 if [ -n "${triggerlist}" ]
158 for trigger
in ${triggerlist}
160 procd_add_interface_trigger
"interface.*.up" "${trigger}" /etc
/init.d
/dnscrypt-proxy reload
163 procd_add_raw_trigger
"interface.*.up" 2000 /etc
/init.d
/dnscrypt-proxy reload
165 procd_add_reload_trigger
'dnscrypt-proxy'