#!/bin/bash
accept=$1
port=$2
XMX=${3}
silentInstall=$accept

Check=`/opt/egvmagent/bin/xvt setup_vmagent`
export Check
if [ $Check = "FALSE" ]
then
	echo "The eG VM Agent must be setup by the eG user. Exiting ..."
	exit
fi

if [ -z "$XMX" ]
then
	XMX="-Xmx512m"
fi

if [ -z "$silentInstall" ]
then
	echo "Configuring the eG VM Agent ..."
	echo " "
	echo "*************************************************************************"
	echo "  The licensing terms for the eG software are mentioned in the file            "
	echo "   /opt/egvmagent/license_agreement. PLEASE READ THIS FILE BEFORE       "
	echo "   PROCEEDING FURTHER.						     "
	echo "*************************************************************************"
	echo " "
	echo "Please indicate if you accept the eG licensing terms y/n [n]: "
	read accept 
	if test -z "$accept" ; then
		exit
	fi
fi

if test  "$accept" != "y" ; then
	exit
fi

PATH=$PATH:/usr/bin
export PATH

if [ -z "$silentInstall" ]
then
	clear
fi
#TMPDIR check this enviroment variable value
if test -z "$TMPDIR" ; then
         TMPDIR="/tmp"
fi

EG_HOME=/opt/egvmagent
export EG_HOME

if [ -z "$silentInstall" ]
then
	clear
fi

EG_CLASSPATH=$EG_HOME/lib/egvmagent.jar:$EG_HOME/lib/eg_util.jar
export EG_CLASSPATH
CLASSPATH=$EG_CLASSPATH
export CLASSPATH

if [ -z "$silentInstall" ]
then
echo "Setup of the eG VM Agent communication path"
echo "******************************************"
echo "Enter the port number of the eG VM Agent [60001]: " 
read port

if test -z "$port" ; then
	port="60001"
fi
fi
java_home="/opt/egvmagent/jre/"
export java_home
javaHome=$java_home
export javaHome
JAVA_HOME=$javaHome
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH

JAVA_LIB=$javaHome/lib
export JAVA_LIB

PATH=/opt/egvmagent/bin:$JAVA_HOME/bin:/usr/bin:/bin:$PATH:/etc
export PATH

isJRE16=`/opt/egvmagent/jre/bin/java -version 2>&1 | grep "1.6" | wc -l`
isJRE17=`/opt/egvmagent/jre/bin/java -version 2>&1 | grep "1.7" | wc -l`
if [ $isJRE17 -eq 0 ]
then
	isJRE17=`/opt/egvmagent/jre/bin/java -version 2>&1 | grep "1.8" | wc -l`
fi
isJRE10=`/opt/egvmagent/jre/bin/java -version 2>&1 | grep "10." | wc -l`
isJRE12=`/opt/egvmagent/jre/bin/java -version 2>&1 | grep "12." | wc -l`
export isJRE16 
export isJRE17
export isJRE10
export isJRE12
javaCmd=" "
if [ "$isJRE16" -ge "1" ]
then
	javaCmd=" -XX:ErrorFile=/dev/null -XX:HeapDumpPath=/dev/null "
fi
if [ "$isJRE17" -ge "1" ]
then
	javaCmd=" -XX:ErrorFile=/dev/null -XX:HeapDumpPath=/dev/null -XX:-CreateMinidumpOnCrash "
fi
if [ "$isJRE12" -ge "1" ]
then
	javaCmd=" -Djavax.xml.soap.SAAJMetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl -XX:ErrorFile=/dev/null -XX:HeapDumpPath=/dev/null -XX:-CreateCoredumpOnCrash "
elif [ "$isJRE10" -ge "1" ]
then
	javaCmd=" --add-modules=java.xml.ws -Djavax.xml.soap.SAAJMetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl -XX:ErrorFile=/dev/null -XX:HeapDumpPath=/dev/null -XX:-CreateCoredumpOnCrash "
fi

EG_TEMP1=/tmp/eg_mon1
EG_TEMP2=/tmp/eg_mon2
AGENT_MON=$EG_HOME/bin/egvmagentmon
export EG_TEMP1 EG_TEMP2 AGENT_MON
cat $AGENT_MON | sed '/^#!\/bin\/sh/d' > $EG_TEMP1
cat $EG_TEMP1 | sed '/^JAVA_HOME=/d' > $EG_TEMP2 
cat $EG_TEMP2 | sed '/^JAVA_LIB=/d' > $EG_TEMP1
cat $EG_TEMP1 | sed '/^export JAVA_HOME JAVA_LIB/d' > $EG_TEMP2
echo "#!/bin/sh" > $AGENT_MON
echo "JAVA_HOME=$JAVA_HOME" >> $AGENT_MON
echo "JAVA_LIB=$JAVA_LIB" >> $AGENT_MON
echo "export JAVA_HOME JAVA_LIB" >> $AGENT_MON
cat $EG_TEMP2 >> $AGENT_MON
#rm -f $EG_TEMP1 $EG_TEMP2
echo "#!/bin/bash" > $EG_HOME/bin/start_vmagent
echo "Check=\`/opt/egvmagent/bin/xvt start_vmagent\`" >> $EG_HOME/bin/start_vmagent
echo "export Check" >> $EG_HOME/bin/start_vmagent
echo "if [ \$Check = \"FALSE\" ]" >> $EG_HOME/bin/start_vmagent
echo "then" >> $EG_HOME/bin/start_vmagent
echo "echo \"The eG VM Agent must be started by the eG user. Exiting ...\"" >> $EG_HOME/bin/start_vmagent
echo "exit" >> $EG_HOME/bin/start_vmagent
echo "fi" >> $EG_HOME/bin/start_vmagent
echo "" >> $EG_HOME/bin/start_vmagent
echo "JAVA_HOME=$JAVA_HOME" >> $EG_HOME/bin/start_vmagent
echo "export JAVA_HOME" >> $EG_HOME/bin/start_vmagent
echo "JAVA_LIB=$JAVA_LIB" >> $EG_HOME/bin/start_vmagent
echo "export JAVA_LIB" >> $EG_HOME/bin/start_vmagent
echo " " >> $EG_HOME/bin/start_vmagent
echo "ps1=" >> $EG_HOME/bin/start_vmagent
echo "export ps1" >> $EG_HOME/bin/start_vmagent
echo "PS1=" >> $EG_HOME/bin/start_vmagent
echo "export PS1" >> $EG_HOME/bin/start_vmagent
echo " " >> $EG_HOME/bin/start_vmagent
echo "CLASSPATH=" >> $EG_HOME/bin/start_vmagent
echo "export CLASSPATH" >> $EG_HOME/bin/start_vmagent
echo "LD_LIBRARY_PATH=$EG_HOME/lib:$LDP\$LD_LIBRARY_PATH" >> $EG_HOME/bin/start_vmagent
echo "export LD_LIBRARY_PATH" >> $EG_HOME/bin/start_vmagent
echo "ulimit -c 0" >> $EG_HOME/bin/start_vmagent
echo "EG_HOME=/opt/egvmagent" >> $EG_HOME/bin/start_vmagent
echo "export EG_HOME" >> $EG_HOME/bin/start_vmagent
echo "if [ ! -z \"\$JAVA_HOME\" ] " >> $EG_HOME/bin/start_vmagent
echo "then" >> $EG_HOME/bin/start_vmagent
echo "CLASSPATH=\$CLASSPATH:\$JAVA_LIB/tools.jar:\$JAVA_LIB/dt.jar:\$JAVA_LIB/rt.jar" >> $EG_HOME/bin/start_vmagent
echo "export CLASSPATH" >> $EG_HOME/bin/start_vmagent
echo "fi" >> $EG_HOME/bin/start_vmagent
echo "LANG=en_US" >> $EG_HOME/bin/start_vmagent
echo "export LANG" >> $EG_HOME/bin/start_vmagent
echo "jar_list=\`ls \$EG_HOME/lib | grep \".jar\" | awk '{print \$1}'\`" >> $EG_HOME/bin/start_vmagent
echo "if [ \"\$jar_list\" ]" >> $EG_HOME/bin/start_vmagent
echo "then" >> $EG_HOME/bin/start_vmagent
echo "        for jar in \$jar_list"  >> $EG_HOME/bin/start_vmagent
echo "        do" >> $EG_HOME/bin/start_vmagent
echo "                CLASSPATH=\$CLASSPATH:\$EG_HOME/lib/\$jar" >> $EG_HOME/bin/start_vmagent
echo "                export CLASSPATH" >> $EG_HOME/bin/start_vmagent
echo "        done" >> $EG_HOME/bin/start_vmagent
echo "fi" >> $EG_HOME/bin/start_vmagent
echo "zip_list=\`ls \$EG_HOME/lib | grep \".zip\" | awk '{print \$1}'\`" >> $EG_HOME/bin/start_vmagent
echo "if [ \"\$zip_list\" ]" >> $EG_HOME/bin/start_vmagent
echo "then" >> $EG_HOME/bin/start_vmagent
echo "        for zip in \$zip_list" >> $EG_HOME/bin/start_vmagent
echo "        do" >> $EG_HOME/bin/start_vmagent
echo "                CLASSPATH=\$CLASSPATH:\$EG_HOME/lib/\$zip" >> $EG_HOME/bin/start_vmagent
echo "                export CLASSPATH" >> $EG_HOME/bin/start_vmagent
echo "        done" >> $EG_HOME/bin/start_vmagent
echo "fi" >> $EG_HOME/bin/start_vmagent

echo "CLASSPATH=\$EG_HOME/lib/egvmagent.jar:\$EG_HOME/lib/eg_util.jar:\$CLASSPATH" >> $EG_HOME/bin/start_vmagent
echo "export CLASSPATH" >> $EG_HOME/bin/start_vmagent

echo "PATH=.:\$JAVA_HOME/bin:\$EG_HOME/bin:/sbin:/usr/bin:/usr/sbin:/bin:\$PATH:/usr/local/bin:/bin" >> $EG_HOME/bin/start_vmagent
echo "export PATH" >> $EG_HOME/bin/start_vmagent
echo "portNo=$port" >> $EG_HOME/bin/start_vmagent 
echo "export portNo" >> $EG_HOME/bin/start_vmagent
echo "XMX=$XMX" >> $EG_HOME/bin/start_vmagent
echo "export XMX" >> $EG_HOME/bin/start_vmagent
echo "/opt/egvmagent/bin/stop_vmagent 0" >> $EG_HOME/bin/start_vmagent

echo "unset JAVA_TOOL_OPTIONS" >> $EG_HOME/bin/start_vmagent
echo "unset _JAVA_OPTIONS" >> $EG_HOME/bin/start_vmagent
echo "unset IBM_JAVA_OPTIONS" >> $EG_HOME/bin/start_vmagent


tru=`uname -a | grep "^OSF1" | wc -l`
if [ $tru -eq 0 ]
then
	echo "nohup /opt/egvmagent/jre/bin/java -Xrs -Deg.name=EgInsideViewServer $javaCmd \$XMX -Dsun.net.inetaddr.ttl=900 EgInsideViewServer -HomeDir \$EG_HOME -ServerPort \$portNo > /dev/null 2>/dev/null & " >> $EG_HOME/bin/start_vmagent
else
	echo "/opt/egvmagent/jre/bin/java -fast32 -Xrs -Deg.name=EgInsideViewServer $javaCmd \$XMX -Dsun.net.inetaddr.ttl=900 EgInsideViewServer -HomeDir \$EG_HOME -ServerPort \$portNo > /dev/null 2>/dev/null & " >> $EG_HOME/bin/start_vmagent
fi

