#!/bin/sh
#
# esmarcsvESMPRO/ACӥ    Starts esmarcsv.
#
# chkconfig: 2345 99 99
# description: run esmarcsv.

# Source function library.
. /etc/rc.d/init.d/functions

[ -f /usr/local/AUTORC/esmarcsv ] || exit 0

RETVAL=0


INSTALL_PATH=/usr/local/AUTORC/data

SA_VER_FILE1=${INSTALL_PATH}/sa_ver2.txt
SA_VER_FILE2=${INSTALL_PATH}/sa_ver2.txt
LANG_FILE=${INSTALL_PATH}/lang.tmp

CHECK_RESULT_FILE=${INSTALL_PATH}/result.apc

CHECK_RESULT_TMP=${INSTALL_PATH}/result.tmp
SA_SUPPORT=0
FUNC_RET=0
CREATE=0
AUTO_SET_FLAG=-1
LANG_EUC=ac_euc.msg
LANG_UTF8=ac_utf8.msg
DEFAULT_FLAG=0
DEFAULT_LANG=${LANG_EUC}
AUTO_LANG=${LANG_EUC}

GetESMSAVersion() {

	RPM_PACKAGE_NAME=$1

	/bin/rpm -qa | /bin/grep ${RPM_PACKAGE_NAME} > ${SA_VER_FILE2}
}

CheckESMSAVersion() {

	CHK_VER_1_1=4
	CHK_VER_1_2=1
	CHK_VER_1_3=8
	CHK_VER_2=2

	RPM_PACKAGE_NAME=$1

	if [ ! -s ${SA_VER_FILE1} ]; then
		# rpm error?
		return 0
	fi

	# get ESMPRO/SA version
	SA_VER_1=(`/bin/grep -A1 $RPM_PACKAGE_NAME ${SA_VER_FILE1} |\
		cut -f4 -d'-' `)
	SA_VER_1_1=(`/bin/grep -A1 $RPM_PACKAGE_NAME ${SA_VER_FILE1} |\
		cut -f4 -d'-' |\
		cut -f1 -d'.' `)
	SA_VER_1_2=(`/bin/grep -A1 $RPM_PACKAGE_NAME ${SA_VER_FILE1} |\
		cut -f4 -d'-' |\
		cut -f2 -d'.' `)
	SA_VER_1_3=(`/bin/grep -A1 $RPM_PACKAGE_NAME ${SA_VER_FILE1} |\
		cut -f4 -d'-' |\
		cut -f3 -d'.' `)
	SA_VER_2=(`/bin/grep -A1 $RPM_PACKAGE_NAME ${SA_VER_FILE1} |\
		cut -f5 -d'-' `)

	# check install
	if [ "${SA_VER_1}" = "" ]; then
		return 0
	fi

	if [ ${SA_VER_2} = "" ]; then
		return 0
	fi


	# compare version
	# return 0 : support
	# return 1 : not support
	if [ ${SA_VER_1_1} -gt ${CHK_VER_1_1} ]; then
		return 0

	elif [ ${SA_VER_1_1} -eq ${CHK_VER_1_1} ]; then

		if [ ${SA_VER_1_2} -gt ${CHK_VER_1_2} ]; then
			return 0

		elif [ ${SA_VER_1_2} -eq ${CHK_VER_1_2} ]; then

			if [ ${SA_VER_1_3} -gt ${CHK_VER_1_3} ]; then
				return 0

			elif [ ${SA_VER_1_3} -eq ${CHK_VER_1_3} ]; then

				if [ ${SA_VER_2} -gt ${CHK_VER_2} ]; then
					return 0
				elif [ ${SA_VER_2} -eq ${CHK_VER_2} ]; then
					return 0
				else
					return 1
				fi

			else
				return 1
			fi

		else
			return 1
		fi

	else
		return 1
	fi
}


