dnscrypt-proxy.init (3943B)
1 #!/bin/sh /etc/rc.common 2 3 START=50 4 USE_PROCD=1 5 PROG=/usr/sbin/dnscrypt-proxy 6 CONFIG_DIR=/var/etc 7 USER=nobody 8 9 dnscrypt_instance() { 10 local config_path="$CONFIG_DIR/dnscrypt-proxy-$1.conf" 11 create_config_file $1 "$config_path" 12 13 procd_open_instance 14 procd_set_param command $PROG "$config_path" 15 procd_close_instance 16 } 17 18 create_config_file() { 19 local address port resolver resolvers_list ephemeral_keys client_key syslog syslog_prefix local_cache query_log_file block_ipv6 provider_name provider_key resolver_address 20 local config_path="$2" 21 22 [ ! -d "$CONFIG_DIR" ] && mkdir -p "$CONFIG_DIR" 23 [ -f "$config_path" ] && rm "$config_path" 24 25 config_get address $1 'address' '127.0.0.1' 26 config_get port $1 'port' '5353' 27 config_get resolver $1 'resolver' '' 28 config_get provider_name $1 'providername' '' 29 config_get provider_key $1 'providerkey' '' 30 config_get resolver_address $1 'resolveraddress' '' 31 config_get resolvers_list $1 'resolvers_list' '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv' 32 config_get client_key $1 'client_key' '' 33 config_get syslog_prefix $1 'syslog_prefix' 'dnscrypt-proxy' 34 config_get query_log_file $1 'query_log_file' '' 35 config_get_bool syslog $1 'syslog' '1' 36 config_get_bool ephemeral_keys $1 'ephemeral_keys' '0' 37 config_get_bool local_cache $1 'local_cache' '0' 38 config_get_bool block_ipv6 $1 'block_ipv6' '0' 39 40 append_param_not_empty "ResolverName" "$resolver" $config_path 41 append_param "ResolversList" "$resolvers_list" $config_path 42 append_param_not_empty "ProviderName" "$provider_name" $config_path 43 append_param_not_empty "ProviderKey" "$provider_key" $config_path 44 append_param_not_empty "ResolverAddress" "$resolver_address" $config_path 45 append_param "User" "$USER" $config_path 46 append_param "LocalAddress" "$address:$port" $config_path 47 append_param_not_empty "ClientKey" "$client_key" $config_path 48 append_on_off "EphemeralKeys" $ephemeral_keys $config_path 49 append_on_off "Syslog" $syslog $config_path 50 append_param "SyslogPrefix" "$syslog_prefix" $config_path 51 append_on_off "LocalCache" $local_cache $config_path 52 append_param_not_empty "QueryLogFile" "$query_log_file" $config_path 53 append_yes_no "BlockIPv6" $block_ipv6 $config_path 54 55 config_list_foreach $1 'blacklist' append_blacklists $config_path 56 } 57 58 append_on_off() { 59 local param_name=$1 60 local param_value=$2 61 local config_path=$3 62 local value 63 64 if [ $param_value -eq 1 ] 65 then 66 value="on" 67 else 68 value="off" 69 fi 70 71 echo "$param_name $value" >> $config_path 72 } 73 74 append_yes_no() { 75 local param_name=$1 76 local param_value=$2 77 local config_path=$3 78 local value 79 80 if [ $param_value -eq 1 ] 81 then 82 value="yes" 83 else 84 value="no" 85 fi 86 87 echo "$param_name $value" >> $config_path 88 } 89 90 append_param() { 91 local param_name=$1 92 local param_value=$2 93 local config_path=$3 94 95 echo "$param_name $param_value" >> $config_path 96 } 97 98 append_param_not_empty() { 99 local param_name=$1 100 local param_value=$2 101 local config_path=$3 102 103 if [ ! -z "$param_value" -a "$param_value" != " " ] 104 then 105 append_param "$param_name" "$param_value" "$config_path" 106 fi 107 } 108 109 append_blacklists() { 110 local value="$1" 111 local config_path="$2" 112 append_param_not_empty "BlackList" "$value" $config_path 113 } 114 115 start_service() { 116 config_load dnscrypt-proxy 117 config_foreach dnscrypt_instance dnscrypt-proxy 118 } 119 120 service_triggers() { 121 procd_add_reload_trigger 'dnscrypt-proxy' 122 }