#!/bin/sh
# ###############################################################
# Exceed Connection Server 2008
# Copyright (c) 1997-2008 Hummingbird Ltd. All Rights Reserved.
# ###############################################################
# install
# $Revision: 10812 $
# ###############################################################

# master install script for Exceed Connection Server, start install log, check for 
# essential files and permissions then call component install scripts

. ./sys/msg.txt

chmodThisDir()
{
	${ECHO} ".\c"	
	
	chmod $2 "$1" > /dev/null 2>&1
	
	for f in `ls "$1"` ;
	do
		chmodThisFile "$1/$f" $2 $3
	done
}

chmodThisFile()
{
	if [ -f "$1" ] ; then
		chmod $3 "$1" > /dev/null 2>&1
	elif [ -d "$1" ] ; then
		chmodThisDir "$1" $2 $3
	fi
}

chmod_conf_dir()
{
	${ECHO} "${pre}\c"
	chmodThisDir "${admin_dir}" $1 $2
	chmodThisDir "${users_dir}" $1 $2
	
	${ECHO}
}

chmod_files_here()
{
	for chmod_files_here_f in $1 ; do
		chmod "$3" "$2/$chmod_files_here_f" > /dev/null 2>&1
	done
}

chmod_sys_dir()
{
	sysAdminScripts="admin boottime ecsinstall ecsinstall2 license makescripts sessclean"
	sysWorldScripts=""
	sysTextFiles="licensetext migver msg.txt ssh_prng_cmds"

	sysMigScripts="mig5.sh migration migfile.sh"
  sysMigFiles="migcfg.awk migecscfg2clustercfg.awk migecscfg.awk migfontpaths.awk migprofile.awk"
  
	chmod_files_here "$sysAdminScripts" "sys" "0744"
#	chmod_files_here "$sysMigScripts" 	"sys" "0744"
	chmod_files_here "$sysWorldScripts" "sys" "0755"
	chmod_files_here "$sysTextFiles"    "sys" "0644"
#	chmod_files_here "$sysMigFiles"    	"sys" "0644"
}

chmod_bin_dir()
{
  binAdminScripts="ecsbootstart ecsbootstop ecsinfo ecsstart ecsstop keymanager getversions install setperms"
	binTextFiles="openssl.cnf"
	
	chmod_files_here "$binAdminScripts" "." "0744"
	chmod_files_here "$binTextFiles"    "." "0644"
	
	chmod_sys_dir	
}

do_ecsinstall2()
{
	if  sh sys/ecsinstall2 $logfile ; then
		# do nothing
		true
	else
		${ECHO} $PROXY_MANAGER_INSTALL_STOPPED
		${ECHO} "$FATAL $PROXY_MANAGER_INSTALL_STOPPED" >> $logfile
		exit 1
	fi
}

deploy_ssh_prng_cmds()
{
	usr_local_etc="/usr/local/etc"
	cmds_file=ssh_prng_cmds
	dst_cmds_file=${usr_local_etc}/${cmds_file}
	src_cmds_file="sys/${cmds_file}"
	bak_suffix="eod.bak"
	
	if [ -f "${dst_cmds_file}" ] ; then
		cp --reply=yes "${dst_cmds_file}" "${dst_cmds_file}.${bak_suffix}"
	elif [ ! -d "${usr_local_etc}" ] ; then
		mkdir "${usr_local_etc}"
	fi
	
	ln -f "${src_cmds_file}" "${usr_local_etc}" > /dev/null 2>&1
}

####################
# migration
####################

do_migration()
{
	${ECHO} "$MIG_TITLE_BAR"
	${ECHO} "$MIGRATION_TITLE"
	${ECHO} "$MIG_TITLE_BAR"
	${ECHO} "$INFO ${MIGRATION_RUN_SCRIPT}" >> $logfile

	if  sh sys/migration $logfile $InstallDir; then
		needToDoConfig=0
	else
	  needToDoConfig=1
	fi
}

####################
# activation key
####################

do_activation()
{
	${ECHO}
	${ECHO} "$TITLE_BAR"
	${ECHO} "$ACTIVATION_TITLE"
	${ECHO} "$TITLE_BAR"
	${ECHO} "${pre}${ACTIVATION_CONTINUE}"
	read foo
	touch $key_file
	sys/keymgr $key_file
	${ECHO} ""
}


if [ ${OSTYPE:="UNKNOWN"} = "Linux" \
	-o $OSTYPE = "linux-gnu" \
	-o $OSTYPE = "linux" \
	]; then
	ECHO="echo -e"
else
	ECHO="echo"
fi
export ECHO


clear
${ECHO} 
${ECHO} install - $SRV_NAME $VERSION
${ECHO}

pre="    "

conf_dir="../conf"
admin_dir="${conf_dir}/admin"
home_dir="${conf_dir}/home"
users_dir="${conf_dir}/users"
config_file="${admin_dir}/node.cfg.tmp"  
config_file_final="${admin_dir}/node.cfg"
cluster_file="${admin_dir}/cluster.cfg.tmp"
cluster_file_final="${admin_dir}/cluster.cfg"
key_file="${admin_dir}/akeys"

export config_file
export cluster_file
export admin_dir

eodcmporttmp="eodcmport.tmp"
eodfirstdisplaytmp="eodfirstdisplay.tmp"

export eodcmporttmp
export eodfirstdisplaytmp

################
# Logfile 
################

${ECHO} "$TITLE_BAR"
${ECHO} "$LOG_TITLE"
${ECHO} "$TITLE_BAR"
cd ..
logfile=`pwd`/log/install.log

touch $logfile
if [ ! -w "$logfile"  ] ; then
	${ECHO} "${pre}${LOG_CANT_CREATE_LOG} $logfile. $Q_CONTINUE"
	read resp
	if [ "${resp}xxxx" = "yxxxx" -o "${resp}xxxx" = "Yxxxx" ]; then
		logfile=/dev/null
	else
		${ECHO} $ABORTING
		exit 1
	fi
fi

${ECHO} "${pre}${LOG_TO} $logfile"
${ECHO} $LOG_HEADER_BEGIN > $logfile
${ECHO} $LOG_HEADER_BANNER >> $logfile
${ECHO} $LOG_HEADER_END >> $logfile
${ECHO} "" >> $logfile
${ECHO} "$INFO $logfile" >> $logfile
${ECHO} "$INFO $LOG_DATE" >> $logfile
${ECHO} ""


################
# check essential files
################

${ECHO} "$TITLE_BAR"
${ECHO} "$CHECK_FILE_TITLE"
${ECHO} "$TITLE_BAR"
${ECHO} "${pre}${CHECK_FILES}"
if [ ! "(" -d bin -a -d bin/sys -a -d conf -a -d log -a -d help ")" ]; then
	${ECHO} "$FATAL $CHECK_CANT_FIND_DIRS" >>$logfile 
	${ECHO} $INSTALL_FAILED
	exit 1
fi
${ECHO} "$INFO $CHECK_FOUND_DIRS" >> $logfile

#permissions
if [ ! "(" -x bin/sys/ecsinstall -a -x bin/sys/license -a -x bin/sys/keymgr ")" ]
then
	${ECHO} "$FATAL $CHECK_SCRIPT_NOT_EXECUTABLE" >> $logfile
	${ECHO} $INSTALL_FAILED
	exit 1
fi

${ECHO} "$INFO $CHECK_SCRIPT_EXECUTABLE" >> $logfile

if [ ! "(" -x bin/sys/ewebhost -a -x bin/sys/esessionmgr ")" ]; then
	${ECHO} "$WARN $CHECK_NO_EXECUTE_PERM" >> $logfile
	${ECHO} "${pre}${CHECK_LOG_FOR_WARNING}"
	${ECHO} "${pre}${PRESS_ENTER}"
	read foo
else
	${ECHO} "$INFO $CHECK_EXECUTE_PERM" >> $logfile
fi
${ECHO} "${pre}${CHECK_FILES_DONE}"
${ECHO} ""

cd bin
# chmod_bin_dir
# deploy_ssh_prng_cmds

####################
# Start Config file  
####################

touch "$config_file" >> /dev/null

