#!/bin/sh
# 
# nagios	Start/Stop the Nagios(R) daemon
#
# chkconfig: - 90 10
# description: Nagios network/services monitor.
# processname: nagios
# config: /etc/nagios/nagios.cfg
# pidfile: /var/run/nagios/nagios.pid

### BEGIN INIT INFO
# Provides:          nagios
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Nagios(R) monitoring daemon
# Description:       Start Nagios(R) monitoring daemon.
### END INIT INFO

WITHOUT_RC_COMPAT=1

# Source function library
. /etc/rc.d/init.d/functions

NagiosCfg=/etc/nagios/nagios.cfg
NagiosBin=/usr/sbin/nagios
NagiosLog=/var/log/nagios/nagios.log
NagiosSav=/var/lib/nagios/nagios.sav
NagiosCmd=/var/lib/nagios/rw/nagios.cmd

TMPDIR=/var/lib/nagios/tmp
export TMPDIR

NGUSER=nagios
LOCKFILE=/var/lock/subsys/nagios
PIDFILE=/var/run/nagios/nagios.pid

[ -f $NagiosBin ] || exit 0
[ -f $NagiosCfg ] || exit 0

RETVAL=0

start()
{
    su -l $NGUSER -s /bin/bash -c "touch $NagiosLog $NagiosSav"
    rm -f $NagiosCmd
    configtest
	#touch "$PIDFILE"
	#chown "$NGUSER":"$NGUSER" "$PIDFILE"
    start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user "$NGUSER" -- $NagiosBin -d $NagiosCfg

    RETVAL=$?
    return $RETVAL
}



stop()
{
    stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user "$NGUSER" nagios

    RETVAL=$?
    return $RETVAL
}

restart()
{
	stop
	sleep 2
	start
}
		
reload()
{
		configtest
		RETVAL=$?

		if [ $RETVAL -eq 0 ]; then
			if test ! -f $PIDFILE; then
				start
			else
				if status nagios > /dev/null; then
					msg_reloading nagios
					stop_daemon --pidfile "$PIDFILE" --expect-user "$NGUSER" -HUP nagios
				else
					restart
				fi
			fi
		fi

		return $RETVAL
}


configtest()
{
	$NagiosBin -v $NagiosCfg > /dev/null 2>&1;
	RETVAL=$?

	if [ $RETVAL -eq 0 ]; then
		return $RETVAL
	else
		$NagiosBin -v $NagiosCfg
		action $"failed - aborting ..."
	fi

	return $RETVAL
}

# See how we were called.
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	reload)
		reload
		;;
	restart)
		restart
		;;
	condstop)
		if [ -e "$LOCKFILE" ]; then
			stop
		fi
		;;
	condrestart)
		if [ -e "$LOCKFILE" ]; then
			restart
		fi
		;;
	condreload)
		if [ -e "$LOCKFILE" ]; then
			reload
		fi
		;;
	check)
		configtest
		;;
	status)
		status --pidfile "$PIDFILE" --expect-user "$NGUSER"  $NagiosBin
		RETVAL=$?
		;;
	*)
		msg_usage "${0##*/} {start|stop|reload|restart|condstop|condrestart|condreload|check|status}"
		RETVAL=1
esac

exit $RETVAL
