#!/bin/sh
#
# chkconfig: - 92 34
# description: Starts and stops the Canias ERP System.

### BEGIN INIT INFO
# Provides: canias
# Required-Start: vncserver
# Required-Stop: vncserver
# Default-Start:
# Default-Stop: 0 1 2 3 4 5 6
# Short-Description: start|stop|restart|reload|status canias_start_stop.sh
# Description: Start and Stop Canias ERP System
### END INIT INFO

# Source function library.
if [ -f /etc/init.d/functions ] ; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 1
fi

basedir="/canias"
appdir="$basedir/iasAppServer"
logdir="$appdir/Log"
java6="/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java"
# java5="$basedir/java/j2re1.4.2_18/bin/java"
java5="$appdir/jre1.5.0_12_32bit/bin/java"

start_canias_rmi_registry()
{
  # java_parameter="-d64 -XX:MaxPermSize=128m -XX:PermSize=128m -Xms32m -Xmx32m"
  java_parameter=""
  echo -n "Starting Canias RMI Registry: "
  runuser -l canias -c "cd $appdir && nohup $java6 -jar serverUtils.jar start_ias_rmi_registry $java_parameter 1>>$logdir/start_canias_rmi_registry.log 2>&1 &"
  echo
  sleep 2
}

start_canias_controller()
{
  echo -n "Starting Canias Controller: "
  export DISPLAY=$(hostname):1
  runuser -l canias -c "cd $appdir && nohup $java5 -classpath controller.jar -Djava.security.policy=canias.policy -Djava.library.path=. com.ias.starter.iasControllerStarter /Port:USB 1>>$logdir/start_canias_controller.log 2>&1 &"
  echo
  sleep 2
}

start_canias_server()
{
  echo -n "Starting Canias Server: "
  export DISPLAY=$(hostname):1
  java_parameter="-d64 -Xmx5g"
  # java_classpath="server.jar:./RESOURCES/lib/activation.jar:./RESOURCES/lib/axis.jar:./RESOURCES/lib/commons-discovery.jar:./RESOURCES/lib/commons-fileupload-1.1.1.jar:./RESOURCES/lib/commons-io-1.2.jar:./RESOURCES/lib/commons-logging.jar:./RESOURCES/lib/FontBox-0.1.0-dev.jar:./RESOURCES/lib/iascommapi.jar:./RESOURCES/lib/itext-paulo-155.jar:./RESOURCES/lib/jai_codec.jar:./RESOURCES/lib/jai_core.jar:./RESOURCES/lib/jaxrpc.jar:./RESOURCES/lib/jcchart451K.jar:./RESOURCES/lib/jcert.jar:./RESOURCES/lib/jcfield451K.jar:./RESOURCES/lib/jctable451K.jar:./RESOURCES/lib/jdbc2_0-stdext.jar:./RESOURCES/lib/jnet.jar:./RESOURCES/lib/jradius-client.jar:./RESOURCES/lib/jsse.jar:./RESOURCES/lib/mail_v1.4.jar:./RESOURCES/lib/mlibwrapper_jai.jar:./RESOURCES/lib/NSClient_comp_1.4.jar:./RESOURCES/lib/PDFBox-0.7.3-dev-20060516.jar:./RESOURCES/lib/RetepPDF.jar:./RESOURCES/lib/saaj.jar:./RESOURCES/lib/servlet.jar:./RESOURCES/lib/smlib.jar:./RESOURCES/lib/soap.jar:./RESOURCES/lib/uddi4j.jar:./RESOURCES/lib/wsdl4j.jar:./RESOURCES/lib/xerces.jar:./RESOURCES/lib/xml4j.jar:./RESOURCES/lib/JDBCDrivers"
  # for Sangel:
  java_classpath="server.jar:./RESOURCES/lib/activation.jar:./RESOURCES/lib/comm.jar:./RESOURCES/lib/commons-fileupload-1.0.jar:./RESOURCES/lib/commons-fileupload-1.1.1.jar:./RESOURCES/lib/commons-io-1.2.jar:./RESOURCES/lib/djt.jar:./RESOURCES/lib/FontBox-0.1.0-dev.jar:./RESOURCES/lib/itext-paulo-155.jar:./RESOURCES/lib/jai_codec.jar:./RESOURCES/lib/jai_core.jar:./RESOURCES/lib/jcchart451K.jar:./RESOURCES/lib/jcert.jar:./RESOURCES/lib/jcfield451K.jar:./RESOURCES/lib/jctable451K.jar:./RESOURCES/lib/jdbc2_0-stdext.jar:./RESOURCES/lib/JDBCDrivers:./RESOURCES/lib/jnet.jar:./RESOURCES/lib/jradius-client.jar:./RESOURCES/lib/jsse.jar:./RESOURCES/lib/JustFormsPDF.jar:./RESOURCES/lib/lava.jar:./RESOURCES/lib/mail_v1.3.3.jar:./RESOURCES/lib/mlibwrapper_jai.jar:./RESOURCES/lib/NSClient_comp_1.4.jar:./RESOURCES/lib/PDFBox-0.7.3-dev-20060516.jar:./RESOURCES/lib/RetepPDF.jar:./RESOURCES/lib/servlet.jar:./RESOURCES/lib/smlib.jar:./RESOURCES/lib/soap.jar:./RESOURCES/lib/uddi4j.jar:./RESOURCES/lib/WebServiceJars:./RESOURCES/lib/WkJavaApi.jar:./RESOURCES/lib/xerces.jar:./RESOURCES/lib/xml4j.jar:./RESOURCES/lib/axis.jar:./RESOURCES/lib/commons-discovery.jar:./RESOURCES/lib/commons-logging.jar:./RESOURCES/lib/jaxrpc.jar:./RESOURCES/lib/saaj.jar:./RESOURCES/lib/wsdl4j.jar:./RESOURCES/lib/JDBCDrivers"
  canias_settings="/settings:ServerSettings.ias"
  runuser -l canias -c "cd $appdir && nohup $java6 $java_parameter -Djava.security.policy=canias.policy -classpath $java_classpath com.ias.starter.iasServerStarter $canias_settings 1>>$logdir/start_canias_server.log 2>&1 &"
  echo
  sleep 2
}