## result.apcѴؿ
ResultApc_Create() {
echo "[SA]" > ${CHECK_RESULT_FILE}
if [ ${RET_1} -eq "0" -a ${RET_2} -eq "0" ]; then
	# support version (ESMPRO/SA) or ESMPRO/SA not install
	echo "Support=0" >> ${CHECK_RESULT_FILE}
else
	# not support version (ESMPRO/SA)
	echo "Support=1" >> ${CHECK_RESULT_FILE}
fi


# [LANG]
echo "[LANG]" >> ${CHECK_RESULT_FILE}
if [ -f "/etc/sysconfig/i18n" ]; then
	grep ^LANG /etc/sysconfig/i18n | sed -e "s/^LANG=\"//" -e "s/.$//" > ${LANG_FILE}
else
	echo $LANG > ${LANG_FILE}
fi

# Code
if grep "^$" ${LANG_FILE} > /dev/null
then
	echo "Code=NULL" >> ${CHECK_RESULT_FILE}
	DEFAULT_FLAG=1
else
	LANG_DATA=(`grep -A1 ja_JP ${LANG_FILE}`)
	echo "Code=${LANG_DATA}" >> ${CHECK_RESULT_FILE}
fi

# LangFlag
echo "LangFlag=0" >> ${CHECK_RESULT_FILE}

# LangFile
echo "LangFile=" >> ${CHECK_RESULT_FILE}
AUTO_SET_FLAG=1
LangFile_Specify
CREATE=0
}


KeyValueUpdate() {
	Key_Name=$1
	Key_Value=$2

	if grep ${Key_Name} ${CHECK_RESULT_FILE} > /dev/null
	then
		sed -e "s/${Key_Name}=.*/${Key_Name}=${Key_Value}/" ${CHECK_RESULT_FILE} > ${CHECK_RESULT_TMP}
		cp -f ${CHECK_RESULT_TMP} ${CHECK_RESULT_FILE}
		return 0
	fi
	return 1
}

LangFile_Specify() {
	## åե
	if [ ${AUTO_SET_FLAG} -eq "1" ]; then
		## 桼ե饰̵(ưON)Υåե뼫ư
		## LangFile饷ƥʸɾ󻲾
		if [ ${DEFAULT_FLAG} -eq "0" ]; then
			## SAݡȥС󡢤ޤSA̤󥹥ȡ
			if grep LangFile ${CHECK_RESULT_FILE} > /dev/null
			then
				## ǧʸɤбåե
				grep Code ${CHECK_RESULT_FILE} | sed -e "s/^Code=//" > ${LANG_FILE}
				read AUTO_LANG < ${LANG_FILE}
				case ${AUTO_LANG} in
				"ja_JP.ecuJP")
					VALUE=${LANG_EUC}
				;;
				"ja_JP.UTF-8")
					VALUE=${LANG_UTF8}
				;;
				*)
					VALUE=${LANG_EUC}
				esac
			fi
		else
			## SA̤ݡȥСEUC
			VALUE=${DEFAULT_LANG}
		fi
		## VALUEǻꤷåե̾result.apcեȿ
		KeyValueUpdate LangFile ${VALUE}
		FUNC_RET=$?
		if [ ${FUNC_RET} -eq "1" ]; then
			CREATE=1
		fi
	else
		## 桼ե饰ͭ(ưOFF)
		VALUE=0
	fi
}