echo "sleep 5" >> $EG_HOME/bin/start_vmagent
echo "ver=\"\`java com.eg.EgInstallInfo\`\"" >> $EG_HOME/bin/start_vmagent
echo "export ver" >> $EG_HOME/bin/start_vmagent
echo "val=\`ps -e -o pid,args | grep egvmagent/jre | grep -v grep | wc -l\`" >> $EG_HOME/bin/start_vmagent
echo "if [ \$val -gt 0 ] " >>  $EG_HOME/bin/start_vmagent
echo "then " >>  $EG_HOME/bin/start_vmagent
echo   "echo \"***************************************************************\""  >>  $EG_HOME/bin/start_vmagent
echo   "echo \"The eG VM Agent \$ver has been started ...\"" >>  $EG_HOME/bin/start_vmagent
echo   "echo \"Please check the file: \"/opt/egvmagent/logs/error_log\"\"" >>  $EG_HOME/bin/start_vmagent
echo "echo \"for any errors while executing the VM agent.\""  >>  $EG_HOME/bin/start_vmagent
echo "echo \"***************************************************************\"">>  $EG_HOME/bin/start_vmagent
echo "else"  >>  $EG_HOME/bin/start_vmagent
	echo "val=\`ps -e -o pid,args | grep \"java -Xrs\" | grep -v grep | wc -l\`" >> $EG_HOME/bin/start_vmagent
	echo "if [ \$val -gt 0 ] " >>  $EG_HOME/bin/start_vmagent
	echo "then " >>  $EG_HOME/bin/start_vmagent
	echo	"echo \"***************************************************************\""  >>  $EG_HOME/bin/start_vmagent
	echo	"echo \"The eG VM Agent \$ver has been started ...\"" >>  $EG_HOME/bin/start_vmagent
	echo	"echo \"Please check the file: \"/opt/egvmagent/logs/error_log\"\"" >>  $EG_HOME/bin/start_vmagent
	echo	"echo \"for any errors while executing the VM agent.\""  >>  $EG_HOME/bin/start_vmagent
	echo	"echo \"***************************************************************\"">>  $EG_HOME/bin/start_vmagent
	echo "else" >> $EG_HOME/bin/start_vmagent

		echo "val=\`ps -e -o pid,args | grep \"java -fast32\" | grep -v grep | wc -l\`" >> $EG_HOME/bin/start_vmagent
		echo "if [ \$val -gt 0 ] " >>  $EG_HOME/bin/start_vmagent
		echo "then " >>  $EG_HOME/bin/start_vmagent
		echo	"echo \"***************************************************************\""  >>  $EG_HOME/bin/start_vmagent
		echo	"echo \"The eG VM Agent \$ver has been started ...\"" >>  $EG_HOME/bin/start_vmagent
		echo	"echo \"Please check the file: \"/opt/egvmagent/logs/error_log\"\"" >>  $EG_HOME/bin/start_vmagent
		echo	"echo \"for any errors while executing the VM agent.\""  >>  $EG_HOME/bin/start_vmagent
		echo	"echo \"***************************************************************\"">>  $EG_HOME/bin/start_vmagent
		echo "else" >> $EG_HOME/bin/start_vmagent

		echo	"echo \"***********************************************************************\""  >>  $EG_HOME/bin/start_vmagent
		echo	"echo \"The eG VM Agent \$ver failed to start ...\""  >>  $EG_HOME/bin/start_vmagent
		echo	"echo \"Please check the file: /opt/egvmagent/logs/error_log for details.\"" >> $EG_HOME/bin/start_vmagent
		echo	"echo \"***********************************************************************\""  >>  $EG_HOME/bin/start_vmagent
		echo "fi"  >>  $EG_HOME/bin/start_vmagent	
	echo "fi"  >>  $EG_HOME/bin/start_vmagent
echo "fi"  >>  $EG_HOME/bin/start_vmagent
echo "nohup /opt/egvmagent/bin/egvmagentmon start > /dev/null 2>&1 &" >> $EG_HOME/bin/start_vmagent
chmod +x $EG_HOME/bin/start_vmagent

CLASSPATH=$EG_CLASSPATH

# To change permissions for the following scripts to enable only the eG user to 
# execute them
chmod 700 /opt/egvmagent/bin/start_vmagent /opt/egvmagent/bin/stop_vmagent
if [ -z "$silentInstall" ]
then
clear
echo "****************************************************************************"
echo " "
echo " The eG VM Agent has been configured successfully."
echo " Please use the commands /opt/egvmagent/bin/start_vmagent and"
echo " /opt/egvmagent/bin/stop_vmagent to start and stop the VM agent."
echo " "
echo " To provide feedback and report errors, please contact "
echo " support@eginnovations.com."
echo "*************************************************************************"
echo " "
fi

