summaryrefslogtreecommitdiff
path: root/debian/bitz-server.init
blob: ade8b71f28a3683a5c15e4c626960f82301717d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/sh

### BEGIN INIT INFO
# Provides:          bitz-server
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Bitz ICAP server
# Description:       ICAP server (RFC 3507)
### END INIT INFO
#
#  Written 2014 by Jörg Frings-Fürst <debian@jff-webhosting.net>.
#  Licensed under GPL-3+.
#
###

DESC="bitz ICAP server"
NAME="bitz-server"

DAEMON="/usr/sbin/$NAME"
PIDFILE=/var/run/$NAME.pid

PATH=/sbin:/usr/sbin:/bin:/usr/bin
SCRIPT=/etc/init.d/$NAME

BITZ-SERVER_OPTS="--config=/etc/bitz/bitz-server.conf"

# Are we making sense?
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Define all LSB log_* functions.
. /lib/lsb/init-functions

# Start downtimed.
do_start()
{
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
			--exec $DAEMON --test > /dev/null \
		|| return 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
			--exec $DAEMON -- $DOWNTIMED_OPTS \
		|| return 2

	# Return status:
	#   0    daemon has been started
	#   1    daemon was already running
	#   2    daemon could not be started
}

# Halt downtimed.
do_stop()
{
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
			--pidfile $PIDFILE --exec $DAEMON
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2

	rm -f $PIDFILE
	return "$RETVAL"

	# Return status:
	#   0      daemon has been stopped
	#   1      daemon was already stopped
	#   2      daemon could not be stopped
	#   other  daemon reported some other failure
}

# Reloading is a no-do in the standard case, when logging is
# done via the syslog service. Only if $DOWNTIMED_OPTS states
# a separate logging file, then a SIGHUP will result in the
# daemon releasing the file for rotation, or a similar action.

do_reload() {
	start-stop-daemon --stop --signal 1 --quiet \
			--pidfile $PIDFILE --exec $DAEMON
	return 0
}

case "$1" in
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  status)
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
  reload|force-reload)
	log_daemon_msg "Reloading $DESC" "$NAME"
	do_reload
	log_end_msg $?
	;;
  restart)
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Still running.
			*) log_end_msg 1 ;; # Failure in starting.
		esac
		;;
	  *)
	  	# Failure in ending service.
		log_end_msg 1
		;;
	esac
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2
	exit 3
	;;
esac

: