chiark / gitweb /
packaging fixes
[hippotat.git] / debian / hippotat.hippotatd.init
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
13 DAEMON=/usr/sbin/hippotatd
14 MASTER_CONFIG=/etc/hippotat/master.cfg
15 USER=Debian-hippotat
16 PIDFILE=/var/run/hippotat/hippotatd.pid
17 LOGFACILITY=daemon
18 CHECK_FIREWALL=true
19 # HIPPOTATD_ARGS
20 AS_USER=as_user_userv
21 DESCRIPTION='Asinine IP over HTTP server'
22 if type -p authbind >/dev/null 2>&1; then AUTHBIND=authbind; fi
23
24 test -e /etc/default/hippotatd &&
25 . /etc/default/hippotatd
26
27 set -e
28
29 test -f $DAEMON || exit 0
30 egrep '^[^      #]' $MASTER_CONFIG >/dev/null 2>&1 || exit 0
31
32 . /lib/lsb/init-functions
33
34 as_user_userv () {
35         userv --override '
36                 execute-from-path
37                 no-suppress-args
38         ' $USER "$@"
39 }
40
41 ssd () {
42         set +e
43         start-stop-daemon --quiet --user $USER --pidfile=$PIDFILE "$@"
44         rc=$?
45         set -e
46 }
47 ensure_dirs () {
48         pidfiledir=${PIDFILE%/*}
49         if test -d ${pidfiledir}; then return; fi
50         mkdir -m 755 $pidfiledir
51         chown $USER $pidfiledir
52 }
53
54 dump_firewall () {
55         iptables -L -v -n
56 }
57
58 print_config () {
59         $AS_USER $DAEMON $HIPPOTATD_ARGS --print-config "$1"
60 }
61
62 check_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
71 do_start () {
72         check_firewall
73         ensure_dirs
74         ssd     --chuid $USER --start --startas                 \
75                 $AUTHBIND $DAEMON --daemon --pidfile=$PIDFILE   \
76                 --syslog-facility=$LOGFACILITY $HIPPOTATD_ARGS
77 }
78 do_stop () {
79         ssd     --stop --oknodo --retry 5
80 }
81
82 case "$1" in
83 start)
84         log_daemon_msg "Starting $DESCRIPTION" hippotatd
85         do_start
86         log_end_msg $rc
87         ;;
88
89 stop)
90         log_daemon_msg "Stopping $DESCRIPTION" hippotatd
91         do_stop
92         log_end_msg $rc
93         ;;
94
95 restart|force-reload)
96         log_daemon_msg "Restarting $DESCRIPTION" hippotatd
97         do_stop
98         sleep 1
99         do_start
100         log_end_msg $rc
101         ;;
102
103 reload)
104         log_failure_msg "Cannot reload hippotat - need restart"
105         exit 1
106         ;;
107
108 *)
109         echo >&2 "$0: unknown action $1"
110         exit 1
111         ;;
112
113 esac
114
115 exit 0