From 03536301f8f2bc7edea9df871b1524c2ed50eec4 Mon Sep 17 00:00:00 2001 From: Andrew Bettison Date: Wed, 23 Jan 2013 14:06:56 +1030 Subject: [PATCH] Debian init script to start/stop system-wide servald --- Debian/etc/default/serval-dna | 1 + Debian/etc/init.d/serval-dna | 130 ++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 Debian/etc/default/serval-dna create mode 100755 Debian/etc/init.d/serval-dna diff --git a/Debian/etc/default/serval-dna b/Debian/etc/default/serval-dna new file mode 100644 index 00000000..93222952 --- /dev/null +++ b/Debian/etc/default/serval-dna @@ -0,0 +1 @@ +START_DAEMON=yes diff --git a/Debian/etc/init.d/serval-dna b/Debian/etc/init.d/serval-dna new file mode 100755 index 00000000..64fcbc16 --- /dev/null +++ b/Debian/etc/init.d/serval-dna @@ -0,0 +1,130 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: serval-dna +# Required-Start: $local_fs +# Required-Stop: $local_fs +# Should-Start: +# Should-Stop: +# X-Start-Before: +# X-Stop-After: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Serval DNA daemon +# Description: Daemon for providing Serval Mesh network services +### END INIT INFO + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +SCRIPTNAME=serval-dna +DESC="Serval DNA daemon" +NAME=servald +USER=serval + +DEFAULTFILE=/etc/default/$SCRIPTNAME +DEFAULTFILE="${0%/*}/../default/$SCRIPTNAME" +DAEMON=/usr/local/sbin/$NAME +INSTANCEDIR=/var/local/serval/instance +SCRIPTPATH=/etc/init.d/$SCRIPTNAME + +. /lib/lsb/init-functions +test -f "$DEFAULTFILE" && . "$DEFAULTFILE" + +test -x "$DAEMON" || exit 0 + +if [ -z "$CONFFILE" ]; then + CONFFILE="$INSTANCEDIR/serval.conf" +fi +if [ -z "$PIDFILE" ]; then + PIDFILE="$INSTANCEDIR/servald.pid" +fi + +if [ ! "$START_DAEMON" = "yes" -a "$1" = "start" ]; then + log_warning_msg "Not starting $DESC, disabled via $DEFAULTFILE" + exit 0 +fi + +if [ ! -e "$CONFFILE" ]; then + log_failure_msg "Cannot start $DESC, $CONFFILE not found" + exit 6 +fi + +if ! id $USER >/dev/null 2>&1; then + log_failure_msg "Cannot start $DESC, user '$USER' does not exist" + exit 1 +fi + +SERVALINSTANCE_PATH="$INSTANCEDIR" +export SERVALINSTANCE_PATH + +daemon_start() { + start-stop-daemon --chuid $USER --exec "$DAEMON" --user $USER --name $NAME --pidfile "$PIDFILE" --start -- start >/dev/null +} + +daemon_stop() { + "$DAEMON" stop >/dev/null + #start-stop-daemon --chuid $USER --exec "$DAEMON" --user $USER --name $NAME --pidfile "$PIDFILE" --signal TERM --retry 2 --stop -- stop +} + +daemon_status() { + "$DAEMON" status | grep -q '^status:running$' +} + +case "$1" in +start) + log_daemon_msg "Starting $DESC" "$NAME" + if daemon_status; then + log_progress_msg "(already running)" + log_end_msg 0 + elif daemon_start; then + log_end_msg 0 + else + log_end_msg 1 + exit 1 + fi + ;; + +status) + if daemon_status; then + log_success_msg "$NAME is running" + else + log_failure_msg "$NAME is not running" + fi + ;; + +stop) + log_daemon_msg "Stopping $DESC" "$NAME" + if daemon_stop; then + log_end_msg 0 + else + log_progress_msg "(not running)" + log_end_msg 1 + exit 1 + fi + ;; + +force-reload|restart) + log_daemon_msg "Restarting $DESC" "$NAME" + if ! daemon_stop; then + log_end_msg 1 + exit 1 + fi + sleep 1 + if daemon_start; then + log_end_msg 0 + else + log_end_msg 1 + exit 1 + fi + ;; + +*) + log_warning_msg "Usage: $SCRIPTPATH {start|stop|restart|force-reload}" + log_warning_msg " start - starts system-wide $DESC" + log_warning_msg " stop - stops system-wide $DESC" + log_warning_msg " restart, force-reload - starts a new system-wide $DESC" + exit 1 + ;; +esac + +exit 0 + +# vim:sw=4: