#!/bin/bash
# CAESES LFL Server - Upstart config file
# FRIENDSHIP SYSTEMS AG
# last mod: lorentz 2015-03-25 
# optimized for pacemaker monitoring
# using the LSB standards, status return values are 0 3
# http://www.linux-ha.org/wiki/LSB_Resource_Agents

RUN_AS=nobody
LICSRVPATH=/opt/CAESES
LICSRV=ffloatsrv

LICSRVBIN="$LICSRVPATH/bin/Linux.x86_64/$LICSRV"

#command line arguments will override setting file
LOGPATH=$LICSRVPATH
BINDIP="0.0.0.0"
LICSRVPORT="8443"

HOSTNAME=`hostname -s`
#LICFILE=$LICSRVPATH/lic/fslicense_${HOSTNAME}.dat
LICFILE=""

#STARTOPTS=" -p $LICSRVPORT --logpath $LOGPATH -i $BINDIP"
STARTOPTS=" -p $LICSRVPORT"

          if [ -z ${LD_LIBRARY_PATH} ] ; then
            LDP=${LICSRVPATH}
          else
            LDP=${LICSRVPATH}:${LD_LIBRARY_PATH}
          fi

function execCAESES() {
	  local OPTS=$@
          if [ "x$USER" != "x$RUN_AS" ]; then 
            sudo FS_FRAMEWORK_LICENSE=$LICFILE LD_LIBRARY_PATH=${LDP} su -c "$LICSRVBIN $OPTS" -s /bin/bash $RUN_AS
          else
               export LD_LIBRARY_PATH=$LDP  
               export FS_FRAMEWORK_LICENSE=$LICFILE
               $LICSRVBIN $OPTS
          fi
}


start() {
          running
          return_val_running=$?

          if [ "$return_val_running" -eq 0 ] ; then
            exit 0
          fi
	  execCAESES $STARTOPTS

}

stop() {
	local OPTS="-t"
	execCAESES $OPTS
}


running() {
  local OPTS="-v"
  execCAESES $OPTS | grep -q "is running"
  return $?
}

getPID() {
  local OPTS="--pid"
  execCAESES $OPTS
#  echo $OUT | cut -d " " -f 2
}


status() {      
    running
    return_val=$?
    PID=`getPID`
  if [ "$return_val" -eq 0 ] ; then
wget --post-data="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<methodCall>
  <methodName>fsys.local.checkOnlineState</methodName>
  <params>
    <param>
        <value><i4>$PID</i4></value>
    </param>
  </params>
</methodCall>"  -O - https://$BINDIP:$LICSRVPORT/RPC2  --no-check-certificate -q | grep "<boolean>1</boolean>" -q
    STATUS="$?"
    if [ "$STATUS" -eq 0 ] ; then
      return 0
    else
      return 3
    fi
  fi
  return 3
}
 
case "$1" in 
        start)
                start
                ;;
        stop)
                stop
                ;;
        status)
                status
                exit $?
                ;;
        restart)
                stop 
                sleep 5
                start
                ;;
        *)
                echo "Usage: $0 {start|stop|status|restart}"
esac 
 
exit 0