if [ ! -w "$config_file" ]  ; then
	${ECHO} "$COULDNT_CREATE_CONFIG $config_file"
	${ECHO} "$ABORTING"
	exit 1
fi

# cat > $config_file << EOF
#
# $SRV_NAME $VERSION Configuration File
#
# EOF

touch "$cluster_file" >> /dev/null

if [ ! -w "$cluster_file" ]  ; then
	${ECHO} "$COULDNT_CREATE_CONFIG $cluster_file"
	${ECHO} "$ABORTING"
	exit 1
fi

# cat > $cluster_file << EOF
#
# $SRV_NAME $VERSION Configuration File
#
# EOF

################
# License
################
${ECHO} "$TITLE_BAR"
${ECHO} "$LICENSE_TITLE"
${ECHO} "$TITLE_BAR"
${ECHO} "${pre}${LICENSE_CONTINUE_Q}"
read foo
if ./sys/license ; then
	${ECHO} "$INFO $LICENSE_ACCEPTED" >> $logfile
else
	${ECHO} "$FATAL $LICENSE_NOT_ACCEPTED" >> $logfile
	${ECHO} "$ABORTING"
	exit 1
fi
clear


####################
# install eod
####################

# ${ECHO} "$TITLE_BAR"
# ${ECHO} $PROXY_MANAGER_OPTS_TITLE
# ${ECHO} "$TITLE_BAR"
${ECHO} "$INFO $PROXY_MANAGER_RUN_SCRIPT" >> $logfile
if  sh sys/ecsinstall $logfile ; then
	# do nothing
	true
else
	${ECHO} $PROXY_MANAGER_INSTALL_STOPPED
	${ECHO} "$FATAL $PROXY_MANAGER_INSTALL_STOPPED" >> $logfile
	exit 1
fi
${ECHO} ""

CDir=`pwd`
cd ..
InstallDir=`pwd`
cd ${CDir}

num=1
export num

cmport=5500
export cmport

needToDoConfig=1

# NO migration for ECS as yet.
#
# do_migration
#

do_ecsinstall2


${ECHO} ""

####################
# boottime
####################
${ECHO} "$TITLE_BAR"
${ECHO} "$BOOTTIME_TITLE"
${ECHO} "$TITLE_BAR"
${ECHO} "$INFO ${BOOTTIME_RUN_SCRIPT}" >> $logfile
sh sys/boottime $InstallDir

##########################
# make the utility scripts
##########################
sh sys/makescripts ${InstallDir}

# NO activation for ECS, for now.
#
# do_activation
#

####################
# adminstrator
####################
if [ ${needToDoConfig} = "1" ] ; then
    ${ECHO}
    ${ECHO} "$TITLE_BAR"
    ${ECHO} "$ADMIN_TITLE"
    ${ECHO} "$TITLE_BAR"
    if sh sys/admin $logfile ; then
	    # do nothing
	    true
    else
	    ${ECHO} "$FATAL $PROXY_MANAGER_INSTALL_FAILED" >> $logfile
	    ${ECHO} "$ABORTING"
	    exit 1
    fi
    ${ECHO}
fi

#############
# finished 
#############


mv "$config_file" "$config_file_final"
mv "$cluster_file" "$cluster_file_final"

thisFileMode="0644"
thisDirMode="0755"
	
chmod_conf_dir $thisDirMode $thisFileMode


${ECHO} "$INFO $PROD_INSTALL_OK" >> $logfile
${ECHO} "$INFO $PROD_INSTALL_TIME" >> $logfile
${ECHO} ""
${ECHO} "$PROD_INSTALL_LAST_WORDS1"
${ECHO} "$PROD_INSTALL_LAST_WORDS2"
${ECHO} "$logfile"
${ECHO} ""

##############
# launch eod
##############
${ECHO} "$TITLE_BAR"
${ECHO} "$LAUNCHING_TITLE"
${ECHO} "$TITLE_BAR"
${ECHO} "${pre}${QUERY_LAUNCH_MGR0}"
${ECHO} "${pre}${QUERY_LAUNCH_MGR}"
read resp

if [ $resp"xxxx" = "yxxxx"  -o $resp"xxxx" = "Yxxxx" ] ; then
	exec ./ecsstart
fi

