#!/bin/sh
#
# Copyright (c) 2016 Nagios(R) Core(TM) Development Team
#
# chkconfig: - 80 30
# description: Starts and stops the Nagios Remote Plugin Executor \
#              so a remote nagios server can run plugins on this host
#
### BEGIN INIT INFO
# Provides:           nrpe
# Required-Start:     $local_fs $remote_fs $time
# Required-Stop:      $local_fs $remote_fs
# Should-Start:       $syslog $network
# Should-Stop:        $syslog $network
# Default-Start:      2 3 4 5
# Default-Stop:       0 1 6
# Short-Description:  Starts and stops the Nagios Remote Plugin Executor
# Description:        Starts and stops the Nagios Remote Plugin Executor
#                     so a remote nagios server can run plugins on this host
### END INIT INFO


NRPE_BIN=@sbindir@/nrpe
NRPE_CFG=@pkgsysconfdir@/nrpe.cfg
LOCK_DIR=@subsyslockdir@
LOCK_FILE=@subsyslockfile@
PID_FILE=@piddir@/nrpe.pid

test -x $NRPE_BIN || exit 5

RETVAL=0
_set_rc (){ return; }

# Default these commands/functions to RedHat/CentOS etc. values
MSG_CMD="echo -n"
START_CMD="daemon --pidfile $PID_FILE"
TERM_CMD="killproc -p $PID_FILE $NRPE_BIN -TERM"
HUP_CMD="killproc -p $PID_FILE $NRPE_BIN -HUP"
PRT_STAT="echo"
STAT_MSG="echo -n Checking for nrpe daemon... "
STAT_CMD="status nrpe"
EXIT_CMD="exit"


# Source the function library
if [ -f /etc/rc.status ]; then

	. /etc/rc.status

	_set_rc (){ return $RETVAL; }

	# Set these commands/functions to SuSE etc. values
	START_CMD="startproc -p $PID_FILE"
	TERM_CMD="killproc -p $PID_FILE -TERM $NRPE_BIN"
	HUP_CMD="killproc -p $PID_FILE -HUP $NRPE_BIN"
	PRT_STAT="rc_status -v -r"
	STAT_CMD="checkproc -p $PID_FILE $NRPE_BIN"
	EXIT_CMD="rc_exit"
	rc_reset

elif [ -f /etc/rc.d/init.d/functions ]; then

	. /etc/rc.d/init.d/functions

elif [ -f /etc/init.d/functions ]; then

	. /etc/init.d/functions

elif [ -f /lib/lsb/init-functions ]; then

	. /lib/lsb/init-functions

	MSG_CMD="log_daemon_msg"
	START_CMD="start_daemon -p $PID_FILE"
	PRT_STAT="log_end_msg"
	STAT_MSG=
	STAT_CMD="status_of_proc -p $PID_FILE $NRPE_BIN nrpe"

elif [ -f /etc/rc.d/functions ]; then

	. /etc/rc.d/functions

fi


# See how we were called.
case "$1" in

start)
	# Start daemons.
	$MSG_CMD "Starting nrpe "
	$START_CMD $NRPE_BIN -c $NRPE_CFG -d
	RETVAL=$?
	if test "$PRT_STAT" = log_end_msg; then
		$PRT_STAT $RETVAL
	else
		_set_rc; $PRT_STAT
	fi
	if [ $RETVAL = 0 ]; then
		[ -d $LOCK_DIR ] && touch $LOCK_FILE || true
	fi
	;;

stop)
	# Stop daemons.
	$MSG_CMD "Shutting down nrpe "
	$TERM_CMD
	RETVAL=$?
	if test "$PRT_STAT" = log_end_msg; then
		$PRT_STAT $RETVAL
	else
		_set_rc; $PRT_STAT
	fi
	if [ $RETVAL = 0 ]; then
		[ -d $LOCK_DIR ] && rm -f $LOCK_FILE
	fi
	;;

restart|force-reload)
	$0 stop
	$0 start
	RETVAL=$?
	;;

reload)
	$MSG_CMD "Reloading nrpe "
	$HUP_CMD
	RETVAL=$?
	if test "$PRT_STAT" = log_end_msg; then
		$PRT_STAT $RETVAL
	else
		_set_rc; $PRT_STAT
	fi
	;;

try-restart|condrestart)
	$STAT_CMD || exit 0
	$0 stop
	$0 start
	RETVAL=$?
	;;

status)
	$STAT_MSG
	$STAT_CMD
	RETVAL=$?
	if test "$PRT_STAT" != log_end_msg; then
		_set_rc; $PRT_STAT
	fi
	;;

*)
	echo "Usage: nrpe {start|stop|restart|reload|try-restart|condrestart|status}"
	exit 1
esac

$EXIT_CMD $RETVAL
