#! /bin/sh

#
# Init script for IDS/A
# Written by Andras Bali <bali@debian.org>.
#
# The list of services to be started, as well as their command line
# options can be configured in /etc/defaults/idsa.
#

PATH=/bin:/usr/bin:/sbin:/usr/sbin

CONFFILE=/etc/idsad.conf
SOCKET=/var/run/idsa

RUNAS=daemon

SYSLOGDSOCKET=/dev/log
KLOGDSOCKET=/var/run/idsaklogd
RLOGDSOCKET=/var/run/idsarlogd
TCPLOGDSOCKET=/var/run/idsatcplogd

[ -r /etc/default/idsa ] && . /etc/default/idsa

[ -x /usr/sbin/idsad ] || exit 0

case "$1" in

    start)
        echo -n "Starting IDS/A master daemon: "
        idsad -f "$CONFFILE" -p "$SOCKET" -i $RUNAS || {
            echo "failed."
            exit 1
        }
        echo -n "idsad"

        [ "x$IDSASYSLOGD" = "xtrue" ] || \
        [ "x$IDSARLOGD"   = "xtrue" ] || \
        [ "x$IDSATCPLOGD" = "xtrue" ] \
            && echo -n ", modules:"

        [ "x$IDSASYSLOGD" = "xtrue" ] && {
            echo -n " idsasyslogd"
            idsasyslogd $IDSASYSLOGD_OPTS -i $RUNAS || \
                echo -n "(FAILED)"

            [ "x$IDSANOKLOGD" = "x" ] && {
		echo -n " idsaklogd"
		idsaklogd -i $RUNAS || \
		    echo -n "(FAILED)"
            }
        }

        [ "x$IDSARLOGD" = "xtrue" ] && {
            echo -n " idsarlogd"
            idsarlogd $IDSARLOGD_OPTS -i $RUNAS || \
                echo -n "(FAILED)"
        }

        [ "x$IDSATCPLOGD" = "xtrue" ] && {
            echo -n " idsatcplogd"
            idsatcplogd $IDSATCPLOGD_OPTS -i $RUNAS || \
                echo -n "(FAILED)"
        }

        echo .
        ;;

    stop)
        echo -n "Stopping"

        HAVEKILLED=""

        [ "$(idsapid $TCPLOGDSOCKET 2>/dev/null)" ] && {
            idsapid -k $TCPLOGDSOCKET
            echo -n " idsatcplogd"
            HAVEKILLED=x
        }

        [ "$(idsapid $RLOGDSOCKET 2>/dev/null)" ] && {
            idsapid -k $RLOGDSOCKET
            echo -n " idsarlogd"
            HAVEKILLED=x
        }

	[ "$(idsapid $KLOGDSOCKET 2>/dev/null)" ] && {
	    idsapid -k $KLOGDSOCKET
	    echo -n " idsaklogd"
	    HAVEKILLED=x
	}

        SYSLOGDPID=$(idsapid $SYSLOGDSOCKET 2>/dev/null)
        IDSAPID=$(ps --noheaders -o pid -C idsasyslogd | sed 's/^ *//')

	[ $(echo "$IDSAPID" | wc -l) -gt 1 ] && \
	    echo -n " (found multiple idsasyslogds, none stopped)"
	    
	[ "$SYSLOGDPID" = "$IDSAPID" -a ! -z "$SYSLOGDPID" ] && {
    	    idsapid -k $SYSLOGDSOCKET
    	    echo -n " idsasyslogd"
    	    HAVEKILLED=x
    	}

        [ "$(idsapid $SOCKET 2>/dev/null)" ] && {
    	    [ "$HAVEKILLED" ] && echo -n ","
            echo -n " master daemon: "
            idsapid -k "$SOCKET"
            echo -n "idsad"
            HAVEKILLED=x
        }

        [ "$HAVEKILLED" ] || echo -n " IDS/A: not running"

	echo "."

        ;;

    reload|force-reload)
        echo -n "Reloading IDS/A configuration file ($CONFFILE): "
        idsad -k -f "$CONFFILE" -p "$SOCKET" -i $RUNAS 2>/dev/null || {
	    echo "failed."
	    exit 1
	}
	echo "done."
        ;;

    restart)
        $0 stop
	sleep 1
	$0 start
        ;;

    *)
        echo "Usage: /etc/init.d/idsa {start|stop|restart|reload|force-reload}" >&2
        exit 1
        ;;

esac

exit 0
