#!/bin/sh
### BEGIN INIT INFO
# Provides:			 plesk-php70-fpm
# Required-Start:	 $remote_fs $network
# Required-Stop:	 $remote_fs $network
# Default-Start:	 2 3 4 5
# Default-Stop:		 0 1 6
# Short-Description: start and stop PHP FPM
# Description:		 PHP FastCGI Process Manager
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="PHP FastCGI Process Manager"
NAME=php-fpm
DAEMON=/opt/plesk/php/7.0/sbin/$NAME
DAEMON_ARGS="--daemonize"
PIDFILE=/run/plesk-php70-fpm.pid
TIMEOUT=30
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/plesk-php70-fpm ] && . /etc/default/plesk-php70-fpm

. /lib/lsb/init-functions

do_check()
{
	FPM_ERROR=$($DAEMON $DAEMON_ARGS -t 2>&1 | grep "\[ERROR\]")

	if [ -n "${FPM_ERROR}" ]; then
		echo "Please fix your configuration file..."
		echo ${FPM_ERROR}
		return 1
	fi
	return 0
}

do_start()
{
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null 		|| return 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- 		$DAEMON_ARGS 2>/dev/null 		|| return 2
}

do_stop()
{
	start-stop-daemon --stop --quiet --retry=TERM/$TIMEOUT/KILL/5 --pidfile $PIDFILE --name $NAME
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2
	rm -f $PIDFILE
	return "$RETVAL"
}

do_reload() {
	start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --name $NAME
	return 0
}

do_status() {
	local status="0"
	start-stop-daemon --status --quiet --pidfile $PIDFILE --name $NAME || status=$?
	if [ "$status" = 0 ]; then
		log_success_msg "$NAME is running"
		return 0
	elif [ "$status" = 4 ]; then
		log_failure_msg "could not access PID file for $NAME"
		return $status
	else
		log_failure_msg "$NAME is not running"
		return $status
	fi
}

case "$1" in
	start)
		log_daemon_msg "Starting $DESC" "$NAME"
		do_check
		case "$?" in
			0)
				do_start
				case "$?" in
					0|1) log_end_msg 0 ;;
					2) log_end_msg 1 ;;
				esac
			;;
			1) log_end_msg 1 ;;
		esac
	;;
	stop)
		log_daemon_msg "Stopping $DESC" "$NAME"
		do_stop
		case "$?" in
			0|1) log_end_msg 0 ;;
			2) log_end_msg 1 ;;
		esac
	;;
	status)
		do_status && exit 0 || exit $?
	;;
	check)
		do_check yes
	;;
	reload|force-reload)
		log_daemon_msg "Reloading $DESC" "$NAME"
		do_reload
		log_end_msg $?
	;;
	restart)
		log_daemon_msg "Restarting $DESC" "$NAME"
		do_stop
		case "$?" in
			0|1)
				do_start
				case "$?" in
					0) log_end_msg 0 ;;
					1) log_end_msg 1 ;; # Old process is still running
					*) log_end_msg 1 ;; # Failed to start
				esac
			;;
			*)
				# Failed to stop
				log_end_msg 1
			;;
		esac
	;;
	condrestart)
		$0 status >/dev/null 2>&1 && $0 restart || :
	;;
	*)
		echo "Usage: $SCRIPTNAME {start|stop|status|restart|condrestart|reload|force-reload}" >&2
		exit 1
	;;
esac

:
