#!/bin/sh
# /etc/init.d/monit start and stop monit daemon monitor process.
# Fredrik Steen, stone@debian.org
:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/monit
CONFIG="/etc/monit/monitrc"
CHECK_INTERVALS=180
# We default to 180s (3min) check intervals
NAME=monit
DESC="daemon monitor"

set -e

# Check if DAEMON binary exist
test -f $DAEMON || exit 0

if [ -f "/etc/default/monit" ]; then
     . /etc/default/monit
fi

ARGS="-d $CHECK_INTERVALS -c $CONFIG -s /var/lib/monit/monit.state"

monit_not_configured () {
    echo -e "monit won't be started/stopped\n\tunless it it's configured"
    if [ "$1" != "stop" ]
        then
        echo -e "\tplease configure monit and then edit /etc/default/monit"
        echo -e "\tand set the \"startup\" variable to 1 in order to allow "
        echo -e "\tmonit to start"
    fi
    exit 0
}

monit_check_config () {
    # Check for emtpy config, probably default configfile.
    if [ "`grep -s -v \"^#\" /etc/monit/monitrc`" = "" ]; then
        echo "empty config, please edit /etc/monit/monitrc."
        exit 0
    fi
}

monit_check_perms () {
    # Check the permission on configfile. 
    # The permission must not have more than -rwx------ (0700) permissions.
    STAT=`stat -c "%a" $CONFIG`
    PERMOK=0
    
    for i in 700 600 500 400; do
        if [ $STAT == $i ]; then
            PERMOK=1
            continue
        fi
    done
    if [ $PERMOK == 0 ]; then
        echo " Error, file '/etc/monit/monitrc' must have no more than -rwx------ (0700) permissions."
        exit 0
    fi
}


monit_checks () {
    # Check if startup variable is set to 1, if not we exit.
    if [ "$startup" != "1" ]; then
        monit_not_configured $1
    fi
    # Check for emtpy configfile
    monit_check_config
    # Check permissions of configfile
    monit_check_perms
}

case "$1" in
  start)
	echo -n "Starting $DESC: "
    monit_checks $1
	echo -n "$NAME"
	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON > /dev/null 2>&1 -- $ARGS
	echo "."
	;;
  stop)
	echo -n "Stopping $DESC: "
    #monit_checks $1
	echo -n "$NAME"
	start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON  > /dev/null 2>&1
	echo "."
	;;
  restart|force-reload)
	$0 stop
	sleep 1
	$0 start
	;;
  *)
	N=/etc/init.d/$NAME
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0
