#!/bin/sh
# $Id: sm_rmi_main,v 1.29 2013/12/04 11:10:22 sesam Exp $
# sm_rmi_main. Starts sesam rmi_gui server and kills java process, if a signal is recived


trap 'kill ${java_pid};exit 0' 1 2 3 4 5 6 15  
read_ini ()
{
   SM_INI=`grep -i "^sm_ini" /etc/sesam2000.ini|cut -d"=" -f2`
   if [  $SM_INI ]
   then
     echo `grep -i "^$1=" $SM_INI | cut -d"=" -f2-`
   fi
}

jsrv=`read_ini ui`
gv_ro_gui=`read_ini gv_ro_gui`
gv_ro_bin=`read_ini gv_ro_bin`
gv_ro_db=`read_ini gv_ro_db`
gv_rw_ini=`read_ini gv_rw_ini`
gv_lang=`read_ini lang`
encoding=`read_ini encoding`
rmi_wait=`read_ini rmi_wait_for_db`
rmiport=`read_ini gv_port_rmi`

JAVAOPTS=`read_ini java_options`

sm_jar="${gv_ro_gui}/sm_ui.jar"
sm_rmigui="${gv_ro_gui}/sm_gui.jar:${gv_ro_gui}/sm_lib.jar"

sm_conf=-Dsep.sesam.config=${gv_rw_ini}sm.ini
encoding=${encoding:=UTF-8}


while getopts VhA:e:f:l:M:P:p:r:S:w:v opt
do
      case $opt in
         A) DBACCESS=$OPTARG;;
         S) SERVER="${SERVER} -S $OPTARG";;
         e) encoding=${OPTARG};;
         f) sm_rmigui=${OPTARG};;
         l) LOOK="${OPTARG}";;
         M) MASTER="-M${OPTARG}";;
         P) SAVEPREF="-P${OPTARG}";;
         p) rmiport=$OPTARG;;
         w) wsport=$OPTARG;;
         r) GUI_LANG=$OPTARG;;
         v) VERBOSE=$OPTARG;;
         V) SHOWVERSION=1;;
         \?|h) usage
            exit 1;;

      esac
done
shift `expr $OPTIND - 1`

servername=`read_ini gv_server`
port_rmi=" -c${rmiport} -D${rmiport}"

[ "$wsport" ] && wsport="-H $wsport"

[ -d ${sm_rmigui} ] && sm_rmigui=${sm_rmigui}/sm_gui.jar:${sm_rmigui}/sm_lib.jar

#LD_LIBRARY_PATH=${gv_ro_bin}:${gv_ro_db}:$LD_LIBRARY_PATH
PATH=${gv_ro_bin}:${gv_ro_db}:$PATH

export PATH 
#export LD_LIBRARY_PATH

if [ "$jsrv" = "1" -o "$jsrv" = "2" ]
then
   JAVA_CHECK=`java -version 2>&1 | grep 1.[78]`
   if [ "$JAVA_CHECK" = "" ]
   then
     echo "FAIL: No Java VM >= 1.7. found !"
     sm_prot -w "Could not start java server: No java >= 1.7 found"
     exit 1
   fi
   port_rmi=" -p${rmiport}"
else
   JAVA_CHECK=`java -version 2>&1 | grep 1.[67]`
   if [ "$JAVA_CHECK" = "" ]
   then
     echo "FAIL: No Java VM >= 1.6. found !"
     sm_prot -w "Could not start java server: No java >= 1.6 found"
     exit 1
   fi
fi

if [ -r /etc/fedora-release ]
then
  # workaround for java 1.4.2 and seLinux problem
  grep 4 /etc/fedora-release
  [ "$?" -eq "0" ] && JAVAOPTS="${JAVAOPTS} -Djava.net.preferIPv4Stack=true"
fi

# if posgresql needs very long to become ready
sleep ${rmi_wait:-0}

if [ "$jsrv" = "1" -o "$jsrv" = "2" ]
then
   java -classpath "${sm_jar}" ${sm_conf} -Djava.rmi.server.hostname=${servername} -Dfile.encoding=${encoding} -Djava.security.policy=${gv_rw_ini}/sm_java.policy de.sep.sesam.gui.server.GUIServer ${port_rmi} ${http_port} -r${gv_lang} &
else
   java -classpath "${sm_rmigui}" $JAVAOPTS -Djava.rmi.server.hostname=${servername} -Dfile.encoding=${encoding} -Djava.security.policy=${gv_rw_ini}/sm_java.policy de.sep.sesam.gui.server.GUIServer ${port_rmi} $wsport -r${gv_lang} &
fi

java_pid=$!
wait ${java_pid}

sm_prot -w "Could not start RMI server: Please try to start 'sm_rmi_main' manually"
echo $?
exit 2
