init script fixes
[hippotat] / debian / hippotat.hippotatd.init
CommitLineData
6a1ac5de
IJ
1#!/bin/sh
2
3### BEGIN INIT INFO
4# Provides: hippotatd
5# Required-Start: $syslog $network userv
6# Required-Stop: $syslog $network
7# Default-Start: 2 3 4 5
8# Default-Stop: 0 1 6
9# Short-Description: hippotatd
10# Description: Asinine IP over HTTP server
11### END INIT INFO
12
1d33eef3 13DAEMON=/usr/sbin/hippotatd
6a1ac5de
IJ
14MASTER_CONFIG=/etc/hippotat/master.cfg
15USER=Debian-hippotat
16PIDFILE=/var/run/hippotat/hippotatd.pid
17LOGFACILITY=daemon
a60dab5b 18CHECK_FIREWALL=true
6a1ac5de 19# HIPPOTATD_ARGS
a60dab5b 20AS_USER=as_user_userv
05025919 21DESCRIPTION='Asinine IP over HTTP server'
b3d8b597 22if type authbind >/dev/null 2>&1; then AUTHBIND=authbind; fi
6a1ac5de 23
e7f20f23 24test -e /etc/default/hippotatd &&
6a1ac5de
IJ
25. /etc/default/hippotatd
26
e7f20f23
IJ
27set -e
28
6a1ac5de 29test -f $DAEMON || exit 0
477169b1 30egrep '^[^ #]' $MASTER_CONFIG >/dev/null 2>&1 || exit 0
6a1ac5de
IJ
31
32. /lib/lsb/init-functions
33
a60dab5b
IJ
34as_user_userv () {
35 userv --override '
36 execute-from-path
37 no-suppress-args
38 ' $USER "$@"
39}
40
6a1ac5de
IJ
41ssd () {
42 set +e
1d33eef3 43 start-stop-daemon --quiet --user $USER --pidfile=$PIDFILE "$@"
6a1ac5de
IJ
44 rc=$?
45 set -e
46}
47ensure_dirs () {
48 pidfiledir=${PIDFILE%/*}
49 if test -d ${pidfiledir}; then return; fi
50 mkdir -m 755 $pidfiledir
51 chown $USER $pidfiledir
52}
53
a60dab5b
IJ
54dump_firewall () {
55 iptables -L -v -n
56}
57
58print_config () {
59 $AS_USER $DAEMON $HIPPOTATD_ARGS --print-config "$1"
60}
61
62check_firewall () {
63 vnetwork=$(print_config vnetwork)
64 if dump_firewall | fgrep " $vnetwork " >/dev/null; then :; else
65 log_failure_msg \
66 "no entry in firewall for insecure vnetwork $vnetwork"
67 exit 1
68 fi
69}
70
6a1ac5de 71do_start () {
a60dab5b 72 check_firewall
6a1ac5de 73 ensure_dirs
b3d8b597
IJ
74 ssd --chuid $USER --start \
75 --startas /bin/sh -- -ec '"$@"' x \
25367ad4 76 $AUTHBIND $DAEMON --daemon --pidfile=$PIDFILE \
6a1ac5de
IJ
77 --syslog-facility=$LOGFACILITY $HIPPOTATD_ARGS
78}
79do_stop () {
1d33eef3 80 ssd --stop --oknodo --retry 5
6a1ac5de
IJ
81}
82
83case "$1" in
84start)
05025919 85 log_daemon_msg "Starting $DESCRIPTION" hippotatd
6a1ac5de
IJ
86 do_start
87 log_end_msg $rc
b3d8b597 88 exit $rc
6a1ac5de
IJ
89 ;;
90
91stop)
05025919 92 log_daemon_msg "Stopping $DESCRIPTION" hippotatd
6a1ac5de
IJ
93 do_stop
94 log_end_msg $rc
b3d8b597 95 exit $rc
6a1ac5de
IJ
96 ;;
97
98restart|force-reload)
05025919 99 log_daemon_msg "Restarting $DESCRIPTION" hippotatd
6a1ac5de
IJ
100 do_stop
101 sleep 1
102 do_start
103 log_end_msg $rc
104 ;;
105
106reload)
107 log_failure_msg "Cannot reload hippotat - need restart"
108 exit 1
109 ;;
110
111*)
112 echo >&2 "$0: unknown action $1"
113 exit 1
114 ;;
115
116esac
117
118exit 0