#!/bin/sh

### BEGIN INIT INFO
# Provides:          sw-cp-server
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     1 2 3 4 5
# Default-Stop:      0 6
# Short-Description: SWsoft control panels server
# Description:       HTTP server for SWsoft control panels based on lighttp
### END INIT INFO

. /etc/rc.d/init.d/functions

# A function to stop a program.
# Adapted from FC5
sw_killproc () {
    local RC killlevel= base pid pid_file=

    RC=0
    # Test syntax.
    if [ "$#" -eq 0 ]; then
            echo $"Usage: killproc [-p pidfile] {program} [signal]"
            return 1
    fi
    if [ "$1" = "-p" ]; then
            pid_file=$2
            pid=`cat $pid_file`
            shift 2
    fi

    base=${1##*/}

    # check for second arg to be kill level
    [ -n "${2:-}" ] && killlevel=$2

    if test -d /proc/$pid; then
        kill $killlevel $pid >/dev/null 2>&1
        RC=$?
    else
        RC=7 # Program is not running
    fi

    rm -f $pid_file
    return $RC
}

sw_cpserver_start () {
    daemon $DAEMON $DAEMONARGS
}

sw_cpserver_stop () {
    sw_killproc -p $PIDFILE $DAEMON -$1
}

sw_rc_status ()
{
    if [ $? -eq 0 ]; then
	success
    else
	failure
    fi
}

DAEMON=/usr/sbin/sw-cp-serverd
test -x $DAEMON || exit 5

DESC="SWsoft control panels server"

PIDFILE=/var/lib/sw-cp-server/sw-cp-server.pid

CONFIGFILE=/etc/sw-cp-server/config
DAEMONARGS="-f $CONFIGFILE"

case "$1" in
    start)
        echo -n "Starting $DESC..."
        sw_cpserver_start
        sw_rc_status
        ;;
    stop)
        echo -n "Stoppping $DESC..."
        sw_cpserver_stop TERM
        sw_rc_status
        ;;
    reload|force-reload)
        echo -n "Reloading $DESC's configuration..."
        sw_cpserver_stop HUP
        sw_rc_status
        ;;
    restart)
        echo -n "Restarting $DESC..."
	sw_cpserver_stop TERM
	sw_cpserver_start
        sw_rc_status
        ;;
    *)
        echo "Usage: $0 (start|stop|reload|force-reload|restart)"
        exit 1
esac

