#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          bicsuite-server
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:      $network $named $time
# Should-Stop:       $network $named $time
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop the bicsuite Enterprise Job Scheduling server daemon
# Description:       Controls the bicsuite server process
### END INIT INFO
#
. /opt/bicsuite/etc/SETTINGS
set -e
set -u

# if the start- and/or stop scripts don't exist, we exit silently
test -x $BICSUITEHOME/bin/server-start || exit 0
test -x $BICSUITEHOME/bin/server-stop || exit 0
test -x $BICSUITEHOME/bin/server-restart || exit 0

if [ -f /lib/lsb/init-functions ]; then
	. /lib/lsb/init-functions
	LOG_WARNING_MSG=log_warning_msg
	LOG_FAILURE_MSG=log_failure_msg
	ECHO_SUCCESS=echo
	ECHO_FAILURE=echo
else
	LOG_WARNING_MSG=echo
	LOG_FAILURE_MSG=echo
	ECHO_SUCCESS=echo
	ECHO_FAILURE=echo
fi

SELF=$(cd $(dirname $0); pwd -P)/$(basename $0)

# Safeguard (relative paths, core dumps..)
cd /
umask 077

case "${1:-''}" in
  'start')
	echo -n "Starting bicsuite Enterprise Job Scheduling server"
	if fuser -s /opt/bicsuite/log/BICserver.out 2>/dev/null
	then
	    $LOG_WARNING_MSG "already running"
	    $ECHO_SUCCESS
	else
	    # Start bicsuite!server
	    su - bicsuite /bin/bash -c ". ~/.bashrc; server-start" >/dev/null 2>&1
	    if fuser -s /opt/bicsuite/log/BICserver.out 2>/dev/null
	    then
	        $ECHO_SUCCESS
	    else
                $ECHO_FAILURE
	        $LOG_FAILURE_MSG "Please take a look at the /opt/bicsuite/log/BICserver.out.* files"
	    fi
	fi
	;;

  'stop')
	echo -n "Stopping bicsuite Enterprise Job Scheduling server"
	if fuser -s /opt/bicsuite/log/BICserver.out 2>/dev/null
	then
	    # Stop bicsuite!server
	    su - bicsuite /bin/bash -c ". ~/.bashrc; server-stop" >/dev/null 2>&1
	    $ECHO_SUCCESS
	else
	    $LOG_WARNING_MSG "not running"
	    $ECHO_SUCCESS
	fi
	;;

  'restart')
	echo -n "Restarting bicsuite Enterprise Job Scheduling server"
	if fuser -s /opt/bicsuite/log/BICserver.out 2>/dev/null
	then
	    # Stop bicsuite!server
	    su - bicsuite /bin/bash -c ". ~/.bashrc; server-stop" >/dev/null 2>&1
	fi
	# Start bicsuite!server
	su - bicsuite /bin/bash -c ". ~/.bashrc; server-start" >/dev/null 2>&1
	if fuser -s /opt/bicsuite/log/BICserver.out 2>/dev/null
	then
	    $ECHO_SUCCESS
	else
            $ECHO_FAILURE
	    $LOG_FAILURE_MSG "Please take a look at the /home/bicsuite/log/BICserver.out.* files"
	fi
	;;

  'reload'|'force-reload')
  	$LOG_WARNING_MSG "Reloading bicsuite!server not supported; use 'restart' instead"
	$ECHO_SUCCESS
	;;

  'status')
	if fuser -s /opt/bicsuite/log/BICserver.out 2>/dev/null
	then
	  echo "bicsuite!server is up"
	else
	  echo "bicsuite!server is down"
	  exit 3
	fi
  	;;

  *)
	echo "Usage: $SELF start|stop|restart|reload|force-reload|status"
	exit 1
	;;
esac
