5 # Required-Start: $network $remote_fs $syslog
6 # Required-Stop: $network $remote_fs $syslog
7 # Default-Start: 2 3 4 5
10 # pidfile: /run/unbound.pid
13 DESC="recursive DNS server"
14 DAEMON=/usr/sbin/unbound
15 PIDFILE="/var/run/unbound.pid"
17 test -x $DAEMON || exit 0
18 test -x ${DAEMON}-checkconf || exit 0
20 . /lib/lsb/init-functions
23 UNBOUND_CONF=/etc/unbound/unbound.conf
24 UNBOUND_BASE_DIR=$(dirname $UNBOUND_CONF)
25 CHROOT_DIR=$(awk '{if ($1 ~ "^chroot" && $2 != "\"\"") print $2}' $UNBOUND_CONF|sed -e "s#\"##g")
26 ROOT_TRUST_ANCHOR_UPDATE=false
27 ROOT_TRUST_ANCHOR_FILE=/var/lib/unbound/root.key
29 RESOLVCONF_FORWARDERS=false
31 if [ -f /etc/default/$NAME ]; then
33 case "x$UNBOUND_ENABLE" in
41 case "x$ROOT_TRUST_ANCHOR_UPDATE" in
43 ROOT_TRUST_ANCHOR_UPDATE=true
46 ROOT_TRUST_ANCHOR_UPDATE=false
49 case "x$RESOLVCONF" in
56 case "x$RESOLVCONF_FORWARDERS" in
58 RESOLVCONF_FORWARDERS=true
61 RESOLVCONF_FORWARDERS=false
65 do_resolvconf_start() {
67 if [ -x /sbin/resolvconf ]; then
68 unbound-checkconf $CHROOT_DIR/$UNBOUND_CONF -o interface | (
70 while read interface; do
72 if [ "x$interface" = x0.0.0.0 -o "x$interface" = x127.0.0.1 ]; then
73 echo "nameserver 127.0.0.1"
74 elif [ "x$interface" = x::0 -o "x$interface" = x::1 ]; then
78 if [ $default = yes ]; then
79 # unbound defaults to listening on localhost
80 echo "nameserver 127.0.0.1"
82 ) | /sbin/resolvconf -a lo.unbound
87 do_resolvconf_stop() {
89 if [ -x /sbin/resolvconf ]; then
90 /sbin/resolvconf -d lo.unbound
96 if [ -d "$CHROOT_DIR" -a "$CHROOT_DIR" != "$UNBOUND_BASE_DIR" ]; then
98 tar --overwrite -cf - $(echo $UNBOUND_BASE_DIR | sed 's#^/##') | (cd $CHROOT_DIR && tar -xf -)
104 if $UNBOUND_ENABLE; then
106 if $ROOT_TRUST_ANCHOR_UPDATE; then
107 unbound-anchor -a $ROOT_TRUST_ANCHOR_FILE -v 2>&1 | logger -p daemon.info -t unbound-anchor
108 chown unbound:unbound $ROOT_TRUST_ANCHOR_FILE
110 log_daemon_msg "Starting $DESC" "$NAME"
111 if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --name $NAME --startas $DAEMON -- $DAEMON_OPTS; then
118 log_warning_msg "Not starting $DESC $NAME, disabled via /etc/default/$NAME"
123 if $UNBOUND_ENABLE; then
124 log_daemon_msg "Stopping $DESC" "$NAME"
125 if start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --name $NAME --retry 5; then
134 restart|force-reload)
135 if $UNBOUND_ENABLE; then
136 log_daemon_msg "Restarting $DESC" "$NAME"
137 start-stop-daemon --stop --quiet --pidfile $PIDFILE --name $NAME --retry 5
139 if start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --name $NAME --startas $DAEMON -- $DAEMON_OPTS; then
150 if $UNBOUND_ENABLE; then
151 log_daemon_msg "Reloading $DESC" "$NAME"
152 if start-stop-daemon --stop --pidfile $PIDFILE --signal 1; then
162 status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
167 echo "Usage: $N {start|stop|restart|status|reload|force-reload}" >&2