| #!/bin/sh /etc/rc.common |
| ############################################################################## |
| # |
| # Copyright (C) 2016 Michael Hanselmann, Eric Luehrsen |
| # |
| ############################################################################## |
| # |
| # This init script is just the entry point for Unbound UCI. |
| # |
| ############################################################################## |
| |
| # while useful (sh)ellcheck is pedantic and noisy |
| # shellcheck disable=1091,2002,2004,2034,2039,2086,2094,2140,2154,2155 |
| |
| START=19 |
| STOP=50 |
| USE_PROCD=1 |
| PROG=/usr/sbin/unbound |
| |
| ############################################################################## |
| |
| boot() { |
| UB_BOOT=1 |
| start "$@" |
| } |
| |
| ############################################################################## |
| |
| start_service() { |
| if [ -n "$UB_BOOT" ] ; then |
| # Load procd triggers (rc) and use event IFUP to really start |
| return 0 |
| fi |
| |
| # complex UCI work |
| . /usr/lib/unbound/unbound.sh |
| unbound_start |
| |
| # standard procd clause |
| procd_open_instance "unbound" |
| procd_set_param command $PROG -d -c $UB_TOTAL_CONF |
| procd_set_param respawn |
| procd_close_instance |
| } |
| |
| ############################################################################## |
| |
| stop_service() { |
| # clean up |
| . /usr/lib/unbound/stopping.sh |
| unbound_stop |
| |
| # Wait! on restart Unbound may take time writing closure stats to syslog |
| pidof $PROG && sleep 1 |
| } |
| |
| ############################################################################## |
| |
| service_triggers() { |
| local legacy1=$( uci_get unbound.@unbound[0].trigger ) |
| local legacy2=$( uci_get unbound.@unbound[0].trigger_interface ) |
| local legacy3=$( uci_get unbound.@unbound[0].iface_trig ) |
| local triggers="$legacy1 $legacy2 $legacy3" |
| |
| . /usr/lib/unbound/defaults.sh |
| |
| |
| if [ ! -f "$UB_TOTAL_CONF" ] || [ -n "$UB_BOOT" ] ; then |
| # Unbound can be a bit heavy, so wait some on first start. Any interface |
| # up affects the trigger delay and will guarantee start. |
| procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/unbound restart |
| |
| elif [ -n "$triggers" ] ; then |
| for trigger in $triggers ; do |
| # User selected triggers to restart at any other time |
| procd_add_reload_interface_trigger "$trigger" |
| done |
| |
| procd_add_reload_trigger "unbound" "dhcp" |
| |
| else |
| procd_add_reload_trigger "unbound" "dhcp" |
| fi |
| } |
| |
| ############################################################################## |
| |