|
|
- #!/bin/sh /etc/rc.common
-
- START=50
- USE_PROCD=1
- PROG=/usr/sbin/dnscrypt-proxy
- CONFIG_DIR=/var/etc
- USER=nobody
-
- dnscrypt_instance() {
- local config_path="$CONFIG_DIR/dnscrypt-proxy-$1.conf"
- create_config_file $1 "$config_path"
-
- procd_open_instance
- procd_set_param command $PROG "$config_path"
- procd_close_instance
- }
-
- create_config_file() {
- local address port resolver resolvers_list ephemeral_keys client_key syslog syslog_prefix local_cache query_log_file block_ipv6
- local config_path="$2"
-
- [ ! -d "$CONFIG_DIR" ] && mkdir -p "$CONFIG_DIR"
- [ -f "$config_path" ] && rm "$config_path"
-
- config_get address $1 'address' '127.0.0.1'
- config_get port $1 'port' '5353'
- config_get resolver $1 'resolver' ''
- config_get resolvers_list $1 'resolvers_list' '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv'
- config_get client_key $1 'client_key' ''
- config_get syslog_prefix $1 'syslog_prefix' 'dnscrypt-proxy'
- config_get query_log_file $1 'query_log_file' ''
- config_get_bool syslog $1 'syslog' '1'
- config_get_bool ephemeral_keys $1 'ephemeral_keys' '0'
- config_get_bool local_cache $1 'local_cache' '0'
- config_get_bool block_ipv6 $1 'block_ipv6' '0'
-
- append_param_not_empty "ResolverName" "$resolver" $config_path
- append_param "ResolversList" "$resolvers_list" $config_path
- append_param "User" "$USER" $config_path
- append_param "LocalAddress" "$address:$port" $config_path
- append_param_not_empty "ClientKey" "$client_key" $config_path
- append_on_off "EphemeralKeys" $ephemeral_keys $config_path
- append_on_off "Syslog" $syslog $config_path
- append_param "SyslogPrefix" "$syslog_prefix" $config_path
- append_on_off "LocalCache" $local_cache $config_path
- append_param_not_empty "QueryLogFile" "$query_log_file" $config_path
- append_yes_no "BlockIPv6" $block_ipv6 $config_path
-
- config_list_foreach $1 'blacklist' append_blacklists $config_path
- }
-
- append_on_off() {
- local param_name=$1
- local param_value=$2
- local config_path=$3
- local value
-
- if [ $param_value -eq 1 ]
- then
- value="on"
- else
- value="off"
- fi
-
- echo "$param_name $value" >> $config_path
- }
-
- append_yes_no() {
- local param_name=$1
- local param_value=$2
- local config_path=$3
- local value
-
- if [ $param_value -eq 1 ]
- then
- value="yes"
- else
- value="no"
- fi
-
- echo "$param_name $value" >> $config_path
- }
-
- append_param() {
- local param_name=$1
- local param_value=$2
- local config_path=$3
-
- echo "$param_name $param_value" >> $config_path
- }
-
- append_param_not_empty() {
- local param_name=$1
- local param_value=$2
- local config_path=$3
-
- if [ ! -z "$param_value" -a "$param_value" != " " ]
- then
- append_param "$param_name" "$param_value" "$config_path"
- fi
- }
-
- append_blacklists() {
- local value="$1"
- local config_path="$2"
- append_param_not_empty "BlackList" "$value" $config_path
- }
-
- start_service() {
- config_load dnscrypt-proxy
- config_foreach dnscrypt_instance dnscrypt-proxy
- }
-
- service_triggers() {
- procd_add_reload_trigger 'dnscrypt-proxy'
- }
|