#!/bin/sh
# chkconfig: 2345 99 10
# description: File Integrity Checking Daemon
#
# processname: samhain
# config  : /etc/samhainrc
# logfile : /var/log/samhain_log
# database: /var/lib/samhain/samhain_file
#

NAME=samhain
DAEMON=/usr/sbin/samhain
RETVAL=0
VERBOSE=yes
PIDFILE=/var/run/samhain.pid

. /etc/default/samhain-standalone

if [ "x$SAMHAIN_STANDALONE_START" != "xyes" ]; then
	echo "${0}: samhain disabled in /etc/default/samhain-standalone"
	exit 0
fi

if [ -x $DAEMON ]; then
	:
else
	echo "${0}: executable ${DAEMON} not found"
	exit 1
fi

if [ ! -e /var/lib/samhain/samhain_file ]; then
	echo "${0}: /var/lib/samhain/samhain_file does not exist.  You must"
	echo "  run 'samhain -t init' before samhian can start."
	exit 1
fi

samhain_done()
{
	if [ $RETVAL -eq 0 ]; then
		echo "."
	else
		echo " failed."
	fi
}

log_stat_msg () {
case "$1" in
	0)
	echo "Service $NAME: Running";
	;;
	1)
	echo "Service $NAME: Stopped and /var/run pid file exists";
	;;
	3)
	echo "Service $NAME: Stopped";
	;;
	*)
	echo "Service $NAME: Status unknown";
	;;
esac
}

case "$1" in
  start)
	#
	# Remove a stale PID file, if found
	#
	if test -f ${PIDFILE}; then
	    /bin/rm -f ${PIDFILE}
	fi

        echo -n "Starting ${NAME}"
        start-stop-daemon --start --quiet --exec $DAEMON
	RETVAL=$?
	samhain_done
	exit $RETVAL
	;;
  stop)
        echo -n "Stopping $NAME"
        start-stop-daemon --stop --quiet --exec $DAEMON
	RETVAL=$?
	samhain_done
	#
	# Remove a stale PID file, if found
	#
	if test -f ${PIDFILE}; then
	    /bin/rm -f ${PIDFILE}
	fi
        if test -S /var/run/${NAME}.sock; then
            /bin/rm -f /var/run/${NAME}.sock
        fi
	;;

  restart)
	$0 stop
	sleep 3
	$0 start
	RETVAL=$?
	;;

  reload|force-reload)
        echo -n "Reloading $NAME configuration files"
        start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON
    RETVAL=$?
	samhain_done
    ;;

  status)
	if pidof -o %PPID $DAEMON > /dev/null; then
	    echo "Samhain running"
	    RETVAL=0
	else
	    echo "Samhain not running"
	    RETVAL=1
	fi
	;;
  *)
	echo "$0 usage: {start|stop|status|restart|reload}"
	exit 1
	;;
esac

exit $RETVAL
