is_enabled() {
local enabled
- config_get enabled "$1" "$2" "0"
+ config_get_bool enabled "$1" "$2" "0"
if [ "$enabled" -eq "1" ]; then
return 0
else
}
load_config_arg() {
- append_param_bool "$1" "all_servers"
- append_param_bool "$1" "fastest_addr"
append_param_bool "$1" "http3"
append_param_bool "$1" "insecure"
append_param_bool "$1" "ipv6_disabled"
load_config_list() {
if is_empty "global" "listen_addr"; then
append_param "--listen" "127.0.0.1"
- else
+ else
config_list_foreach "global" "listen_addr" "append_param '--listen'"
fi
if is_empty "global" "listen_port"; then
append_param "--port" "5353"
- else
+ else
config_list_foreach "global" "listen_port" "append_param '--port'"
fi
load_config_param() {
append_param_arg "global" "log_file" "--output"
- append_param_arg "global" "timeout" "--timeout"
append_param_arg "global" "max_go_routines" "--max-go-routines"
append_param_arg "global" "rate_limit" "--ratelimit"
+ append_param_arg "global" "timeout" "--timeout"
append_param_arg "global" "udp_buf_size" "--udp-buf-size"
+ append_param_arg "global" "upstream_mode" "--upstream-mode"
is_enabled "cache" "enabled" && {
append_param "--cache"
load_config_list
load_config_param
+ # This must be set at last, all other options set after this will be ignored
+ is_enabled "hosts" "enabled" && {
+ append_param "--hosts-file-enabled" "true"
+ config_list_foreach "hosts" "hosts_files" "append_param '--hosts-files'"
+ } || append_param "--hosts-file-enabled" "false"
+
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_add_jail dnsproxy ronly log
procd_set_param capabilities "/etc/capabilities/dnsproxy.json"
+ procd_add_jail_mount "/etc/hosts"
procd_add_jail_mount "/etc/ssl/certs/ca-certificates.crt"
[ -z "$log_file" ] || procd_add_jail_mount_rw "$log_file"
[ -z "$tls_crt" ] || procd_add_jail_mount "$tls_crt"
[ -z "$tls_key" ] || procd_add_jail_mount "$tls_key"
+ is_enabled "hosts" "enabled" && config_list_foreach "hosts" "hosts_files" "procd_add_jail_mount"
procd_close_instance
}
-reload_service() {
- stop
- start
-}
-
service_triggers() {
procd_add_reload_trigger "$CONF"
}