- #!/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"
- }
|