#!/bin/sh
### BEGIN INIT INFO
# Provides:          SMPO Server
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop SMPO Server
### END INIT INFO

SMPO_HOME=/opt/smpo-server
SMPO_LOG=$SMPO_HOME/logs/wrapper.log
SMPO_ERR=$SMPO_HOME/logs/errors.log
SMPO_PID=/run/smpo-server.pid
SMPO_JAVA_OPTIONS=
case $1 in
    start)
        echo "Starting SMPO Server ..."
        if [ $(pgrep -F $SMPO_PID 2> /dev/nul) ]; then
            echo "SMPO Server is already running ..."
        else
            nohup java -jar $SMPO_JAVA_OPTIONS $SMPO_HOME/smpo-server.jar -wrapper 2>> $SMPO_ERR >> $SMPO_LOG &
            echo $! > $SMPO_PID
            echo "SMPO Server (pid $!) started"
        fi
    ;;
    stop)
        if [ $(pgrep -F $SMPO_PID 2> /dev/nul) ]; then
            PID=$(cat $SMPO_PID);
            echo "Stopping SMPO Server ..."
            kill $PID;
            echo "SMPO Server stopped"
            rm $SMPO_PID
        else
            echo "SMPO Server is not running"
        fi
    ;;
    remove)
        if [ $(pgrep -F $SMPO_PID 2> /dev/nul) ]; then
            PID=$(cat $SMPO_PID);
            echo "Stopping SMPO Server ..."
            kill $PID;
            rm $SMPO_PID
        else
            echo "SMPO Server is not running"
        fi
        echo "Removing SMPO Server ..."
        $SMPO_HOME/uninstall.sh
        echo "SMPO Server removed"
    ;;
    restart)
        if [ $(pgrep -F $SMPO_PID 2> /dev/nul) ]; then
            PID=$(cat $SMPO_PID);
            echo "Stopping SMPO Server ...";
            kill $PID;
            echo "SMPO Server stopped";
            rm $SMPO_PID
        else
            echo "SMPO Server is not running"
        fi
 
        echo "Starting SMPO Server ..."
        if [ $(pgrep -F $SMPO_PID 2> /dev/nul) ]; then
            echo "SMPO Server is already running"
        else
            nohup java -jar $SMPO_JAVA_OPTIONS $SMPO_HOME/smpo-server.jar -wrapper 2>> $SMPO_ERR >> $SMPO_LOG &
            echo $! > $SMPO_PID
            echo "SMPO Server (pid $!) started"
        fi
    ;;
    status)
        if [ $(pgrep -F $SMPO_PID 2> /dev/nul) ]; then
            PID=$(cat $SMPO_PID);
            echo "SMPO Server (pid $PID) is running";
            java -jar $SMPO_HOME/smpo-server.jar -status
        else
            echo "SMPO Server is not running"
        fi
    ;;
esac

