chiark / gitweb /
init script: copy from python version
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 25 Sep 2022 15:18:08 +0000 (16:18 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 25 Sep 2022 15:18:08 +0000 (16:18 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
debian/hippotat.hippotatd.init [new file with mode: 0644]

diff --git a/debian/hippotat.hippotatd.init b/debian/hippotat.hippotatd.init
new file mode 100644 (file)
index 0000000..c8b3dc2
--- /dev/null
@@ -0,0 +1,118 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:            hippotatd
+# Required-Start:      $syslog $network userv
+# Required-Stop:       $syslog $network
+# Default-Start:       2 3 4 5
+# Default-Stop:                0 1 6
+# Short-Description:   hippotatd
+# Description:          Asinine IP over HTTP server
+### END INIT INFO
+
+DAEMON=/usr/sbin/hippotatd
+MASTER_CONFIG=/etc/hippotat/master.cfg
+USER=Debian-hippotat
+PIDFILE=/var/run/hippotat/hippotatd.pid
+LOGFACILITY=daemon
+CHECK_FIREWALL=true
+# HIPPOTATD_ARGS
+AS_USER=as_user_userv
+DESCRIPTION='Asinine IP over HTTP server'
+if type authbind >/dev/null 2>&1; then AUTHBIND=authbind; fi
+
+test -e /etc/default/hippotatd &&
+. /etc/default/hippotatd
+
+set -e
+
+test -f $DAEMON || exit 0
+egrep '^[^     #]' $MASTER_CONFIG >/dev/null 2>&1 || exit 0
+
+. /lib/lsb/init-functions
+
+as_user_userv () {
+       userv --override '
+               execute-from-path
+               no-suppress-args
+       ' $USER "$@"
+}
+
+ssd () {
+       set +e
+       start-stop-daemon --quiet --user $USER --pidfile=$PIDFILE "$@"
+       rc=$?
+       set -e
+}
+ensure_dirs () {
+       pidfiledir=${PIDFILE%/*}
+       if test -d ${pidfiledir}; then return; fi
+       mkdir -m 755 $pidfiledir
+       chown $USER $pidfiledir
+}
+
+dump_firewall () {
+       iptables -L -v -n
+}
+
+print_config () {
+       $AS_USER $DAEMON $HIPPOTATD_ARGS --print-config "$1"
+}
+
+check_firewall () {
+       vnetwork=$(print_config vnetwork)
+       if dump_firewall | fgrep " $vnetwork " >/dev/null; then :; else
+               log_failure_msg \
+ "no entry in firewall for insecure vnetwork $vnetwork"
+               exit 1
+       fi
+}
+
+do_start () {
+       check_firewall
+       ensure_dirs
+       ssd     --chuid $USER --start                           \
+               --startas /bin/sh -- -ec '"$@"' x               \
+               $AUTHBIND $DAEMON --daemon --pidfile=$PIDFILE   \
+               --syslog-facility=$LOGFACILITY $HIPPOTATD_ARGS
+}
+do_stop () {
+       ssd     --stop --oknodo --retry 5
+}
+
+case "$1" in
+start)
+       log_daemon_msg "Starting $DESCRIPTION" hippotatd
+       do_start
+       log_end_msg $rc
+       exit $rc
+       ;;
+
+stop)
+       log_daemon_msg "Stopping $DESCRIPTION" hippotatd
+       do_stop
+       log_end_msg $rc
+       exit $rc
+       ;;
+
+restart|force-reload)
+       log_daemon_msg "Restarting $DESCRIPTION" hippotatd
+       do_stop
+       sleep 1
+       do_start
+       log_end_msg $rc
+       ;;
+
+reload)
+       log_failure_msg "Cannot reload hippotat - need restart"
+       exit 1
+       ;;
+
+*)
+       echo >&2 "$0: unknown action $1"
+       exit 1
+       ;;
+
+esac
+
+exit 0