diff options
Diffstat (limited to 'debian/knot.init.d')
-rw-r--r-- | debian/knot.init.d | 176 |
1 files changed, 88 insertions, 88 deletions
diff --git a/debian/knot.init.d b/debian/knot.init.d index c148445..4ef17df 100644 --- a/debian/knot.init.d +++ b/debian/knot.init.d @@ -16,16 +16,20 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Knot DNS server" # Introduce a short description here NAME=knotd # Introduce the short server's name here DAEMON=/usr/sbin/$NAME # Introduce the server's location here -DAEMON_ARGS="-d" # Arguments to run the daemon with -RUNDIR=/run/knot -PIDFILE=${RUNDIR}/$NAME.pid -SCRIPTNAME=/etc/init.d/$NAME +DAEMON_CONFFILE=/etc/knot/knot.conf +DAEMON_ARGS="-d -c $DAEMON_CONFFILE" +SCRIPTNAME=/etc/init.d/knot + +KNOTC=/usr/sbin/knotc # Exit if the package is not installed [ -x $DAEMON ] || exit 0 -# Read configuration variable file if it is present -[ -r /etc/default/knot ] && . /etc/default/knot +# Read rundir from default configuration +KNOT_RUNDIR=$(sed -ne "s/#.*$//;s/.*rundir \"*\([^\";]*\\).*/\\1/p;" $DAEMON_CONFFILE) +[ -z "$KNOT_RUNDIR" ] && KNOT_RUNDIR=/run/knot + +PIDFILE=${KNOT_RUNDIR}/knot.pid # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh @@ -36,32 +40,41 @@ SCRIPTNAME=/etc/init.d/$NAME # Don't run if we are running upstart if init_is_upstart; then - exit 1 + case "$1" in + stop) + exit 0 + ;; + *) + exit 1 + ;; + esac fi -check_rundir() -{ - [ -d "${RUNDIR}" ] && mkdir "${RUNDIR}" - [ -n "${KNOT_USER}" -a -n "${KNOT_GROUP}" ] && chown ${KNOT_USER}:${KNOT_GROUP} "${RUNDIR}" -} +# +# Prepare /run/knot (or other configured rundir) +# and chown it to user.group as set it in conffile +# + +/usr/lib/knot/prepare-environment $DAEMON_CONFFILE # # Function that starts the daemon/service # do_start() { - # Return - # 0 if daemon has been started - # 1 if daemon was already running - # 2 if daemon could not be started - start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ - || return 1 - start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ - $DAEMON_ARGS \ - || return 2 - # Add code here, if necessary, that waits for the process to be ready - # to handle requests from services started subsequently which depend - # on this one. As a last resort, sleep for some time. + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + + $KNOTC status >/dev/null 2>/dev/null \ + && return 1 + + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ + $DAEMON_ARGS \ + || return 2 } # @@ -69,94 +82,81 @@ do_start() # do_stop() { - # Return - # 0 if daemon has been stopped - # 1 if daemon was already stopped - # 2 if daemon could not be stopped - # other if a failure occurred - start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME - RETVAL="$?" - [ "$RETVAL" = 2 ] && return 2 - # Wait for children to finish too if this is a daemon that forks - # and if the daemon is only ever run from this initscript. - # If the above conditions are not satisfied then add some other code - # that waits for the process to drop all resources that could be - # needed by services started subsequently. A last resort is to - # sleep for some time. - start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON - [ "$?" = 2 ] && return 2 - # Many daemons don't delete their pidfiles when they exit. - rm -f $PIDFILE - return "$RETVAL" + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + + $KNOTC status >/dev/null 2>/dev/null \ + || return 1 + + $KNOTC stop >/dev/null + RETVAL="$?" + [ $? = 1 ] && return 2 + + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return 0 } -# -# Function that sends a SIGHUP to the daemon/service -# do_reload() { - # - # If the daemon can reload its configuration without - # restarting (for example, when it is sent a SIGHUP), - # then implement that here. - # - start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME - return 0 + $KNOTC reload >/dev/null + return $? } case "$1" in - start) - [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" - do_start - case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac - ;; - stop) + ;; + stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in - 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - #reload|force-reload) - # - # If do_reload() is not implemented then leave this commented out - # and leave 'force-reload' as an alias for 'restart'. - # - #log_daemon_msg "Reloading $DESC" "$NAME" - #do_reload - #log_end_msg $? - #;; - restart|force-reload) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # + status) + STATUS=$($KNOTC status 2>&1 >/dev/null) + RETVAL=$? + if [ $RETVAL = 0 ]; then + log_success_msg "$NAME is running" + else + log_failure_msg "$NAME is not running ($STATUS)" + fi + exit $RETVAL + ;; + reload|force-reload) + [ "$VERBOSE" != no ] && log_daemon_msg "Reloading $DESC" "$NAME" + do_reload + [ "$VERBOSE" != no ] && log_end_msg $? + ;; + restart) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in - 0|1) + 0|1) do_start case "$?" in - 0) log_end_msg 0 ;; - 1) log_end_msg 1 ;; # Old process is still running - *) log_end_msg 1 ;; # Failed to start + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start esac ;; - *) + *) # Failed to stop log_end_msg 1 ;; esac ;; - *) - #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2 exit 3 ;; esac |