#!/bin/bash


aespass=$1

EG_DATABASE_ORA=$EG_HOME/bin/database
EG_DATABASE_MSSQL=$EG_HOME/bin/database/mssql
export EG_DATABASE_ORA EG_DATABASE_MSSQL

EG_TEMP_DIR=$EG_HOME/tmp
export EG_TEMP_DIR

oracleDriver="oracle.jdbc.driver.OracleDriver"
export oracleDriver
#sqlDriver="com.thinweb.thintds.Driver"
#export sqlDriver
sqlDriver="net.sourceforge.jtds.jdbc.Driver"
export sqlDriver

echo "Database configuration for the eG Manager"
echo "************************************************************************"
echo "The eG Manager requires a database server for storing its measurements."
echo "************************************************************************"
echo "Choose the type of database server which you want to use for the eG Manager :"

flag="y"
while [ "$flag" = "y" ]
do
	echo " "
	echo "[1] Oracle Database Server"
	echo "[2] Microsoft SQL Server"
	echo " "
	echo "Select the database server type by number: " > /dev/tty
	read choice < /dev/tty
	if test -z "$choice"
	then
		echo " "
        	echo "Please select a database server type :"
        else
                if [ $choice -eq 1 ]
                then
                        flag="n"
                else
                        if [ $choice -eq 2 ]
                        then
                                flag="n"
                        else
                                flag="y"
                        fi
                fi
        fi
done

clear 

if [ $choice -eq 1 ]
then
	# Oracle Setup starts here

	echo "*************************************************************************"
    	echo "    To set up the eG database, please ensure that you have an Oracle "
    	echo "    database instance running."
    	echo "*************************************************************************"
    	setupTerminate="y"
    	echo "Do you want to continue the setup y/n? [y] "
    	read setupTerminate
	if [ -z "$setupTerminate" ]
	then
        	setupTerminate="y"
	fi
	if [ "$setupTerminate" != "y" ]
	then
        	exit
	fi
	userCreation="n"
	DB_CHECK="y"
	while [ "$DB_CHECK" =  "y" ]
	do
        	echo "Enter the hostname (or IP address) of the Oracle server: "
        	FLAG="y"
        	while [ "$FLAG" = "y" ]
        	do
                	read oracleHost
                	if [ -n "$oracleHost" ]
                	then
                        	FLAG="n"
                	else
                        	echo "Please enter a valid hostname:"
                	fi
        	done
        	echo "Enter the port number of the Oracle server [1521]: "
        	read oraclePort
        	if [  -z "$oraclePort"  ]
        	then
                	oraclePort=1521
        	fi
        	echo "Enter the name of an Oracle instance (SID or ServiceName) that the eG Manager should use : "
        	FLAG="y"
        	while [ "$FLAG" = "y" ]
		do
			read oracleSid
                	if [ -n "$oracleSid" ]
                	then
                        	FLAG="n"
                	else
                        	echo "Please enter a valid Oracle instance name (SID or ServiceName) :\ c"
                	fi
        	done
        	ORACLE_SID=$oracleSid
        	export ORACLE_SID
        	echo ""
        	clear
        	echo "***************************************************************************"
 	        echo "Database access configuration for the eG Manager"
        	echo "***************************************************************************"
        	echo " "
        	echo "The eG Manager requires a special database user account to store its measures."
        	echo "Enter the eG database user name [egurkha]: "
        	read oracleUser
        	if [ -z  "$oracleUser" ]
        	then
                	oracleUser="egurkha"
        	fi
		containsSpecialChar=`$JAVA_CMD com.eg.EgCheckSpecialChar -user $oracleUser`

		if [ "$containsSpecialChar" = "TRUE" ]
		then
			oracleUser=\""$oracleUser\""
		fi		
        	FLAG="y"
 	        while [ "$FLAG" = "y" ]
        	do
                	stty -echo
                	echo "Enter the password for $oracleUser: "
                	read oraclePassword
                	echo " "
                	if [ -z "$oraclePassword" ]
                	then
                        	echo "Sorry, invalid password! Please try again ..."
                	else
                        	echo "Please re-enter the password for $oracleUser: "
                        	read oraclePassword2
                        	echo " "
                        	if [ -z "$oraclePassword2" ]
                        	then
                                	echo "Sorry, invalid password! Please try again ..."
                        	else
                                	if [ "$oraclePassword" = "$oraclePassword2" ]
                                	then
                                        	FLAG="n"
                                	else
                                        	echo "Sorry, the passwords supplied do not match! Please start again ..."
                                	fi
                        	fi
                	fi
                	stty echo
        	done
        	echo " "
        	echo "Does the '$oracleUser' account already exist y/n? [n] : "
        	read userExist
        	if [ -z "$userExist" ]
        	then
                	userExist="n"
        	fi
			
		tempOraHost=`echo $oracleHost`
		#echo "$tempOraHost"
		indexOfColon=`expr index "$tempOraHost" ":"`
		if [ $indexOfColon -ne 0 ]
		then
		     tempOraHost=`echo "["$tempOraHost"]"`
		fi
		#echo "$tempOraHost"

		
        	ans=`$JAVA_CMD com.eg.EgCheckDBUser -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort:$oracleSid -user $oracleUser -password "$oraclePassword" -ntlmv2 false -aespass $aespass`
        	#ans=`$JAVA_CMD com.eg.EgCheckDBUser -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort:$oracleSid -user "\""$oracleUser"\"" -password "$oraclePassword" -ntlmv2 false -aespass $aespass`
		if [ "$ans" = "SERVICENAME" ]
		then
			ans="TRUE"
			oracleServiceName="TRUE"
		else
			oracleServiceName="none"
		fi
        	if [ "$ans" = "TRUE" ]
        	then
                	echo "User '$oracleUser' exists! Continuing ... "
			if [ "$oracleServiceName" = "none" ]
			then
				$JAVA_CMD com.eg.EgRegisterDb -dbType oracle -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort:$oracleSid -user $oracleUser -password "$oraclePassword" -ntlmv2 false -aespass $aespass
			else
				$JAVA_CMD com.eg.EgRegisterDb -dbType oracle -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort/$oracleSid -user $oracleUser -password "$oraclePassword" -ntlmv2 false -aespass $aespass
			fi
			#$JAVA_CMD com.eg.EgRegisterDb -dbType oracle -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort:$oracleSid -user "\""$oracleUser"\"" -password "$oraclePassword" -ntlmv2 false -aespass $aespass
                	DB_CHECK="n"
                	# The user already exist and there is no need to create a user
                	userCreation="n"
        	else
                	if [ "$userExist" = "y" ]
                	then
                        	echo "Oracle user '$oracleUser' does not exist!"
				#echo "$ans"
                        	DB_CHECK="n"
                        	userCreation="y"
                	else
                        	DB_CHECK="n"
                        	userCreation="y"
                	fi
        	fi
	done
	if [ "$userCreation" = "y" ]
	then
        	echo "Do you want to create the '$oracleUser' account now y/n? [y] : "
        	read createUser
        	if [ -z "$createUser" ]
        	then
                	createUser="y"
        	fi
        	if [ "$createUser" = "n" ]
        	then
                	# Creating sql file to create the user #
			echo "alter session set container=$oracleSid;" > $EG_HOME/bin/create_user.sql
                	#echo "create user $oracleUser identified by \"$oraclePassword\" " > $EG_HOME/bin/create_user.sql
                	echo "create user $oracleUser identified by \"$oraclePassword\" container=current " >> $EG_HOME/bin/create_user.sql
                	#echo "create user \"$oracleUser\" identified by \"$oraclePassword\" " > $EG_HOME/bin/create_user.sql
                	echo "default tablespace <default_tablespace_name>" >> $EG_HOME/bin/create_user.sql
                	echo "temporary tablespace <temporary_tablespace_name>;" >> $EG_HOME/bin/create_user.sql
                	echo "Grant connect, resource to $oracleUser; " >> $EG_HOME/bin/create_user.sql
                	#echo "Grant connect, resource to \"$oracleUser\"; " >> $EG_HOME/bin/create_user.sql
                	echo "Grant select_catalog_role to $oracleUser; " >> $EG_HOME/bin/create_user.sql
                	#echo "Grant select_catalog_role to \"$oracleUser\"; " >> $EG_HOME/bin/create_user.sql
                	echo "*********************************************************************************"
                	echo "To create the account $oracleUser, please execute (or get your DBA"
                	echo "to execute) the queries in the file: /opt/egurkha/bin/create_user.sql"
                	echo " "
                	echo "Make sure that the tablespace to which $oracleUser is assigned "
                	echo "has the sufficient space for the eG database."
                	echo " "
                	echo "IMPORTANT: The eG Manager configuration has not been completed ...!"
                	echo "Restart the configuration of the eG Manager after creating "
                	echo "the $oracleUser account in the database."
                	echo "*********************************************************************************"
                	exit
        	fi

        	echo "Oracle requires that a user account be associated with a default "
        	echo "and a temporary tablespace."
        	echo "Please enter the default tablespace for the user $oracleUser: "
        	FLAG="y"
        	while [ "$FLAG" = "y" ]
        	do
                	read tspace1
                	if [ -n "$tspace1" ]
                	then
                        	FLAG="n"
                	else
                        	echo "Please enter a valid tablespace name: "
                	fi
        	done
        	echo "Please enter the temporary tablespace for the user $oracleUser: "
        	FLAG="y"
        	while [ "$FLAG" = "y" ]
        	do
                	read tspace2
                	if [ -n "$tspace2" ]
                	then
                        	FLAG="n"
                	else
                        	echo "Please enter a valid tablespace name: "
                	fi
        	done
        	# Creating sql file to create the user #
		echo "alter session set container=$oracleSid;" > $EG_HOME/bin/create_user.sql
        	#echo "create user $oracleUser identified by \"$oraclePassword\" " > $EG_HOME/bin/create_user.sql
        	echo "create user $oracleUser identified by \"$oraclePassword\" container=current" >> $EG_HOME/bin/create_user.sql
        	#echo "create user \"$oracleUser\" identified by \"$oraclePassword\" " > $EG_HOME/bin/create_user.sql
        	echo "default tablespace $tspace1 " >> $EG_HOME/bin/create_user.sql
        	echo "temporary tablespace $tspace2;" >>  $EG_HOME/bin/create_user.sql
        	#echo "quota 10m on $tspace1; " >> $EG_HOME/bin/create_user.sql
        	echo "Grant connect, resource to $oracleUser; " >> $EG_HOME/bin/create_user.sql
        	#echo "Grant connect, resource to \"$oracleUser\"; " >> $EG_HOME/bin/create_user.sql
        	echo "Grant select_catalog_role to $oracleUser; " >> $EG_HOME/bin/create_user.sql
        	#echo "Grant select_catalog_role to \"$oracleUser\"; " >> $EG_HOME/bin/create_user.sql
		#echo "alter user \"$oracleUser\" quota unlimited on $tspace1;" >> $EG_HOME/bin/create_user.sql
		echo "alter user $oracleUser quota unlimited on $tspace1;" >> $EG_HOME/bin/create_user.sql
        	chmod 755 $EG_HOME/bin/create_user.sql

        	FLAG="y"
        	echo " "
		echo "New user creation requires database administrator privileges."
 		echo "Enter the DBA user name : "
        	while [ "$FLAG" = "y" ]
        	do
                	read dbaUserName
                	if [ -n "$dbaUserName" ]
                	then
                        	FLAG="n"
                	else
                        	echo "Please enter a valid DBA user name : "
                	fi
        	done
        	FLAG="y"
        	stty -echo
        	echo "Enter the DBA password : "
        	while [ "$FLAG" = "y" ]
        	do
                	read dbaPassword
                	if [ -n "$dbaPassword" ]
                	then
                        	FLAG="n"
                	else
                        	echo "Please enter a valid DBA password : "
                	fi
        	done
        	stty echo
        	echo " "
        	echo "Database user creation started ..."
		ans=`$JAVA_CMD com.eg.EgCheckDBUser -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort:$oracleSid -dbauser $dbaUserName -dbapassword "$dbaPassword" -ntlmv2 false -aespass $aespass`
	
		if [ "$ans" = "SERVICENAME" ]
		then
			oracleServiceName="TRUE"
		else
			oracleServiceName="none"
		fi

		if [ "$oracleServiceName" = "none" ]
		then
			$JAVA_CMD com.eg.EgRegisterDb -dbType oracle -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort:$oracleSid -user $oracleUser -password "$oraclePassword" -ntlmv2 false -aespass $aespass
		else
			$JAVA_CMD com.eg.EgRegisterDb -dbType oracle -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort/$oracleSid -user $oracleUser -password "$oraclePassword" -ntlmv2 false -aespass $aespass
		fi
		#$JAVA_CMD com.eg.EgRegisterDb -dbType oracle -driver $oracleDriver -url jdbc:oracle:thin:@$tempOraHost:$oraclePort:$oracleSid -user "\""$oracleUser"\"" -password "$oraclePassword" -ntlmv2 false -aespass $aespass

        	ans=`$JAVA_CMD com.eg.EgUserCreation -host $oracleHost -port $oraclePort -sid $oracleSid -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_user.sql -ntlmv2 false`
        	if [ "$ans" = "TRUE" ]
        	then
                	echo "Database user created successfully ...!"
        	else
                	echo "Database user may  not be  created, possible reasons are ... "
                	echo "$ans"
        	fi
	fi
	# Writing the all the data into a eg_setup file for configuring in the different files #

	echo "[SETTINGS]" > $egSetup
	echo "EG_SERVER=$serverURL" >> $egSetup
	echo "    " >> $egSetup
	echo "[DB_PROPERTIES]" >> $egSetup
	echo "oracle.url=jdbc:oracle:thin:@$tempOraHost:$oraclePort:$oracleSid" >> $egSetup
	echo "oracle.user=$oracleUser" >> $egSetup
	echo "oracle.password=$oraclePassword" >> $egSetup
	echo "    " >> $egSetup
	echo "[APACHE_SETTINGS]" >> $egSetup
	echo "apachePort=$serverPort" >> $egSetup
	echo "isSsl=$isSsl" >> $egSetup
	echo "    " >> $egSetup
	echo "[TOMCAT_SETTINGS]" >> $egSetup
		echo "tomcatPort=$serverPort" >> $egSetup
		echo "isSsl=$isSsl" >> $egSetup
		#echo "tomcatPort=$tomcatPort"  >> $egSetup
	echo "connectorPort=$connectorPort" >> $egSetup
	echo "javaPath=$JAVA_HOME" >> $egSetup
	echo "    " >> $egSetup
	#echo "[MAIL_SETTINGS]" >> $egSetup
	#echo "MailHost=$mailIp" >> $egSetup
	echo "   " >> $egSetup
	echo " "
	echo "Configuration of the eG Manager continues..."
	echo "****************************************************************"
	echo "Attempting to load the eG tables into the database ..."
	echo "If any error appears during the configuration, there may be "
	echo "a problem with the Oracle database parameters you supplied. "
	echo "Please check and restart the manager configuration."
	echo ""
	echo "Press <Enter> to continue, <CTRL-C> to end "
	read junk < /dev/tty
	echo " "
	echo "Database table creation started ..."

	ans=`$JAVA_CMD com.eg.EgTableCreation -host $oracleHost -port $oraclePort -sid $oracleSid -user $oracleUser  -password "$oraclePassword" -dir $EG_DATABASE_ORA -ntlmv2 false`
		#ans=`$JAVA_CMD com.eg.EgTableCreation -host $oracleHost -port $oraclePort -sid $oracleSid -user "\""$oracleUser"\""  -password "$oraclePassword" -dir $EG_DATABASE_ORA -ntlmv2 false`
	if [ "$ans" = "TRUE" ]
	then
        	echo "Database table creation completed successfully ...!"
	else
        	echo "Database table creation partially completed, reasons may be the following ...!"
        	echo "$ans"
	fi
	# update eg_db.ini,eg_specs.ini and eg_services.ini
	ans=`$JAVA_CMD com.eg.EgCreateTrigger -host $oracleHost -port $oraclePort -sid $oracleSid -user $oracleUser -password "$oraclePassword" -dir $EG_DATABASE_ORA/trigger -ntlmv2 false 2>$EG_TEMP_DIR/err`
	#ans=`$JAVA_CMD com.eg.EgCreateTrigger -host $oracleHost -port $oraclePort -sid $oracleSid -user "\""$oracleUser"\"" -password "$oraclePassword" -dir $EG_DATABASE_ORA/trigger -ntlmv2 false 2>$EG_TEMP_DIR/err`
	if [ "$ans" = "TRUE" ]
	then
		echo "Database Trigger creation completed successfully ...!"
	else
		echo "Database Trigger creation partially completed, reasons may be the following ...!"
	        echo "$ans"
	fi


	$JAVA_CMD com.eg.SetupConfig
	$JAVA_CMD com.eg.UploadDb
	cat $EG_START_MANAGER | sed '/start_man_message/d' | sed '/exit;/d' > $tmpFile
	mv $tmpFile $EG_START_MANAGER
	rm -f $EG_HOME/bin/start_man_message

	#rm -f $egSetup

	# Oracle Setup up ends here

	else
		if [ $choice -eq 2 ]
	then
		# Starting MS SQL Setup
		echo "*************************************************************************"
    		echo "    When setting up the eG database, please ensure that you have "
    		echo "    sufficient space to host the eG database. "
    		echo "*************************************************************************"
		echo " "
    		setupTerminate="y"
    		echo "Do you want to continue the setup y/n? [y] "
    		read setupTerminate
		if [ -z "$setupTerminate" ]
		then
        		setupTerminate="y"
		fi
		if [ "$setupTerminate" != "y" ]
		then
        		exit
		fi
		DB_CHECK="y"
		userCreation="n"
		while [ "$DB_CHECK" =  "y" ]
		do
        		echo "Enter the hostname (or IP address) of the MS SQL server: "
        		FLAG="y"
        		while [ "$FLAG" = "y" ]
        		do
                		read sqlHost
                		if [ -n "$sqlHost" ]
                		then
                        		FLAG="n"
                		else
                        		echo "Please enter a valid hostname:"
                		fi
        		done
			tempSqlHost=`echo $sqlHost`
			indexOfColon=`expr index "$tempSqlHost" ":"`
			if [ $indexOfColon -ne 0 ]
			then
			     tempSqlHost=`echo "["$tempSqlHost"]"`
			fi
        		echo "Enter the port number of the MS SQL server [1433]: "
        		read sqlPort
        		if [  -z "$sqlPort"  ]
        		then
                		sqlPort=1433
        		fi
        		instance="none"
			if [ "$sqlPort" = "none" ]
			then
				while [ "$instance" = "none" ]
				do
					echo "Enter the name of the SQL instance to use: "
					read instance
					if [ -z "$instance" ]
					then
						instance="none"
					fi
				done
			fi
        		echo ""
        		echo "Does the SQL database server support SSL? y/n [n] "
        		read sqlSSL
        		if [  -z "$sqlSSL"  ]
        		then
                		sqlSSL="n"
        		fi
			sslrequest=""
			if [ "$sqlSSL" = "y" ]
			then
				sslrequest=";ssl=request"
			fi
			echo ""
			echo "Does the SQL database server with NTLMv2? y/n [n] "
        		read sqlNTLM
			if [  -z "$sqlNTLM"  ]
        		then
                		sqlNTLM="false"
        		fi
			if [ "$sqlNTLM" = "y" ]
			then
				sqlNTLM="true"
			else
				sqlNTLM="false"
			fi
			echo ""
        		clear
        		echo "***************************************************************************"
 	        	echo "Database access configuration for the eG Manager"
        		echo "***************************************************************************"
        		echo " "
        		echo "The eG Manager requires a database to store its measures."
        		echo " "
    			oldDb="y"
    			echo "Do you want to use an existing database y/n? [y] "
    			read oldDb
			sqlDbase=NONE
			if [ -z "$oldDb" ]
			then
        			oldDb="y"
			fi
			if [ "$oldDb" = "y" ]
			then
    				echo "Please enter the database name :"
        			FLAG="y"
        			while [ "$FLAG" = "y" ]
        			do
                			read sqlDbase
                			if [ -n "$sqlDbase" ]
                			then
                        			FLAG="n"
                			else
                        			echo "Please enter a valid database name :"
                			fi
        			done
			else
        			echo "Enter the new database name [egurkha]: "
        			read sqlDbase
        			if [ -z  "$sqlDbase" ]
        			then
                			sqlDbase="egurkha"
        			fi
				echo "New database creation requires database administrator privileges."
				echo " "	
				FLAG="y"
 				echo "Enter the DBA user name (e.g., "sa" or in the form "domain/dbaaccount"): "
        			while [ "$FLAG" = "y" ]
        			do
                			read dbaUserName
                			if [ -n "$dbaUserName" ]
                			then
                        			FLAG="n"
                			else
                        			echo "Please enter a valid DBA user name :"
                			fi
        			done
        			FLAG="y"
        			stty -echo
        			echo "Enter the DBA password : "
        			while [ "$FLAG" = "y" ]
        			do
                			read dbaPassword
                			if [ -n "$dbaPassword" ]
                			then
                        			FLAG="n"
                			else
                        			echo "Please enter a valid DBA password : "
                			fi
        			done
        			stty echo
        			echo " "

				# Db Creation code goes here
                		#echo "create database $sqlDbase;" > $EG_HOME/bin/create_database.sql
				#echo "create database \"$sqlDbase\"; collate SQL_Latin1_General_CP1_CI_AS" > $EG_HOME/bin/create_database.sql
					# We change this line to create database with specific collation 
					echo "create database \"$sqlDbase\" collate SQL_Latin1_General_CP1_CI_AS;" > $EG_HOME/bin/create_database.sql
                		echo "ALTER DATABASE \"$sqlDbase\" SET RECOVERY SIMPLE;" >>$EG_HOME/bin/create_database.sql
        			#$JAVA_CMD com.eg.EgDatabaseCreation -host $sqlHost -port $sqlPort -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_database.sql -driver $sqlDriver -url jdbc:twtds:sqlserver://$tempSqlHost:$sqlPort/master > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
	       			if [ "$instance" = "none" ]
        			then
        				#$JAVA_CMD com.eg.EgDatabaseCreation -host $sqlHost -port $sqlPort -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_database.sql -driver $sqlDriver -url jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/master$sslrequest -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
					$JAVA_CMD com.eg.EgDatabaseCreation -host $sqlHost -port $sqlPort -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_database.sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/master$sslrequest;charset=utf8" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
        			else
        				#$JAVA_CMD com.eg.EgDatabaseCreation -host $sqlHost -port $sqlPort -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_database.sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/master;INSTANCE=$instance$sslrequest" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
					$JAVA_CMD com.eg.EgDatabaseCreation -host $sqlHost -port $sqlPort -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_database.sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/master;INSTANCE=$instance$sslrequest;charset=utf8" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
        			fi
				ans=`cat $EG_TEMP_DIR/db`
				rm -f $EG_HOME/bin/create_database.sql
				if [ "$ans" = "TRUE" ]
				then
        				echo "Database creation completed successfully ...!"
				else
        				echo "Database could not be created...!"
					#echo "here"
					echo "$ans"
					exit
				fi
			fi

        		echo "The eG Manager requires a special database user account to store its measures."
        		echo "Enter the eG database user name (or in the form 'domain/user') [egurkha]: "
        		read sqlUser
        		if [ -z  "$sqlUser" ]
        		then
                		sqlUser="egurkha"
        		fi
        		FLAG="y"
 	        	while [ "$FLAG" = "y" ]
        		do
                		stty -echo
                		echo "Enter the password for $sqlUser: "
                		read sqlPassword
                		echo " "
                		if [ -z "$sqlPassword" ]
                		then
                       			echo "Sorry, invalid password! Please try again ..."
                		else
                       			echo "Please re-enter the password for $sqlUser: "
                       			read sqlPassword2
                       			echo " "
                       			if [ -z "$sqlPassword2" ]
                       			then
                               			echo "Sorry, invalid password! Please try again ..."
                       			else
                               			if [ "$sqlPassword" = "$sqlPassword2" ]
                               			then
                                       			FLAG="n"
                               			else
                                       			echo "Sorry, the passwords supplied do not match! Please start again ..."
                               			fi
                       			fi
                		fi
                		stty echo
        		done
        		echo " "

       			echo "Does the '$sqlUser' account already exist y/n? [n] : "
       			read userExist
       			if [ -z "$userExist" ]
       			then
               			userExist="n"
			fi
       			#$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url jdbc:twtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase -user $sqlUser -password "$sqlPassword" > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
       			#In EgCheckDBUser we handle the password and ntlmv2 argument value as seperate string 
			if [ "$instance" = "none" ]
       			then
       				#$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest -user $sqlUser -password "$sqlPassword -ntlmv2 $sqlNTLM" > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
       				#$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
				#$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest;charset=utf8" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
				$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sslrequest;charset=utf8" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
			else
				#$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest" -user $sqlUser -password "$sqlPassword -ntlmv2 $sqlNTLM" > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
				#$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
				#$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest;charset=utf8" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
				$JAVA_CMD com.eg.EgCheckDBUser -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/;INSTANCE=$instance$sslrequest;charset=utf8" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
			fi
			
			ans=`cat $EG_TEMP_DIR/db`
       			if [ "$ans" = "TRUE" ]
       			then
               			echo "User '$sqlUser' exists! Continuing ... "
				#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url jdbc:twtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase -user $sqlUser -password "$sqlPassword" -aespass $aespass
				if [ "$instance" = "none" ]
				then
					#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
					#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
					$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest;charset=utf8" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
               			else
               				#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
               				#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
					$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest;charset=utf8" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
               			fi
               			DB_CHECK="n"
               			# The user already exist and there is no need to create a user
               			userCreation="n"
       			else
               			if [ "$userExist" = "y" ]
               			then
                       			echo "User '$sqlUser' does not exist!"
                       			DB_CHECK="n"
                       			userCreation="y"
               			else
                       			DB_CHECK="n"
                       			userCreation="y"
               			fi
       			fi
			if [ "$userCreation" = "n" ]
			then
				domainUser=`$JAVA_CMD com.eg.EgDomainUserFormat -user $sqlUser`
				echo "use \"$sqlDbase\" EXEC sp_grantdbaccess '$domainUser';" > $EG_HOME/bin/create_user.sql
				echo "use \"$sqlDbase\" EXEC sp_addrolemember 'db_owner','$domainUser';" >> $EG_HOME/bin/create_user.sql
				echo "use \"$sqlDbase\" EXEC sp_defaultdb '$domainUser' , '$sqlDbase';" >> $EG_HOME/bin/create_user.sql
				if [ "$oldDb" = "y" ]
				then
					$JAVA_CMD com.eg.EgUserCreation -host $sqlHost -port $sqlPort -sid NULL -dbauser $sqlUser -dbapassword "$sqlPassword" -filepath $EG_HOME/bin/create_user.sql -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
				else
					$JAVA_CMD com.eg.EgUserCreation -host $sqlHost -port $sqlPort -sid NULL -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_user.sql -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
				fi
				ans=`cat $EG_TEMP_DIR/db`
				if [ "$ans" != "TRUE" ]
				then 
					echo "$ans"
				fi
			fi
			if [ "$userCreation" = "y" ]
			then
        			echo "Do you want to create the '$sqlUser' account now y/n? [y] : "
        			read createUser
        			if [ -z "$createUser" ]
        			then
                			createUser="y"
        			fi

        			if [ "$createUser" = "n" ]
        			then
                			echo "*********************************************************************************"
                			echo "To create the account $sqlUser, please execute (or get your DBA"
                			echo "to execute) the queries in the file: /opt/egurkha/bin/create_user.sql"
                			echo " "
                			echo "IMPORTANT: The eG Manager configuration has not been completed ...!"
                			echo "Restart the configuration of the eG Manager after creating "
                			echo "the $sqlUser account in the database."
                			echo "*********************************************************************************"
                			exit
				else
        				echo " "
					if [ -z "$dbaUserName" ]
					then
						echo "New user creation requires database administrator privileges."
 						echo "Enter the DBA user name (e.g., "sa" or in the form "domain/dbaaccount"): "
						FLAG="y"
        					while [ "$FLAG" = "y" ]
        					do
                					read dbaUserName
                					if [ -n "$dbaUserName" ]
                					then
                        					FLAG="n"
                					else
                        					echo "Please enter a valid DBA user name : "
                					fi
        					done
        					FLAG="y"
        					stty -echo
        					echo "Enter the DBA password :"
        					while [ "$FLAG" = "y" ]
        					do
                					read dbaPassword
                					if [ -n "$dbaPassword" ]
                					then
                        					FLAG="n"
                					else
                        					echo "Please enter a valid DBA password :"
                					fi
        					done
        					stty echo
        					echo " "
					fi
					winUser=`echo $sqlUser | awk '{ print index($0,"/") }'`
					slashPos=`expr $winUser`
					if [ $slashPos -gt 0 ]
					then
						domainName=${sqlUser:0:$winUser-1}
						uname=${sqlUser:$winUser}
						domainUser=$domainName"\\"$uname
						#echo "use $sqlDbase;" >> $EG_HOME/bin/create_user.sql
						echo "use \"$sqlDbase\";" >> $EG_HOME/bin/create_user.sql
						echo "create login [$domainUser] from windows with default_database=[$sqlDbase] , default_language=[ENGLISH];" >> $EG_HOME/bin/create_user.sql
						#echo "use $sqlDbase EXEC sp_grantdbaccess '$domainUser';" >> $EG_HOME/bin/create_user.sql
						echo "use \"$sqlDbase\" EXEC sp_grantdbaccess '$domainUser';" >> $EG_HOME/bin/create_user.sql
						#echo "use $sqlDbase EXEC sp_addrolemember 'db_owner','$domainUser';" >> $EG_HOME/bin/create_user.sql
						echo "use \"$sqlDbase\" EXEC sp_addrolemember 'db_owner','$domainUser';" >> $EG_HOME/bin/create_user.sql
						#echo "use $sqlDbase EXEC sp_defaultdb '$domainUser' , '$sqlDbase';" >> $EG_HOME/bin/create_user.sql
						echo "use \"$sqlDbase\" EXEC sp_defaultdb '$domainUser' , '$sqlDbase';" >> $EG_HOME/bin/create_user.sql
					else
						#echo "sp_addlogin $sqlUser, \"$sqlPassword\", $sqlDbase, us_english;" > $EG_HOME/bin/create_user.sql
						echo "sp_addlogin \"$sqlUser\", \"$sqlPassword\", \"$sqlDbase\", us_english;" > $EG_HOME/bin/create_user.sql
						#echo "sp_addsrvrolemember $sqlUser,sysadmin;" >> $EG_HOME/bin/create_user.sql
						#echo "use $sqlDbase EXEC sp_grantdbaccess $sqlUser;" >> $EG_HOME/bin/create_user.sql
						echo "use \"$sqlDbase\" EXEC sp_grantdbaccess \"$sqlUser\";" >> $EG_HOME/bin/create_user.sql
						#echo "use \"$sqlDbase\" GRANT ALL TO $sqlUser;" >> $EG_HOME/bin/create_user.sql
						#echo "use $sqlDbase EXEC sp_addrolemember 'db_owner','$sqlUser';" >> $EG_HOME/bin/create_user.sql
						echo "use \"$sqlDbase\" EXEC sp_addrolemember 'db_owner','$sqlUser';" >> $EG_HOME/bin/create_user.sql
					fi
					echo "Database user creation started ..."
					#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url jdbc:twtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase -user $sqlUser -password "$sqlPassword" -aespass $aespass
					if [ "$instance" = "none" ]
					then
						#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
						#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
						$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost:$sqlPort/$sqlDbase$sslrequest;charset=utf8" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
        					$JAVA_CMD com.eg.EgUserCreation -host $sqlHost -port $sqlPort -sid NULL -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_user.sql -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
        				else
						#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
						#$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
						$JAVA_CMD com.eg.EgRegisterDb -dbType sql -driver $sqlDriver -url "jdbc:jtds:sqlserver://$tempSqlHost/$sqlDbase;INSTANCE=$instance$sslrequest;charset=utf8" -user $sqlUser -password "$sqlPassword" -ntlmv2 $sqlNTLM -aespass $aespass
        					$JAVA_CMD com.eg.EgUserCreation -host $sqlHost -port $sqlPort -sid NULL -dbauser $dbaUserName -dbapassword "$dbaPassword" -filepath $EG_HOME/bin/create_user.sql -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/db 2>$EG_TEMP_DIR/err
        				fi
					ans=`cat $EG_TEMP_DIR/db`
        				if [ "$ans" = "TRUE" ]
        				then
                				echo "Database user created successfully ...!"
        				else
                				echo "Database user may  not be  created, possible reasons are ... "
                				echo "$ans"
        				fi
				fi
			fi
		done
		# Writing the all the data into a eg_setup file for configuring in the different files #
	
		echo "[SETTINGS]" > $egSetup
		echo "EG_SERVER=$serverURL" >> $egSetup
		echo "    " >> $egSetup
		echo "[APACHE_SETTINGS]" >> $egSetup
		echo "apachePort=$serverPort" >> $egSetup
		echo "isSsl=$isSsl" >> $egSetup
		echo "    " >> $egSetup
		echo "[TOMCAT_SETTINGS]" >> $egSetup
		echo "tomcatPort=$serverPort" >> $egSetup
		echo "isSsl=$isSsl" >> $egSetup
		#echo "tomcatPort=$tomcatPort"  >> $egSetup
		echo "connectorPort=$connectorPort" >> $egSetup
		echo "javaPath=$JAVA_HOME" >> $egSetup
		echo "    " >> $egSetup
		#echo "[MAIL_SETTINGS]" >> $egSetup
		#echo "MailHost=$mailIp" >> $egSetup
		echo "   " >> $egSetup
		echo " "
		echo "Configuration of the eG Manager continues..."
		echo "****************************************************************"
		echo "Attempting to load the eG tables into the database ..."
		echo "If any error appears during the configuration, there may be "
		echo "a problem with the MS SQL database parameters you supplied. "
		echo "Please check and restart the manager configuration."
		echo ""
		echo "Press <Enter> to continue, <CTRL-C> to end "
		read junk < /dev/tty
		echo " "
		echo "Database table creation started ..."
	
		$JAVA_CMD com.eg.EgTableCreation -host $sqlHost -port $sqlPort -sid NULL -user $sqlUser  -password "$sqlPassword" -dir $EG_DATABASE_MSSQL -ntlmv2 $sqlNTLM > $EG_TEMP_DIR/dbtab 2>$EG_TEMP_DIR/err
		ans=`cat $EG_TEMP_DIR/dbtab`
		if [ "$ans" = "TRUE" ]
		then
        		echo "Database table creation completed successfully ...!"
		else
        		echo "Database table creation partially completed, reasons may be the following ...!"
        		echo "$ans"
		fi

		# update eg_db.ini,eg_specs.ini and eg_services.ini
		$JAVA_CMD com.eg.SetupConfig
		$JAVA_CMD com.eg.UploadDb
		cat $EG_START_MANAGER | sed '/start_man_message/d' | sed '/exit;/d' > $tmpFile
		mv $tmpFile $EG_START_MANAGER
		rm -f $EG_HOME/bin/start_man_message

		#rm -f $egSetup
	fi
fi



