#!/bin/sh
# Tripwire Event Generator
#
# update-rc.d: 2345 89 1
# description: Event Generator service which reads events from the Driver.
# processname: tesvc
# pidfile: /var/run/tesvc.pid
#

### BEGIN INIT INFO
# Provides: tw-eg-service
# Required-Start:
# Should-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Tripwire Event Generator
# Description: Event Generator service which reads events from the Driver.
### END INIT INFO

NAME=tesvc
SERVICE="Tripwire Event Generator"
EG_DIR="/opt/tripwire/event-generator/service"
DAEMON="${EG_DIR}/${NAME}"
LOGFILE=/var/log/tripwire/tesvc.log
PID_FILE=/var/run/tesvc.pid
TWNOTIFY=twnotify
RETVAL=0

if [ -f /lib/lsb/init-functions ]; then
    . /lib/lsb/init-functions
    alias START_DAEMON=start_daemon
    alias STATUS=pidofproc_status
    alias LOG_SUCCESS=log_success_msg
    alias LOG_FAILURE=log_failure_msg
    alias LOG_WARNING=log_warning_msg
elif [ -f /etc/rc.d/init.d/functions ]; then
    . /etc/rc.d/init.d/functions
    alias START_DAEMON=daemon
    alias STATUS=status
    alias LOG_SUCCESS=success
    alias LOG_FAILURE=failure
    alias LOG_WARNING=passed
else
    echo "Error: Your platform is not supported by $0" > /dev/stderr
    exit 1
fi

if [ ! -x "${DAEMON}" ]; then
    LOG_FAILURE "Error: ${DAEMON} is not executable"
    exit 1
fi

pidofproc_status() {
    pidofproc -p "${PID_FILE}" "${NAME}" 2>&1 > /dev/null
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        LOG_SUCCESS "${NAME} is running"
    else
        LOG_SUCCESS "${NAME} is not running"
    fi
    return $RETVAL
}

createPseudoDevice() {
    if [ ! -c "/dev/$TWNOTIFY" ]; then
        mknod "/dev/$TWNOTIFY" c 32 0
        chmod 600 "/dev/$TWNOTIFY"
    fi
}

removePseudoDevice() {
    if [ -c "/dev/$TWNOTIFY" ]; then
        rm -f "/dev/$TWNOTIFY"
    fi
}

case "$1" in
    start)
        echo -n "Starting $SERVICE ..."
        createPseudoDevice
        "/opt/tripwire/event-generator/driver/tw-eg-driver-loader.sh" load >> "${LOGFILE}" 2>&1
        start_daemon "${DAEMON}" -logfile "${LOGFILE}"
        RETVAL=$?
        echo
        ;;
    stop)
        echo -n "Stopping $SERVICE daemon: "
        killproc -p "${PID_FILE}" ${NAME}
        RETVAL=$?
        rm -f "${PID_FILE}"
        removePseudoDevice
        echo
        ;;
    status)
        status_of_proc "${NAME}"
        RETVAL=$?
        ;;
    restart)
        "$0" stop
        "$0" start
        RETVAL=$?
        ;;
    *)
        echo "Usage: $(basename "$0") {start|stop|status|restart}"
        exit 1
        ;;
esac

exit $RETVAL

