#! /bin/sh

### BEGIN INIT INFO
# Provides:	     munin-cgi-graph
# Required-Start:    $network $named $local_fs $remote_fs
# Required-Stop:     $network $named $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:	     0 1 6
# Short-Description: starts FastCGI for Munin-Graph
# Description:	     starts FastCGI for Munin-Graph using start-stop-daemon
### END INIT INFO
# --------------------------------------------------------------
# Based on Munin-CGI-Graph Spawn-FCGI Startscript by Julien Schmidt
# eMail: munin-trac at julienschmidt.com
# www:	 http://www.julienschmidt.com
# --------------------------------------------------------------
# Install:
#   1. Copy this file to /etc/init.d
#   2. run "update-rc.d munin-cgi-graph defaults"
# --------------------------------------------------------------

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=munin-cgi-graph
PID_FILE="/var/run/munin/$NAME.pid"
SOCK_FILE="/var/run/munin/$NAME.socket"
CGI_SCRIPT="/usr/lib/munin/cgi/$NAME"
DAEMON=/usr/bin/spawn-fcgi
DAEMON_OPTS="-s $SOCK_FILE -U www-data -u munin -g munin -P $PID_FILE -- $CGI_SCRIPT"

# --------------------------------------------------------------
# No edits necessary beyond this line
# --------------------------------------------------------------

if [ ! -x $DAEMON ]; then
	echo "File not found or is not executable: $DAEMON!"
	exit 0
fi

status() {
	if [ ! -r $PID_FILE ]; then
		return 1
	fi

	FCGI_PID=`cat $PID_FILE`
	if [ -z "${FCGI_PID}" ]; then
		return 1
	fi

	FCGI_RUNNING=`ps -p ${FCGI_PID} | grep ${FCGI_PID}`
	if [ -z "${FCGI_RUNNING}" ]; then
		return 1
	fi

	return 0
}

start() {
	if status; then
		echo "FCGI is already running!"
		exit 1
	else
		$DAEMON $DAEMON_OPTS
	fi
}

stop () {
	if ! status; then
		echo "No PID-file at $PID_FILE found or PID not valid. Maybe not running"
		exit 1
	fi

	# Kill process
	kill -9 `cat $PID_FILE`

	# Remove PID-file
	rm -f $PID_FILE

	# Remove Sock-File
	rm -f $SOCK_FILE
}

case "$1" in
	start)
		echo "Starting $NAME: "
		start
		echo "... DONE"
	;;

	stop)
		echo "Stopping $NAME: "
		stop
		echo "... DONE"
	;;

	force-reload|restart)
		echo "Stopping $NAME: "
		stop
		start
		echo "... DONE"
	;;

	status)
		if status; then
			echo "FCGI is RUNNING"
		else
			echo "FCGI is NOT RUNNING"
		fi
	;;

	*)
		echo "Usage: $0 {start|stop|restart|status}"
		exit 1
		;;
esac

exit 0
