#!/bin/sh /etc/rc.common
|
|
|
|
# shellcheck disable=SC2034 disable=SC2154
|
|
|
|
USE_PROCD=1
|
|
|
|
# starts after network starts
|
|
START=21
|
|
# stops before networking stops
|
|
STOP=89
|
|
|
|
PROG=/usr/sbin/nextdns
|
|
|
|
add_dnsmasq_opt() {
|
|
mkdir -p /tmp/dnsmasq.d
|
|
echo "$1" >> /tmp/dnsmasq.d/nextdns.conf
|
|
}
|
|
|
|
dnsmasq_reload() {
|
|
# Reload dnsmasq is already running.
|
|
if /etc/init.d/dnsmasq running; then
|
|
/etc/init.d/dnsmasq reload
|
|
fi
|
|
}
|
|
|
|
handle_host_config() {
|
|
host_config_args="$host_config_args -config=$1"
|
|
}
|
|
|
|
start_service() {
|
|
config_load nextdns
|
|
config_get_bool enabled main enabled "1"
|
|
rm -f /tmp/dnsmasq.d/nextdns.conf
|
|
if [ "$enabled" = "1" ]; then
|
|
config_get config main config ""
|
|
config_list_foreach main host_config handle_host_config
|
|
config_get listen main listen "127.0.0.1:5342"
|
|
config_get_bool report_client_info main report_client_info "1"
|
|
config_get_bool hardened_privacy main hardened_privacy "0"
|
|
config_get_bool log_queries main log_queries "0"
|
|
|
|
# Add a custom configuration for dnsmasq.
|
|
server=$(echo "$listen" | sed -e 's/:/#/')
|
|
add_dnsmasq_opt "server=$server"
|
|
add_dnsmasq_opt "no-resolv"
|
|
if [ "$report_client_info" = "1" ]; then
|
|
add_dnsmasq_opt "add-mac"
|
|
add_dnsmasq_opt "add-subnet=32,128"
|
|
fi
|
|
|
|
procd_open_instance
|
|
# shellcheck disable=SC2086
|
|
procd_set_param command "$PROG" run \
|
|
-listen="$listen" \
|
|
$host_config_args \
|
|
-config="$config" \
|
|
-report-client-info="$report_client_info" \
|
|
-hardened-privacy="$hardened_privacy" \
|
|
-log-queries="$log_queries"
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}"
|
|
procd_close_instance
|
|
fi
|
|
|
|
dnsmasq_reload
|
|
}
|
|
|
|
stop_service() {
|
|
rm -f /tmp/dnsmasq.d/nextdns.conf
|
|
dnsmasq_reload
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "nextdns"
|
|
}
|