5 # Required-Start: $network $remote_fs $syslog
6 # Required-Stop: $network $remote_fs $syslog
7 # Default-Start: 2 3 4 5
12 DESC="recursive DNS server"
13 DAEMON=/usr/sbin/unbound
14 PIDFILE="/var/run/unbound.pid"
16 test -x $DAEMON || exit 0
17 test -x ${DAEMON}-checkconf || exit 0
19 . /lib/lsb/init-functions
22 UNBOUND_CONF=/etc/unbound/unbound.conf
23 UNBOUND_BASE_DIR=$(dirname $UNBOUND_CONF)
24 CHROOT_DIR=$(awk '{if ($1 ~ "^chroot" && $2 != "\"\"") print $2}' $UNBOUND_CONF|sed -e "s#\"##g")
25 ROOT_TRUST_ANCHOR_UPDATE=false
26 ROOT_TRUST_ANCHOR_FILE=/var/lib/unbound/root.key
28 RESOLVCONF_FORWARDERS=false
30 if [ -f /etc/default/$NAME ]; then
32 case "x$UNBOUND_ENABLE" in
40 case "x$ROOT_TRUST_ANCHOR_UPDATE" in
42 ROOT_TRUST_ANCHOR_UPDATE=true
45 ROOT_TRUST_ANCHOR_UPDATE=false
48 case "x$RESOLVCONF" in
55 case "x$RESOLVCONF_FORWARDERS" in
57 RESOLVCONF_FORWARDERS=true
60 RESOLVCONF_FORWARDERS=false
64 do_resolvconf_start() {
66 if [ -x /sbin/resolvconf ]; then
67 unbound-checkconf $CHROOT_DIR/$UNBOUND_CONF -o interface | (
69 while read interface; do
71 if [ "x$interface" = x0.0.0.0 -o "x$interface" = x127.0.0.1 ]; then
72 echo "nameserver 127.0.0.1"
73 elif [ "x$interface" = x::0 -o "x$interface" = x::1 ]; then
77 if [ $default = yes ]; then
78 # unbound defaults to listening on localhost
79 echo "nameserver 127.0.0.1"
81 ) | /sbin/resolvconf -a lo.unbound
86 do_resolvconf_stop() {
88 if [ -x /sbin/resolvconf ]; then
89 /sbin/resolvconf -d lo.unbound
95 if [ -d "$CHROOT_DIR" -a "$CHROOT_DIR" != "$UNBOUND_BASE_DIR" ]; then
97 tar --overwrite -cf - $(echo $UNBOUND_BASE_DIR | sed 's#^/##') | (cd $CHROOT_DIR && tar -xf -)
103 if $UNBOUND_ENABLE; then
105 if $ROOT_TRUST_ANCHOR_UPDATE; then
106 unbound-anchor -a $ROOT_TRUST_ANCHOR_FILE -v 2>&1 | logger -p daemon.info -t unbound-anchor
107 chown unbound:unbound $ROOT_TRUST_ANCHOR_FILE
109 log_daemon_msg "Starting $DESC" "$NAME"
110 if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --name $NAME --startas $DAEMON -- $DAEMON_OPTS; then
117 log_warning_msg "Not starting $DESC $NAME, disabled via /etc/default/$NAME"
122 if $UNBOUND_ENABLE; then
123 log_daemon_msg "Stopping $DESC" "$NAME"
124 if start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --name $NAME --retry 5; then
133 restart|force-reload)
134 if $UNBOUND_ENABLE; then
135 log_daemon_msg "Restarting $DESC" "$NAME"
136 start-stop-daemon --stop --quiet --pidfile $PIDFILE --name $NAME --retry 5
138 if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --name $NAME --startas $DAEMON -- $DAEMON_OPTS; then
149 if $UNBOUND_ENABLE; then
150 log_daemon_msg "Reloading $DESC" "$NAME"
151 if start-stop-daemon --stop --pidfile $PIDFILE --signal 1; then
161 status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
166 echo "Usage: $N {start|stop|restart|status|reload|force-reload}" >&2