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

# Script for exceed thin, install script to run server at startup

. ./sys/msg.txt

initscriptname=ExceedConnectionServer2008

noPrefixRequest=${2}
if [ "${noPrefixRequest}x" = "x" ] ; then
	pre="    "
fi

installDir=${1}


# check command line arguments 
if [ "${installDir}x" = "x" ] ; then
    ${ECHO} "Usage: \$0 {${PROD_NAME} installDir}"
    exit 1
fi


# ###############################
# Should we add startup script ?
# ###############################
${ECHO} "${pre}${BOOT_DO_BOOTTIME_Q1}"
${ECHO} "${pre}${BOOT_CONFIRM}"

read answer

if [ ! "${answer}x" = "yx" -a ! "${answer}x" = "Yx" ] ; then
	exit 0
fi

# default link type - soft link (no links for AIX)
linktype="-fs"

# default messages, initpath and link prefixes
initpath="/etc/init.d/"
preStop="K09"
preStart="S91"
startmsg="${BOOT_START_MSG}"
stopmsg="${BOOT_STOP_MSG}"

# init and links install path

case "`uname`" in
	AIX	)
		initpath="/etc/rc.d/rc2.d/S91"
		;;
	HP-UX )
		initpath="/sbin/init.d/"
		linkpathStop="/sbin/rc1.d /sbin/rc2.d"
		linkpathStart="/sbin/rc3.d"
		linkpathrel=${initpath}
		preStop="K090"
		preStart="S910"	
		;;
	Linux )
		startmsg="${BOOT_START_MSG_LINUX}"
		stopmsg="${BOOT_STOP_MSG_LINUX}"

		if [ -x "/etc/rc.d/init.d" ]; then
			initpath="/etc/rc.d/init.d/"
			linkpathStop="/etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d/rc2.d /etc/rc.d/rc6.d"
			linkpathStart="/etc/rc.d/rc3.d /etc/rc.d/rc4.d /etc/rc.d/rc5.d"
			linkpathrel="../init.d/"
		else
# SuSe Linux
			linkpathStop="/etc/init.d/rc2.d /etc/init.d/rc3.d /etc/init.d/rc5.d"
			linkpathStart="/etc/init.d/rc2.d /etc/init.d/rc3.d /etc/init.d/rc5.d"
			linkpathrel="../"
			preStop="K02"
			preStart="S20"
		fi
		;;
	SunOS )
		linkpathStop="/etc/rc0.d /etc/rcS.d /etc/rc1.d /etc/rc2.d"
		linkpathStart="/etc/rc3.d"
		linkpathrel=${initpath}
		linktype="-f"
		;;
	* )
		${ECHO} "${pre}${SRV_NAME} ${VERSION}"
		${ECHO}
		${ECHO} "${pre}Sorry, `uname` is not supported."
		${ECHO} "${pre}Supported systems are: AIX, HP-UX, Linux and SunOS."
		exit 1
		;;
esac

# check existing scripts

suffix=""
numbers="00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24"
if [ -r "${initpath}${initscriptname}" ] ; then

	${ECHO} "${pre}${initscriptname} ${BOOT_OVERWRITE_Q1}"
	${ECHO} "${pre}${BOOT_OVERWRITE_Q2}"
	${ECHO} "${pre}${BOOT_CONFIRM}"

	read answer

	if [ ! "${answer}x" = "yx" -a ! "${answer}x" = "Yx" ] ; then
		finished="0"
		for n in $numbers
		do
			suffix="_${n}"
			if [ ! -r "${initpath}${initscriptname}${suffix}" ] ;
			then
				finished="1"
				break
			fi
		done
		if [ ${finished} = "0" ] ; then
			${ECHO} "${pre}${BOOT_CANT_CREATE} ${initscriptname}"
			exit 1
		fi
		initscriptname=${initscriptname}${suffix}

		${ECHO} "${pre}${BOOT_CREATE_Q1}"
		${ECHO} "${pre}${BOOT_CONFIRM}"

		read answer

		if [ ! "${answer}x" = "yx" -a ! "${answer}x" = "Yx" ] ; then
			${ECHO} "${pre}${BOOT_ABORTING}"
			exit 1			
		fi
	fi