# ServerAgentΥåȻѤʸɥե
SetLangFile(){
GetESMSAVersion "Esmpro-common-"

CheckESMSAVersion "Esmpro-common-bin-"
RET_1=$?
CheckESMSAVersion "Esmpro-common-dat-"
RET_2=$?

if [ -f ${CHECK_RESULT_FILE} ]; then
	## 󤪤ӥ
	## [SA]å
	if grep -A1 "\[SA\]" ${CHECK_RESULT_FILE} > /dev/null
	then
		if [ ${RET_1} -eq "0" -a ${RET_2} -eq "0" ]; then
			# support version (ESMPRO/SA) or ESMPRO/SA not install
			VALUE=0
			SA_SUPPORT=0
		else
			# not support version (ESMPRO/SA)
			VALUE=1
			SA_SUPPORT=1
		fi
		## ͤ򹹿
		KeyValueUpdate Support ${VALUE}
		FUNC_RET=$?
		## Ĥʤä
		if [ ${FUNC_RET} -eq "1" ]; then
			CREATE=1
		fi
	else
		## [SA]󤬤ʤ
		CREATE=1
	fi

	## [LANG]
	if grep -A1 "\[LANG\]" ${CHECK_RESULT_FILE} > /dev/null
	then
		if [ -f "/etc/sysconfig/i18n" ]; then
			## i18nե뤫饷ƥʸɾ
			grep ^LANG /etc/sysconfig/i18n | sed -e "s/^LANG=\"//" -e "s/.$//" > ${LANG_FILE}
		else
			## ĶѿLANG饷ƥʸɾ
			echo $LANG > ${LANG_FILE}
		fi

		if grep "^$" ${LANG_FILE} > /dev/null
		then
			## i18nĶѿLANGΤ줫⥷ƥʸɾ˼
			VALUE=NULL
			DEFAULT_FLAG=1
		else
			read VALUE < ${LANG_FILE}
		fi

		## Code͹
		KeyValueUpdate Code ${VALUE}
		FUNC_RET=$?
		if [ ${FUNC_RET} -eq "1" ]; then
			CREATE=1
		fi

		## 桼ե饰γǧ
		if grep LangFlag ${CHECK_RESULT_FILE} > /dev/null
		then
			grep LangFlag ${CHECK_RESULT_FILE} | sed -e "s/^LangFlag=//" > ${LANG_FILE}
			read VALUE < ${LANG_FILE}

			if [ ${VALUE} -eq "0" ]; then
				## 桼ե饰̵
				if [ ${SA_SUPPORT} -eq "0" ]; then
					## SAݡȤޤSA̤󥹥ȡ롢桼ե饰̵ˤ뼫ưON
					AUTO_SET_FLAG=1
				else
					## 桼ե饰̵Ǥ뤬SA̤ݡȤˤǥեȤʸɻ
					AUTO_SET_FLAG=0
					DEFAULT_FLAG=1
				fi
			else
				if [ ${VALUE} -eq "1" ]; then
					## 桼ե饰ͭ(ưOFF)
					AUTO_SET_FLAG=0
				else
					## 桼ե饰̵
					CREATE=1
				fi
			fi
		fi

		if [ ${CREATE} -eq "0" ]; then
			LangFile_Specify
		fi
	
	## [LANG]̵
	else
		CREATE=1
	fi
else
	## result.apcե뤬ʤ
	CREATE=1
fi

## ե뤬̵ޤϥեξ󤬷Ƥϡ
if [ ${CREATE} -eq "1" ] 
then
	ResultApc_Create
fi
}


# See how we were called.
case "$1" in
  start)
	if /sbin/pidof esmarcsv > /dev/null
	then
	    echo 'ESMPRO/ACBlade MultiServerOption is already working'
	    exit 1
	fi
	echo -n "Starting ESMPRO/ACBlade MultiServerOption: "
	SetLangFile
	daemon /usr/bin/setsid /usr/local/AUTORC/esmarcsv -start
	RETVAL=$?
	echo
	;;
  stop)
	if /sbin/pidof esmarcsv > /dev/null
	then
		echo -n
	else
	    echo 'ESMPRO/ACBlade MultiServerOption is not working'
	    exit 1
	fi
	echo -n "Shutting down ESMPRO/ACBlade MultiServerOption: "
	/usr/local/AUTORC/esmarcsv -stop
	RETVAL=$?
	echo
	;;
  status)
	/usr/local/AUTORC/esmarcsv -status
	RETVAL=$?
	;;
  restart|reload)
	if /sbin/pidof esmarcsv > /dev/null
	then
		echo -n "Shutting down ESMPRO/ACBlade MultiServerOption: "
		/usr/local/AUTORC/esmarcsv -stop
		echo
	else
	    echo 'ESMPRO/ACBlade MultiServerOption is not working'
	fi
	echo -n "Starting ESMPRO/ACBlade MultiServerOption: "
	SetLangFile
	daemon /usr/bin/setsid /usr/local/AUTORC/esmarcsv -start
	RETVAL=$?
	echo
	;;
  *)
	echo "Usage: esmarcsv {start|stop|status|restart|reload}"
	exit 1
esac

exit $RETVAL

