#!/bin/sh

# Naemon - Startup script for the Naemon monitoring daemon
#
# chkconfig:    - 85 15
# description:  Naemon is a service monitoring system
# processname:  naemon
# config:       /etc/naemon/naemon.cfg
# pidfile:      /run/naemon/naemon.pid
#
### BEGIN INIT INFO
# Provides:          naemon
# Required-Start:    $local_fs $remote_fs $syslog $network
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Should-Start:
# Should-Stop:
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: start and stop Naemon monitoring server
# Description:       Naemon is a service monitoring system
### END INIT INFO

# Source function library.
if [ -e /etc/rc.d/init.d/functions ]; then
  . /etc/rc.d/init.d/functions
elif [ -e /lib/lsb/init-functions ]; then
  . /lib/lsb/init-functions
fi

is_suse="no"
if [ -e /etc/SuSE-release ]; then
  is_suse="yes"
fi

if [ -e /etc/default/naemon ]; then
  . /etc/default/naemon
fi

prefix="/usr"
exec_prefix="/usr"
localstatedir="/var/lib/naemon"
exec="/usr/bin/naemon"
prog="naemon"
sysconfdir="/etc/naemon"
config="/etc/naemon/naemon.cfg"
pidfile="/run/naemon/naemon.pid"
pidfolder="`dirname $pidfile`"
user="naemon"
group="naemon"
checkconfig="false"

# Default nice for performance, change in sysconfig file not here!
NICELEVEL=0

test -e /etc/sysconfig/$prog && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

status() {
    [ ! -e $pidfile ] && return 1;
    PID=`cat $pidfile`;
    kill -0 $PID
    return $?
}

start() {
    test -x $exec || exit 5
    test -f $config || exit 6
    echo -n "Starting $prog: "
    # Create PID folder if it does not exist
    if [ ! -d $pidfolder ]; then
        mkdir $pidfolder
        chown $user:$group $pidfolder
    fi
    # We need to _make sure_ the precache is there and verified
    # Raise priority to make it run better

    NICE_OPT=""
    if [ "x${is_suse}" = "xyes" ]; then
        if [ $NICELEVEL != "0" ]; then NICE_OPT="-n $NICELEVEL"; fi
        start_daemon ${NICE_OPT} -p ${pidfile} -u ${user} $exec -d $config
    elif command -v start-stop-daemon >/dev/null 2>&1; then
        if [ $NICELEVEL != "0" ]; then NICE_OPT="--nicelevel $NICELEVEL"; fi
        start-stop-daemon $NICE_OPT --start --user $user --chuid $user:$group --name $prog --pidfile $pidfile --exec $exec -- -d $config
    else
        daemon --user=$user $exec -d $config
    fi
    retval=$?
    echo
    if [ -d /var/lock/subsys ]; then
      test $retval -eq 0 && touch $lockfile
    fi
    return $retval
}

stop() {
    echo -n "Stopping $prog: "
    if [ "x${is_suse}" = "xyes" ]; then
        killproc -p ${pidfile} -t 90 $exec
    elif command -v start-stop-daemon >/dev/null 2>&1; then
        start-stop-daemon --stop --name ${prog} --pidfile ${pidfile} --exec ${exec}
    elif [ -e /etc/redhat-release ]; then
        killproc -p ${pidfile} -d 90 ${exec}
    else
        killproc -p ${pidfile} ${exec}
    fi
    retval=$?
    echo
    test $retval -eq 0 && rm -f $lockfile
    return $retval
}


restart() {
    stop
    start
    return $?
}

reload() {
    echo -n "Reloading $prog: "
    if [ -e $pidfile ]; then
        PID=`cat $pidfile`;
        kill -HUP $PID >/dev/null 2>/dev/null
    else
        pkill -HUP -u ${user} -f ${exec}
    fi
    retval=$?
    echo
}

force_reload() {
    restart
}

case "$1" in
    start)
        $1
        retval=$?
        ;;
    stop)
        $1
        retval=$?
        ;;
    restart)
        $1
        retval=$?
        ;;
    reload)
        status $prog || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        if status $prog; then
          PID=`cat $pidfile`;
          echo "naemon (pid $PID) is running..."
          exit 0
        else
          echo "naemon is stopped"
          exit 1
        fi
        ;;
    condrestart|try-restart)
        status $prog|| exit 0
        restart
        ;;
    configtest|check|checkconfig)
        if command -v runuser >/dev/null 2>&1; then
          runuser -s /bin/bash - $user -c "$corelimit >/dev/null 2>&1 ; $exec -vp $config"
        else
          /bin/su - -s /bin/sh $user -c "$corelimit >/dev/null 2>&1 ; $exec -vp $config"
        fi
        retval=$?
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
exit $retval