start_canias_server2()
{
  echo -n "Starting Canias Server: "
  export DISPLAY=$(hostname):1
  java_parameter="-d64 -Xmx5g"
  # java_classpath="server.jar:./RESOURCES/lib/activation.jar:./RESOURCES/lib/axis.jar:./RESOURCES/lib/commons-discovery.jar:./RESOURCES/lib/commons-fileupload-1.1.1.jar:./RESOURCES/lib/commons-io-1.2.jar:./RESOURCES/lib/commons-logging.jar:./RESOURCES/lib/FontBox-0.1.0-dev.jar:./RESOURCES/lib/iascommapi.jar:./RESOURCES/lib/itext-paulo-155.jar:./RESOURCES/lib/jai_codec.jar:./RESOURCES/lib/jai_core.jar:./RESOURCES/lib/jaxrpc.jar:./RESOURCES/lib/jcchart451K.jar:./RESOURCES/lib/jcert.jar:./RESOURCES/lib/jcfield451K.jar:./RESOURCES/lib/jctable451K.jar:./RESOURCES/lib/jdbc2_0-stdext.jar:./RESOURCES/lib/jnet.jar:./RESOURCES/lib/jradius-client.jar:./RESOURCES/lib/jsse.jar:./RESOURCES/lib/mail_v1.4.jar:./RESOURCES/lib/mlibwrapper_jai.jar:./RESOURCES/lib/NSClient_comp_1.4.jar:./RESOURCES/lib/PDFBox-0.7.3-dev-20060516.jar:./RESOURCES/lib/RetepPDF.jar:./RESOURCES/lib/saaj.jar:./RESOURCES/lib/servlet.jar:./RESOURCES/lib/smlib.jar:./RESOURCES/lib/soap.jar:./RESOURCES/lib/uddi4j.jar:./RESOURCES/lib/wsdl4j.jar:./RESOURCES/lib/xerces.jar:./RESOURCES/lib/xml4j.jar:./RESOURCES/lib/JDBCDrivers"
  # for Sangel:
  java_classpath="server.jar:./RESOURCES/lib/activation.jar:./RESOURCES/lib/comm.jar:./RESOURCES/lib/commons-fileupload-1.0.jar:./RESOURCES/lib/commons-fileupload-1.1.1.jar:./RESOURCES/lib/commons-io-1.2.jar:./RESOURCES/lib/djt.jar:./RESOURCES/lib/FontBox-0.1.0-dev.jar:./RESOURCES/lib/itext-paulo-155.jar:./RESOURCES/lib/jai_codec.jar:./RESOURCES/lib/jai_core.jar:./RESOURCES/lib/jcchart451K.jar:./RESOURCES/lib/jcert.jar:./RESOURCES/lib/jcfield451K.jar:./RESOURCES/lib/jctable451K.jar:./RESOURCES/lib/jdbc2_0-stdext.jar:./RESOURCES/lib/JDBCDrivers:./RESOURCES/lib/jnet.jar:./RESOURCES/lib/jradius-client.jar:./RESOURCES/lib/jsse.jar:./RESOURCES/lib/JustFormsPDF.jar:./RESOURCES/lib/lava.jar:./RESOURCES/lib/mail_v1.3.3.jar:./RESOURCES/lib/mlibwrapper_jai.jar:./RESOURCES/lib/NSClient_comp_1.4.jar:./RESOURCES/lib/PDFBox-0.7.3-dev-20060516.jar:./RESOURCES/lib/RetepPDF.jar:./RESOURCES/lib/servlet.jar:./RESOURCES/lib/smlib.jar:./RESOURCES/lib/soap.jar:./RESOURCES/lib/uddi4j.jar:./RESOURCES/lib/WebServiceJars:./RESOURCES/lib/WkJavaApi.jar:./RESOURCES/lib/xerces.jar:./RESOURCES/lib/xml4j.jar:./RESOURCES/lib/axis.jar:./RESOURCES/lib/commons-discovery.jar:./RESOURCES/lib/commons-logging.jar:./RESOURCES/lib/jaxrpc.jar:./RESOURCES/lib/saaj.jar:./RESOURCES/lib/wsdl4j.jar:./RESOURCES/lib/JDBCDrivers"
  canias_settings="/settings:ServerSettings_2.ias"
  runuser -l canias -c "cd $appdir && nohup $java6 $java_parameter -Djava.security.policy=canias.policy -classpath $java_classpath com.ias.starter.iasServerStarter $canias_settings 1>>$logdir/start_canias_server2.log 2>&1 &"
  echo
  sleep 2
}

