summaryrefslogtreecommitdiff
path: root/extra/lighttpd/lighttpd.rc.d
blob: 88f0a1474322c9b37a6e67a97ff6c9f68776d4c9 (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/bash

. /etc/rc.conf
. /etc/rc.d/functions


pid_file='/var/run/lighttpd/lighttpd-angel.pid'

get_pid() {
	if [ -r "${pid_file}" ]; then
		cat "${pid_file}"
	else
		pgrep -f /usr/sbin/lighttpd-angel
	fi
}

test_config() {
	stat_busy 'Checking configuration'
	if [ $(id -u) -ne 0 ]; then
		stat_append '(This script must be run as root)'
		stat_die
	fi

	if [ ! -r /etc/lighttpd/lighttpd.conf ]; then
		stat_append '(/etc/lighttpd/lighttpd.conf not found)'
		stat_die
	fi

	/usr/sbin/lighttpd -t -f /etc/lighttpd/lighttpd.conf >/dev/null 2>&1
	if [ $? -gt 0 ]; then
		stat_append '(error in /etc/lighttpd/lighttpd.conf)'
		stat_die
	fi

	local piddir=$(dirname "${pid_file}")
	if [ ! -d "${piddir}" ]; then
		install -d -m755 -o http -g http "${piddir}"
	fi

	stat_done
}

start() {
	stat_busy 'Starting lighttpd'

	local PID=$(get_pid)
	if [ -z "$PID" ]; then
		nohup /usr/sbin/lighttpd-angel -D -f /etc/lighttpd/lighttpd.conf >>/var/log/lighttpd/lighttpd-angel.log 2>&1 &
		if [ $? -gt 0 ]; then
			stat_die
		else
			echo $! > "${pid_file}"
			add_daemon lighttpd
			stat_done
		fi
	else
		stat_die
	fi
}

stop() {
	stat_busy 'Stopping lighttpd'
	local PID=$(get_pid)
	[ -n "$PID" ] && kill $PID &> /dev/null
	if [ $? -gt 0 ]; then
		stat_fail
	else
		[ -f "${pid_file}" ] && rm -f "${pid_file}"
		rm_daemon lighttpd
		stat_done
	fi
}

gracefull-stop() {
	stat_busy 'Stopping lighttpd gracefully'
	local PID=$(get_pid)
	[ -n "$PID" ] && kill -INT $PID &> /dev/null
	if [ $? -gt 0 ]; then
		stat_fail
	else
		[ -f "${pid_file}" ] && rm -f "${pid_file}"
		rm_daemon lighttpd
		stat_done
	fi
}

reload() {
	stat_busy 'Reloading lighttpd'
	local PID=$(get_pid)
	[ -n "$PID" ] && kill -HUP $PID &> /dev/null
	if [ $? -gt 0 ]; then
		stat_die
	else
		stat_done
	fi
}


case "$1" in
	start)
		test_config
		start
		;;
	stop)
		test_config
		stop
		;;
	gracefull-stop)
		test_config
		stop
		;;
	reload)
		test_config
		reload
		;;
	restart)
		test_config
		stop
		while [ -n "$(get_pid)" ]; do
			sleep 1
		done
		start
		;;
	status)
		stat_busy 'Checking lighttpd status'
		ck_status lighttpd
		;;
	*)
	echo "usage: $0 {start|stop|gracefull-stop|reload|restart|status}"
esac

exit 0