#! /bin/sh
#
# skeleton	example file to build /etc/init.d/ scripts.
#		This file should be used to construct scripts for /etc/init.d.
#
#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#		Modified for Debian GNU/Linux
#		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version:	@(#)skeleton  1.8  03-Mar-1998  miquels@cistron.nl
#
# This file was automatically customized by dh-make on Mon, 17 Jan 2000 19:30:36 +0000
# Hacked into netsaint shape by bjb.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/nagios
NAME=nagios
DESC=nagios
NICENESS=5
NAMEDPIPE=/var/log/nagios/rw/nagios.cmd

test -f $DAEMON || exit 0

set -e

check_started () {
    if [ -f /usr/lib/nagios/plugins/check_nagios ]; then
	if /usr/lib/nagios/plugins/check_nagios -F /var/log/nagios/status.log -e 5 -C 'nagios' > /dev/null; then
	    return 0    # Is started
	else
	    return 1    # Isn't started
	fi
    elif [ -f /usr/lib/netsaint/plugins/check_netsaint ]; then
	if /usr/lib/netsaint/plugins/check_netsaint -F /var/log/nagios/status.log -e 5 -C 'nagios' > /dev/null; then
	    return 0    # Is started
	else
	    return 1    # Isn't started
	fi
    else
	# Old fashioned way - using ps
	# This is most likley broken, but it's something!
	PS=`/bin/ps axwww | grep nagios | grep -v grep`
	if [ -z "$PS" ]; then
	    return 1    # Isn't started
	else
	    return 0    # Is started
	fi
    fi
}

get_config () {
    set -- `grep ^$1 /etc/nagios/nagios.cfg | sed 's@=@ @'`
    echo $2
}

check_config () {
    if $DAEMON -v /etc/nagios/nagios.cfg >/dev/null 2>&1 ; then
	# First get the user/group etc Nagios is running as
	nagios_user=`get_config nagios_user`
	nagios_group=`get_config nagios_group`
	log_file=`get_config log_file`
	log_dir=`dirname $log_file`

	# Chown the log directory to this user/group so that
	# Nagios can write there.
	chown -R $nagios_user.$nagios_group $log_dir

	return 0    # Config is ok
    else
	return 1    # Config not ok
    fi
}

check_named_pipe () {
    if [ -p $NAMEDPIPE ]; then
	return 1   # a named pipe exists
    else
	return 0   # no named pipe exists
    fi
}

case "$1" in
  start)
	echo -n "Starting $DESC: "
	if ! check_started; then
	    if ! check_named_pipe; then
		echo "named pipe exists - removing"
		rm -f $NAMEDPIPE
	    fi

	    if check_config; then
		rm -f /var/cache/nagios/rw/nagios.cmd
		nice -$NICENESS \
		    start-stop-daemon --start --quiet \
		    --pidfile /var/run/nagios/$NAME.pid \
		    --make-pidfile --background --exec $DAEMON -- /etc/nagios/nagios.cfg
		echo "$NAME."
	    else
		echo "errors in config!"
	    fi
	else
	    echo "already running"
	fi
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --quiet --pidfile /var/run/nagios/$NAME.pid \
		--oknodo --exec $DAEMON
	echo "$NAME."
	rm -f /var/run/nagios/$NAME.pid
	rm -f /var/cache/nagios/rw/nagios.cmd
	;;
  reload|force-reload)
	echo "Reloading $DESC configuration files."
	# Check first
	if check_config; then
	    if check_started; then
		start-stop-daemon --stop --signal 1 --quiet --pidfile \
		    /var/run/nagios/$NAME.pid --exec $DAEMON
	    else
		echo "Not running."
	    fi
	else
	    echo "Errors in config file. Not reloading."
	fi
  	;;
  restart)
	echo -n "Restarting $DESC: "
	$0 stop
	sleep 2
	$0 start
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	exit 1
	;;
esac

exit 0
