#!/bin/sh ### BEGIN INIT INFO # Provides: nsd-updated # Required-Start: $remote_fs $syslog nsd # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: watch fifo for updates to nsd zone files ### END INIT INFO set -Ceu # Sanitize our environment a little, out of paranoia. unset IFS PATH=/sbin:/bin:/usr/bin fifowatchd='@SBINDIR@/fifowatchd' nsd_update='@SBINDIR@/nsd-update' logger='@LOGGER@' pidfile='@STATEDIR@/nsd-updated.pid' nsd_update_fifo='@STATEDIR@/nsd-update.fifo' nsd_updated_flags="-n nsd-updated -d 60" # Fail silently if the executables of interest don't exist, per the # Debian policy manual. This seems silly, but it's the policy. test -x "$fifowatchd" || exit 0 test -x "$nsd_update" || exit 0 . /lib/lsb/init-functions do_start () { start-stop-daemon --start --quiet --oknodo --pidfile "$pidfile" \ --exec "$fifowatchd" -- -p "$pidfile" $nsd_updated_flags \ "$nsd_update_fifo" \ /bin/sh -c \ "'$nsd_update' 2>&1 | '$logger' -t nsd-update -p daemon.notice" } do_stop () { start-stop-daemon --stop --quiet --oknodo --pidfile "$pidfile" } case $1 in start) if [ ! -e "$nsd_update_fifo" ]; then log_begin_msg "creating fifo: $nsd_update_fifo" if mkfifo -m 0622 -- "$nsd_update_fifo"; then log_end_msg 0 else log_end_msg $? fi else if [ ! -p "$nsd_update_fifo" ]; then log_failure_msg "not a fifo: $nsd_update_fifo" exit 1 fi fi log_daemon_msg 'Starting nsd update daemon' nsd-updated if do_start; then log_end_msg 0 else log_end_msg $? fi ;; force-reload | reload | restart) log_daemon_msg 'Restarting nsd update daemon' nsd-updated if do_stop; then if do_start; then log_end_msg 0 else log_end_msg $? fi else log_daemon_msg $? fi ;; stop) log_daemon_msg 'Stopping nsd-updated' nsd-updated if do_stop; then log_end_msg 0 else log_end_msg $? fi ;; status) status_of_proc -p "$pidfile" "$fifowatchd" nsd-updated ;; *) log_action_msg \ 'Usage: /etc/init.d/nsd-updated {start|reload|force-reload|restart|stop|status}' exit 1 ;; esac