#!/bin/sh

### BEGIN INIT INFO
# Provides:          php-fpm php5-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: starts php-fpm
### END INIT INFO

set -u

DAEMON="PHP5 FPM"
FPM_CMD=/usr/sbin/php5-fpm
FPM_CONF=/etc/php5/fpm/main.conf
FPM_PID=/var/run/php5-fpm.pid
TIMEOUT=30

FPM_OPTIONS="--fpm-config $FPM_CONF"
SSD_OPTIONS="--oknodo --quiet --pidfile $FPM_PID --exec $FPM_CMD"

. /lib/lsb/init-functions

#
# Function to check the correctness of the config file
#
do_check()
{
    [ "$1" != "no" ] && $FPM_CMD $FPM_OPTIONS -t 2>&1 | grep -v "\[ERROR\]"
    FPM_ERROR=$($FPM_CMD $FPM_OPTIONS -t 2>&1 | grep "\[ERROR\]")

    if [ -n "${FPM_ERROR}" ]; then
        echo "Please fix your configuration file..."
        $FPM_CMD $FPM_OPTIONS -t 2>&1 | grep "\[ERROR\]"
        return 1
    fi
    return 0
}

case "$1" in
    start)
	log_begin_msg "Starting $DAEMON..."
	if do_check no ; then
		/sbin/start-stop-daemon --start $SSD_OPTIONS -- $FPM_OPTIONS
		log_end_msg $?
	else
		log_end_msg 1
	fi
    ;;
    stop)
	log_begin_msg "Stopping $DAEMON..."

	/sbin/start-stop-daemon --stop $SSD_OPTIONS
	log_end_msg $?
    ;;
    graceful-stop)
	log_begin_msg "Gracefully stopping $DAEMON..."

	/sbin/start-stop-daemon --stop --retry QUIT/$TIMEOUT/TERM $SSD_OPTIONS
	log_end_msg $?
    ;;
    restart)
	$0 stop
	$0 start
    ;;
    reload|force-reload)
	log_begin_msg "Reloading $DAEMON..."

	/sbin/start-stop-daemon --stop --signal USR2 $SSD_OPTIONS
	log_end_msg $?
    ;;
    *)
	echo "Usage: $0 {start|stop|graceful-stop|restart|reload|force-reload}"
	exit 1
    ;;
esac
