]>
Commit | Line | Data |
---|---|---|
59f6c21a | 1 | #!/bin/sh |
2 | # | |
7dbb2b59 | 3 | # pound |
59f6c21a | 4 | # |
5 | # chkconfig: 345 85 15 | |
6 | # description: reverse-proxy and load-balancer | |
7 | # | |
8 | ||
9 | # Source function library | |
10 | . /etc/rc.d/init.d/functions | |
11 | ||
12 | # Get network config | |
13 | . /etc/sysconfig/network | |
14 | ||
f33820c6 ER |
15 | # List of instances to start. |
16 | POUND_INSTANCES="pound" | |
17 | ||
59f6c21a | 18 | # Get service config |
19 | [ -f /etc/sysconfig/pound ] && . /etc/sysconfig/pound | |
20 | ||
21 | # Check that networking is up. | |
22 | if is_yes "${NETWORKING}"; then | |
1a0ae1a4 | 23 | if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then |
74738d13 | 24 | msg_network_down pound |
25 | exit 1 | |
26 | fi | |
59f6c21a | 27 | else |
74738d13 | 28 | exit 0 |
59f6c21a | 29 | fi |
30 | ||
e23f2808 ER |
31 | configtest() { |
32 | local instance="$1" | |
33 | pound -c -f /etc/pound/$instance.cfg > /dev/null | |
34 | } | |
35 | ||
36 | ||
19b8f25f ER |
37 | # check if the $1 instance is up |
38 | is_up() { | |
39 | local instance="$1" | |
40 | local pidfile=/var/run/pound/$instance.pid | |
41 | [ -f $pidfile ] || return 1 | |
42 | local pid=$(cat $pidfile) | |
43 | kill -0 $pid 2>/dev/null | |
44 | return $? | |
45 | } | |
46 | ||
e23f2808 ER |
47 | # check if any of the instances are up |
48 | any_up() { | |
49 | local ret=1 instance pidfile | |
50 | ||
51 | for pidfile in /var/run/pound/*.pid; do | |
52 | [ -f "$pidfile" ] || continue | |
53 | instance=${pidfile#/var/run/pound/} | |
54 | instance=${instance%.pid} | |
55 | is_up $instance || continue | |
56 | ret=0 | |
57 | done | |
58 | ||
59 | return $ret | |
60 | } | |
61 | ||
62 | # check if all of the instances are up | |
63 | all_up() { | |
64 | local ret=0 instance pidfile | |
65 | ||
66 | for pidfile in /var/run/pound/*.pid; do | |
67 | [ -f "$pidfile" ] || continue | |
68 | instance=${pidfile#/var/run/pound/} | |
69 | instance=${instance%.pid} | |
70 | is_up $instance && continue | |
71 | ret=1 | |
72 | done | |
73 | ||
74 | return $ret | |
75 | } | |
76 | ||
50de9853 | 77 | start() { |
e23f2808 ER |
78 | local ret started=0 found=0 instance |
79 | ||
19b8f25f | 80 | # Check if the service is already running? |
e23f2808 ER |
81 | if ! all_up; then |
82 | msg_starting "Pound"; started | |
19b8f25f | 83 | for instance in $POUND_INSTANCES; do |
e23f2808 ER |
84 | show "Starting Pound instance %s" "$instance" |
85 | if is_up $instance; then | |
86 | started | |
87 | continue | |
88 | fi | |
89 | ||
4ee2ad17 ER |
90 | PIDFILE=/var/run/pound/$instance.pid |
91 | start-stop-daemon --start \ | |
e23f2808 ER |
92 | --exec /usr/sbin/pound \ |
93 | --pidfile $PIDFILE -- -v -f /etc/pound/$instance.cfg -p $PIDFILE | |
19b8f25f | 94 | ret=$? |
e23f2808 | 95 | |
4ee2ad17 ER |
96 | if [ $ret -eq 0 ]; then |
97 | ok | |
5208430f ER |
98 | RETVAL=$ret |
99 | started=1 | |
e23f2808 | 100 | found=1 |
4ee2ad17 | 101 | else |
f4b0626e | 102 | fail |
5208430f | 103 | fi |
19b8f25f | 104 | done |
19b8f25f | 105 | |
e23f2808 | 106 | [ $RETVAL -eq 0 ] && touch /var/lock/subsys/pound |
19b8f25f ER |
107 | else |
108 | msg_already_running "Pound" | |
109 | fi | |
50de9853 ER |
110 | } |
111 | ||
112 | stop() { | |
e23f2808 | 113 | local ret instance |
74738d13 | 114 | # Stop daemons. |
e23f2808 | 115 | if any_up; then |
44ac793d | 116 | msg_stopping "Pound"; started |
19b8f25f ER |
117 | for instance in $POUND_INSTANCES; do |
118 | is_up $instance || continue | |
e23f2808 | 119 | show "Stopping Pound instance %s" "$instance"; busy |
19b8f25f ER |
120 | killproc --pidfile pound/$instance.pid pound |
121 | ret=$? | |
122 | done | |
e23f2808 | 123 | rm -f /var/lock/subsys/pound > /dev/null 2>&1 |
19b8f25f ER |
124 | else |
125 | msg_not_running "Pound" | |
126 | fi | |
50de9853 ER |
127 | } |
128 | ||
194b939d | 129 | restart() { |
e23f2808 ER |
130 | local instance |
131 | ||
132 | # make up list of configured and up instances | |
133 | local list | |
134 | show "Checking configuration"; busy | |
135 | for instance in $POUND_INSTANCES; do | |
136 | # skip ones whose config fails | |
137 | configtest $instance || continue | |
138 | list="$list $instance" | |
139 | done | |
140 | ok | |
141 | ||
142 | POUND_INSTANCES=$list | |
194b939d ER |
143 | |
144 | stop | |
145 | start | |
146 | } | |
147 | ||
19b8f25f ER |
148 | if [ "$1" != status -a "$2" ]; then |
149 | POUND_INSTANCES="$2" | |
19b8f25f ER |
150 | fi |
151 | ||
e23f2808 ER |
152 | pound_status() { |
153 | local stat pidfile instance | |
154 | ||
19b8f25f ER |
155 | nls "Configured Pound instances:" |
156 | echo " $POUND_INSTANCES" | |
157 | nls "Currently active Pound instances:" | |
158 | stat=1 | |
159 | for pidfile in /var/run/pound/*.pid; do | |
160 | [ -f "$pidfile" ] || continue | |
161 | instance=${pidfile#/var/run/pound/} | |
162 | instance=${instance%.pid} | |
163 | is_up $instance && echo -n " $instance($(cat $pidfile))" | |
164 | stat=0 | |
165 | done | |
166 | echo "" | |
167 | exit $stat | |
e23f2808 ER |
168 | } |
169 | ||
170 | RETVAL=0 | |
171 | # See how we were called. | |
172 | case "$1" in | |
173 | start) | |
174 | start | |
175 | ;; | |
176 | stop) | |
177 | stop | |
178 | ;; | |
5917fcaf | 179 | restart|force-reload) |
194b939d | 180 | restart |
59f6c21a | 181 | ;; |
0b650d78 ER |
182 | flush-logs) |
183 | if [ -f /var/lock/subsys/pound ]; then | |
184 | for instance in $POUND_INSTANCES; do | |
185 | show "Rotating Pound logs for %s instance" $instance | |
186 | killproc --pidfile /var/run/pound/$instance.pid pound -USR1 | |
187 | ret=$? | |
188 | if [ $ret != 0 ]; then | |
189 | RETVAL=$ret | |
190 | fi | |
191 | done | |
192 | else | |
193 | msg_not_running "Pound" | |
194 | RETVAL=7 | |
195 | fi | |
196 | ;; | |
e890afb0 ER |
197 | status) |
198 | pound_status | |
199 | ;; | |
59f6c21a | 200 | *) |
e890afb0 | 201 | msg_usage "$0 {start|stop|restart|force-reload|flush-logs|status} [INSTANCE NAMES]" |
5917fcaf | 202 | exit 3 |
59f6c21a | 203 | esac |
204 | ||
205 | exit $RETVAL |