chiark / gitweb /
logevent_is_boringtwisted: break out as a function from LogNotBoringTwisted (nfc)
[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 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                           \
75                 --startas /bin/sh -- -ec '"$@"' x               \
76                 $AUTHBIND $DAEMON --daemon --pidfile=$PIDFILE   \
77                 --syslog-facility=$LOGFACILITY $HIPPOTATD_ARGS
78 }
79 do_stop () {
80         ssd     --stop --oknodo --retry 5
81 }
82
83 case "$1" in
84 start)
85         log_daemon_msg "Starting $DESCRIPTION" hippotatd
86         do_start
87         log_end_msg $rc
88         exit $rc
89         ;;
90
91 stop)
92         log_daemon_msg "Stopping $DESCRIPTION" hippotatd
93         do_stop
94         log_end_msg $rc
95         exit $rc
96         ;;
97
98 restart|force-reload)
99         log_daemon_msg "Restarting $DESCRIPTION" hippotatd
100         do_stop
101         sleep 1
102         do_start
103         log_end_msg $rc
104         ;;
105
106 reload)
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
116 esac
117
118 exit 0