#!/bin/sh
#
# License: Copyright SpinetiX. This file is licensed
#          under the terms of the GNU General Public License version 2.
#          This program is licensed "as is" without any warranty of any
#          kind, whether express or implied.
#
# Copyright 1999-2003 MontaVista Software, Inc.
# Copyright 2002, 2003, 2004 Sony Corporation
# Copyright 2002, 2003, 2004 Matsushita Electric Industrial Co., Ltd.
#
### BEGIN INIT INFO
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 5
# Default-Stop:
# Short-Description: Starting/stopping SpinetiX's license check daemon
# Description: Starting/stopping SpinetiX's license check daemon
### END INIT INFO

# Init script information
NAME=licensecheck
DESC="SPX license check"

# Individual Daemon information
DAEMON=/usr/bin/licensecheck
ARGS="-w"
BASENAME=licensecheck
PIDFILE=/run/${BASENAME}/${BASENAME}.pid
UPDATE_CONFIG=/usr/libexec/licensecheck/update-config

# Load init script configuration
[ -f /etc/default/$NAME ] && . /etc/default/$NAME

# Source the init script functions
. /etc/init.d/functions

# The command to update the configuration whenever the license features change
FEATURES_CHANGE_CMD="$UPDATE_CONFIG 2>& 1 | logger -t licensecheck-update-config -p daemon.info"

# Verify daemons are installed
if [ ! -x $DAEMON -a "$1" != "stop" ]; then
    echo -n "Not starting $DESC $NAME, $DAEMON not installed"
    warning
    echo
    exit 0
fi

start() {
    local RET ERROR=

    echo -n "Starting $DESC: "

    echo -n "$NAME "

    echo -n " init license file, "
    $UPDATE_CONFIG --init

    echo -n " start daemon "
    $DAEMON $ARGS -x "$FEATURES_CHANGE_CMD"
    RET=$?
    if [ $RET -eq 0 ]; then
        success; echo
    else
        failure; echo
        return 1
    fi
        
    return 0
}

stop () {
    local RET ERROR=

    echo -n "Stopping $DESC: $NAME "
    $DAEMON -k
    RET=$?
    if [ $RET -eq 0 ]; then
        success; echo
    else
        failure; echo
        return 1
    fi

    return 0
}

restart() {
    local RET

    echo "Restarting $DESC..."
    stop
    start
    RET=$?

    return $RET
}

condrestart() {
    local RET

    [ -f $PIDFILE ] && kill -0 $(cat $PIDFILE)
    RET=$?
    if [ $RET -eq 0 ]; then
        restart
        RET=$?
    else
        RET=1
    fi

    return $RET
}

reload() {
    local RET pid

    echo -n "Reloading $DESC features"
    pid=$(cat $PIDFILE)
    kill -HUP $pid && success || failure 1
    RET=$?
    echo

    return $RET
}

forcereload() {
    local RET

    reload
    RET=$?
    if [ $RET -ne 0 ]; then
        restart
        RET=$?
    fi

    return $RET
}

parse() {
    case "$1" in
        start)
            start
            return $?
            ;;
        stop)
            stop
            return $?
            ;;
        restart)
            restart
            return $?
            ;;
        condrestart|try-restart)
            condrestart
            return $?
            ;;
        reload)
            reload
            return $?
            ;;
        force-reload)
            forcereload
            return $?
            ;;
        status)
            status $BASENAME
            return $?
            ;;
        *)
            echo "Usage: $NAME " \
                "{start|stop|restart|condrestart|reload|force-reload|status}" >&2
            ;;
    esac

    return 1
}

parse $@
