#!/bin/sh
### Copyright 1999-2022. Plesk International GmbH. All rights reserved.
### BEGIN INIT INFO
# Provides:			 sw-engine-fpm
# Required-Start:	 $remote_fs $network
# Required-Stop:	 $remote_fs $network
# Default-Start:	 2 3 4 5
# Default-Stop:		 0 1 6
# Short-Description: starts Plesk engine
# Description:		 Startup script for Plesk panel sw-engine
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Plesk engine pool manager"
NAME=sw-engine-fpm
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="--fpm-config /etc/sw-engine/sw-engine-fpm.conf -c /opt/psa/admin/conf/php.ini"
PIDFILE=/var/run/sw-engine.pid
TIMEOUT=30
SCRIPTNAME=/etc/init.d/$NAME
LM_LOCK_DIR=/run/lock/lmlib/

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

. /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()
{
	chmod 1777 /dev/shm
	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
	rm -rf ${LM_LOCK_DIR}*
	return "$RETVAL"
}

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

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)
		status_of_proc "$DAEMON" "$NAME" && 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

:
