1#!/bin/bash
2
3DIR=/var/run/dnscheck
4USER=dnscheck
5DISPATCHER=/usr/bin/dnscheck-dispatcher
6PIDFILE=dnscheck_dispatcher.pid
7
8check_running () {
9	PID=`ps ax|grep dnscheck-disp|grep -v grep|awk '{print $1}'`
10	if [ "X${PID}" == "X" ];then
11		return 0
12	fi
13
14	return 1
15}
16
17start () {
18    check_running
19    if [ $? -eq 1 ];then
20	echo "Already running"
21	exit
22    fi
23
24    echo Starting $DISPATCHER
25    if [ \! -d $DIR ];then
26        ( mkdir $DIR && chown $USER $DIR ) || exit 1
27    fi
28
29    su $USER $DISPATCHER
30}
31
32stop () {
33    echo Stopping $DISPATCHER
34    check_running
35    if [ $? -eq 0 ]; then
36	echo "Not running"
37	exit
38    fi
39    pid=`cat $DIR/$PIDFILE`
40    kill $pid
41    sleep 1
42    i=0
43    while ( kill -0 $pid 2> /dev/null && [ $i < 12]); do
44        echo 'Waiting for dispatcher to exit...'
45        i=`expr $i + 1`
46        sleep 5
47    done
48    if [ $i -eq 12 ]; then
49        echo 'Timeout. Killing dispatcher harder.'
50        kill -9 $pid
51    fi
52}
53
54case $1 in
55    'start' )
56        start
57        ;;
58    'stop' )
59        stop
60        ;;
61    'restart' )
62        stop
63        start
64        ;;
65esac
66