chiark / gitweb /
docs: install docs wip
[hippotat.git] / debian / hippotat-server.hippotatd.init
1 #!/bin/sh
2
3 ### BEGIN INIT INFO
4 # Provides:             hippotatd
5 # Required-Start:       $syslog $network $local_fs userv
6 # Required-Stop:        $syslog $network $local_fs
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 MAIN_CONFIG=/etc/hippotat/main.cfg
15 USER=_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 authbind >/dev/null 2>&1; then AUTHBIND=authbind; fi
23
24 test -e /etc/default/hippotatd && . /etc/default/hippotatd
25
26 set -e
27
28 test -f $DAEMON || exit 0
29 egrep '^[^      #]' $MAIN_CONFIG >/dev/null 2>&1 || exit 0
30
31 . /lib/lsb/init-functions
32
33 as_user_userv () {
34         userv --override '
35                 execute-from-path
36                 no-suppress-args
37         ' $USER "$@"
38 }
39
40 ssd () {
41         set +e
42         start-stop-daemon --quiet --user $USER --pidfile=$PIDFILE "$@"
43         rc=$?
44         set -e
45 }
46 ensure_dirs () {
47         pidfiledir=${PIDFILE%/*}
48         if test -d ${pidfiledir}; then return; fi
49         mkdir -m 755 $pidfiledir
50         chown $USER $pidfiledir
51 }
52
53 dump_firewall () {
54         iptables -L -v -n
55 }
56
57 print_config () {
58         $AS_USER $DAEMON $HIPPOTATD_ARGS --print-config "$1"
59 }
60
61 check_firewall () {
62         vnetwork=$(print_config vnetwork)
63         if dump_firewall | fgrep " $vnetwork " >/dev/null; then :; else
64                 log_failure_msg \
65  "no entry in firewall for insecure vnetwork $vnetwork"
66                 exit 1
67         fi
68 }
69
70 do_start () {
71         check_firewall
72         ensure_dirs
73         ssd     --chuid $USER --start                           \
74                 --startas /bin/sh -- -ec '"$@"' x               \
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         exit $rc
88         ;;
89
90 stop)
91         log_daemon_msg "Stopping $DESCRIPTION" hippotatd
92         do_stop
93         log_end_msg $rc
94         exit $rc
95         ;;
96
97 restart|force-reload)
98         log_daemon_msg "Restarting $DESCRIPTION" hippotatd
99         do_stop
100         sleep 1
101         do_start
102         log_end_msg $rc
103         ;;
104
105 reload)
106         log_failure_msg "Cannot reload hippotat - need restart"
107         exit 1
108         ;;
109
110 *)
111         echo >&2 "$0: unknown action $1"
112         exit 1
113         ;;
114
115 esac
116
117 exit 0