fi

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

logfile=${installDir}/log/${BOOT_LOGFILE}

if [ ! -r "$logfile"  ] ; then
	${ECHO} $BOOT_LOG_HEADER_BEGIN > $logfile
	${ECHO} $BOOT_LOG_HEADER_BANNER >> $logfile
	${ECHO} $BOOT_LOG_HEADER_END >> $logfile
	${ECHO} "" >> $logfile
fi

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} "${pre}${BOOT_ABORTING}"
		exit 1
	fi
fi

# create the file
cat > "${initpath}${initscriptname}" << EOF
#!/bin/sh
# ###############################################################
# ${SRV_NAME} ${VERSION} 
# Copyright (c) 1997-2008 Hummingbird Ltd. All Rights Reserved.
# ###############################################################
#
# init.d script to stop and start ${SRV_NAME} ${VERSION}

# edit this to reflect your path
Installpath="${installDir}"

case "\$1" in
    'start')
        if [ -x "\${Installpath}/bin/ecsstart" ] ; then
            \${Installpath}/bin/ecsstart -qr > /dev/null 2>&1
            echo "${startmsg}"
        fi
        ;;

    'stop')
        if [ -x "\${Installpath}/bin/ecsstop" ] ; then
            \${Installpath}/bin/ecsstop -q > /dev/null 2>&1
            echo "${stopmsg}"
        fi
        ;;
    *)
        echo "${SRV_NAME} ${VERSION}"
        echo
        echo "Usage: \$0 { start | stop }"
        exit 1
esac
exit 0
EOF

if [ ! -r "${initpath}${initscriptname}" ] ; then
	${ECHO} "${pre}${BOOT_CANT_CREATE} ${initfile}"
	exit 1
fi

logscan=`grep "${initpath}${initscriptname} " "${logfile}"`
if [ "${logscan}x" = "x" ] ; then
	${ECHO} "${initpath}${initscriptname} " >> "${logfile}"
fi 
chmod u+x "${initpath}${initscriptname}"

# There are no links for AIX
if [ "${linkpathStart}x" = "x" ] ; then
	${ECHO} "" >> $logfile
	${ECHO}
	${ECHO} "${pre}${BOOT_DONE}"
	${ECHO} "${pre}${BOOT_LOG_INFO}"
	${ECHO} "${pre}${logfile}"
	exit 0
fi

# create the stop (K) symlinks
for i in ${linkpathStop};
do
	cd ${i}
	if [ -r "${preStop}${initscriptname}" ] ; then
		rm -f "${preStop}${initscriptname}"
	fi

	ln "${linktype}" "${linkpathrel}${initscriptname}" "${preStop}${initscriptname}"

	if [ ! -r "${preStop}${initscriptname}" ] ; then
		${ECHO} "${pre}${BOOT_CANT_CREATE} ${i}/${preStop}${initscriptname}"
		exit 1
	fi
	logscan=`grep "${i}/${preStop}${initscriptname} " "${logfile}"`
	if [ "${logscan}x" = "x" ] ; then
		${ECHO} "${i}/${preStop}${initscriptname} " >> "${logfile}"
	fi
done

# create the start (S) symlinks
for i in ${linkpathStart};
do
	cd ${i}
	if [ -r "${preStart}${initscriptname}" ] ; then
		rm -f "${preStart}${initscriptname}"
	fi

	ln "${linktype}" "${linkpathrel}${initscriptname}" "${preStart}${initscriptname}"

	if [ ! -r "${preStart}${initscriptname}" ] ; then
		${ECHO} "${pre}${BOOT_CANT_CREATE} ${i}/${preStart}${initscriptname}"
		exit 1
	fi
	logscan=`grep "${i}/${preStart}${initscriptname} " "${logfile}"`
	if [ "${logscan}x" = "x" ] ; then
		${ECHO} "${i}/${preStart}${initscriptname} " >> "${logfile}"
	fi
done
${ECHO} "" >> $logfile
${ECHO}
${ECHO} "${pre}${BOOT_DONE}"
${ECHO} "${pre}${BOOT_LOG_INFO}"
${ECHO} "${pre}${logfile}"
exit 0
