#!/bin/bash
#
# openfw-audit  Startup script for OpenFW Config Audit Daemon
#
# chkconfig: 345 99 01
# description: OpenFW live configuration audit and snapshot monitoring daemon
# processname: config-audit

. /etc/init.d/functions

DAEMON="/usr/local/bin/config-audit"
PIDFILE="/var/run/config-audit/config-audit.pid"
LOCKFILE="/var/lock/subsys/config-audit"

start() {
    echo -n "Starting OpenFW Config Audit: "
    if [ -f $PIDFILE ]; then
        PID=$(cat $PIDFILE)
        if ps -p $PID > /dev/null 2>&1; then
            echo_failure
            echo " (Already running)"
            return 1
        fi
        rm -f $PIDFILE
    fi

    nohup $DAEMON > /dev/null 2>&1 &
    RETVAL=$?
    
    PID=$!
    echo $PID > $PIDFILE

    sleep 1
    if ps -p $PID > /dev/null 2>&1; then
        touch $LOCKFILE
        echo_success
        echo
    else
        echo_failure
        echo
        rm -f $PIDFILE
        return 1
    fi
}

stop() {
    echo -n "Stopping OpenFW Config Audit: "
    if [ -f $PIDFILE ]; then
        PID=$(cat $PIDFILE)
        kill $PID >/dev/null 2>&1
        rm -f $PIDFILE
        rm -f $LOCKFILE
        echo_success
        echo
    else
        echo_failure
        echo " (Not running)"
    fi
}

status_audit() {
    if [ -f $PIDFILE ]; then
        PID=$(cat $PIDFILE)
        if ps -p $PID > /dev/null 2>&1; then
            echo "OpenFW Config Audit (pid $PID) is running..."
            return 0
        fi
    fi
    echo "OpenFW Config Audit is stopped."
    return 3
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 1
        start
        ;;
    status)
        status_audit
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
esac

exit $?