start_canias_load_balancer()
{
  echo -n "Starting Canias Load Balancer: "
  java_parameter=""
  java_classpath="loadBalancer.jar:RESOURCES/lib/xerces.jar"
  runuser -l canias -c "cd $appdir && nohup $java6 $java_parameter -Djava.security.policy=canias.policy -classpath $java_classpath com.ias.starter.iasLoadBalancerStarter 1>>$logdir/start_canias_load_balancer.log 2>&1 &"
  echo
  sleep 2
}

start() 
{
  start_canias_rmi_registry
  start_canias_controller
  start_canias_server
  start_canias_server2
  start_canias_load_balancer
}

stop() 
{
  echo -n "Shutting down all Canias related Java processes: "
  # kill processes in reverse order
  plist=$(pgrep -u canias java | sort -n -r)
  for i in $plist ; do
    kill $i
  done
  echo
}

status()
{
  cnt=$(pgrep -u canias java | wc -l)
  if [[ $cnt -gt 0 ]] ; then
    echo "$cnt java processes for user canias are running..."
    exit 0
  else
    echo "Canias seems to be stopped"      
    exit 1
  fi
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    stop
    sleep 5
    start
    ;;
  status)
    status
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|reload|status}"
    exit 1
esac

# Always return 0 because we do not want to have a cluster starting
# failure just because of Canias!
exit 0
