#!/bin/sh
#
# wpay-bukts Startup script for spawning FCGI service to Nginx HTTP Server
#
### BEGIN INIT INFO
# Provides: wpay-bukts
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6 
# Short-Description: Mobile Payments WebServices Server
# Description: Mobile Payments WebServices Server
### END INIT INFO

SCRIPTNAME=$(basename $0)

#DAEMON=/usr/bin/spawn-fcgi
FCGIPORT=9185
FCGIHOST=127.0.0.1
FCGISOCK="/var/opt/bukts-webpay/run/wpay-bukts.sock"
FCGIUSER="www-data"
FCGIGROUP="www-data"
FCGIAPP="/opt/bukts-webpay/bin/wpay-bukts"
FCGIMODE="0777"
FCGIAPPCFG="/etc/opt/bukts-webpay/wpay-bukts.cf"
FCGIAPPARGS="-c ${FCGIAPPCFG}"
FCGICHILDREN=5
PIDFILE="/var/opt/bukts-webpay/run/$SCRIPTNAME.pid"
DESC="Служба управления оплатами через мобильные приложения"

# You can change settings for this script by editing /etc/default/$SCRIPTNAME
[ -r /etc/default/$SCRIPTNAME ] && . /etc/default/$SCRIPTNAME

# Gracefully exit if the package has been removed.
#test -x $DAEMON || exit 0
test -x $FCGIAPP || exit 0

start() {
    ERR=0

    echo -n "Запуск \"$DESC\" :"

    if [ ! -f ${FCGIAPPCFG?} ]; then
        echo " ERROR : Отсутствует файл с конфигурацией cервиса."
        exit 0
    fi

    # $DAEMON -a $FCGIHOST -p $FCGIPORT -u $FCGIUSER -g $FCGIGROUP -f $FCGIAPP -P $PIDFILE -C $FCGICHILDREN 2> /dev/null || echo -en "\n already running"
    # $DAEMON -s $FCGISOCK -M $FCGIMODE -u $FCGIUSER -g $FCGIGROUP -P $PIDFILE -- $FCGIAPP $FCGIAPPARGS > /dev/null 2>&1 
    $FCGIAPP $FCGIAPPARGS & > /dev/null 2>&1
    echo  "$!" > "${PIDFILE}"

    ERR=$?
    if [ $ERR -ne 0 ]; then
        echo -n "ERROR : Уже запущена"
    else
        if [ -f "${PIDFILE}" ] ; then
            procnum=`cat ${PIDFILE} 2>/dev/null`
        fi
        echo -n " OK [${procnum?}]"
    fi
    echo "."
}

stop() {
    echo -n "Остановка \"$DESC\" :"
    procnum=`cat $PIDFILE 2>/dev/null`
    if [ -z ${procnum?} ]; then 
        echo -n " ERROR: Не найдена работающая служба [${procnum?}]"
    else
        #kill -QUIT ${procnum?} 
        kill ${procnum?}

        ERR=$?
        if [ $ERR -ne 0 ]; then
            echo -n " ERROR [${procnum?}]"
        else
            echo -n " OK [${procnum?}]"
            if [ -f "${PIDFILE}" ] ; then
                rm -f "${PIDFILE}" 2>/dev/null
            fi
        fi
    fi
    echo "."
}

restart() {
    echo -n "Перезагрузка  \"$DESC\" :"
    procnum=`cat $PIDFILE 2>/dev/null`
    if [ -z ${procnum?} ]; then 
        echo -n " ERROR: Не найдена работающая служба [${procnum?}]"
    else
        kill -HUP ${procnum?}
        ERR=$?
        if [ $ERR -ne 0 ]; then
            echo -n " ERROR : Не удалось перезапустить службу [${procnum?}]"
        else
            echo -n " OK [${procnum?}]"
        fi
    fi
    echo "."
}

case "$1" in
  start)
      start
      ;;
  stop)
      stop
      ;;
  restart|reload|force-reload)
      stop
      # One second might not be time enough for a daemon to stop,
      # if this happens, d_start will fail (and dpkg will break if
      # the package is being upgraded). Change the timeout if needed
      # be, or change d_stop to have start-stop-daemon use --retry.
      # Notice that using --retry slows down the shutdown process somewhat.
      sleep 3
      start
      ;;
  *)
      echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
      exit 3
      ;;
esac

exit $?
