#!/bin/sh

# Copyright (C) since 2006 NTT DATA Corporation
# 
# This program is free software; you can redistribute it and/or
# Modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, version 2.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details

# bash configuration
SCRIPT_DIR=$(cd $(dirname $0);pwd)
. ${SCRIPT_DIR}/install.cfg || exit -1

export PROG=`basename $0`
DIR=`dirname $0`
if [ `uname -s | grep "SunOS" | wc -l` -ne 0 ]
then
	WHOAMI="/usr/ucb/whoami"
	PS="ps -ef"
else
	WHOAMI="/usr/bin/whoami"
	PS="/usr/ucb/ps auxwww"
fi
USER=`${WHOAMI}`
HOST=`hostname -s`
HOSTS_FILE=/etc/hosts
HINEMOS_AGENT_HOME=${HINEMOS_AGENT_HOME_DEFAULT}

########################################
#  Local Variable
########################################

LANGUAGE=$1

########################################
#  Local Message
########################################

# load language file
if [ ! -e ${SCRIPT_DIR}/lib/${LANGUAGE}_install.lng ]
then
	echo "not supported language : ${LANGUAGE}"
	exit -1
fi
. ${SCRIPT_DIR}/lib/${LANGUAGE}_install.lng

########################################
# Function
########################################

function EchoOK()
{
	echo " [OK]"
}

function EchoNG()
{
	echo " [NG]"
}

function Welcome()
{
	if [ -e ${SCRIPT_DIR}/hinemos_agent/_version ]
	then
		VERSION=`cat ${SCRIPT_DIR}/hinemos_agent/_version`
	elif [ -e ${SCRIPT_DIR}/../_version ]
	then
		VERSION=`cat ${SCRIPT_DIR}/../_version`
	else
		VERSION=`UNKNOWN`
	fi
	echo
	echo "-------------------------------------------------------"
	echo "   Welcome to the installation for Hinemos Agent"
	echo "                             Version ${VERSION}"
	echo
	echo "       Copyright (C) since 2006 NTT DATA Corporation"
	echo "-------------------------------------------------------"
}

function CheckEnvironment()
{
	# check platform
	
	
	# check user executed
	echo
	echo -n "${MSG_I001}" && sleep 0.5
	if [ "x"${USER} != "xroot" ]
	then
		EchoNG
		echo "${MSG_E002}" && echo "${MSG_E004}"
		return 255
	fi
	EchoOK
	
	# check selinux is Disabled
	echo
	echo -n "${MSG_I002}" && sleep 0.5
	if [ "x${SELINUX_CHECK}" == "xtrue" ] && [ "xDisabled" != "x`/usr/sbin/getenforce`" ]
	then
		EchoNG
		echo "${MSG_E003}" && echo "${MSG_E004}"
		return 255
	fi
	EchoOK
	
	return 0
}

function ConfirmInstallation()
{
	# confirm installation
	echo
	while [ 1 ]
	do
		sleep 0.5 && read -p "${MSG_I009} : " INPUT
		INPUT=${INPUT:-Y}
		case ${INPUT} in
			y|Y)
				break;
				;;
			n|N)
				echo "${MSG_I010}"
				return 255
				;;
			*)
				echo "${MSG_W001}"
				;;
		esac
	done
		
	return 0
}

function ConfirmUninstallation()
{
	# confirm installation
	echo
	while [ 1 ]
	do
		sleep 0.5 && read -p "${MSG_I029} : " INPUT
		INPUT=${INPUT:-Y}
		case ${INPUT} in
			y|Y)
				break;
				;;
			n|N)
				echo "${MSG_I030}"
				return 255
				;;
			*)
				echo "${MSG_W001}"
				;;
		esac
	done
	
	return 0
}

function CheckHosts()
{
	echo
	echo "${MSG_I011}" && sleep 0.5
	if [ `grep -v "^#" ${HOSTS_FILE} | grep "[[:space:]]${HOST}[[:space:]]" | awk '{print $1}' | wc -l` -eq 1 ]
	then
		EchoOK
		AGENT_IP_ADDRESS=`grep -v "^#" ${HOSTS_FILE} | grep "[[:space:]]${HOST}[[:space:]]" | awk '{print $1}'`
	elif [ `grep -v "^#" ${HOSTS_FILE} | grep "[[:space:]]${HOST}$" | awk '{print $1}' | wc -l` -eq 1 ]
	then
		EchoOK
		AGENT_IP_ADDRESS=`grep -v "^#" ${HOSTS_FILE} | grep "[[:space:]]${HOST}$" | awk '{print $1}'`
	else
		EchoNG
		echo "${MSG_W002}"
		while [ 1 ]
		do
			sleep 0.5 && read -p "${MSG_I012} : " INPUT
			INPUT=${INPUT:-N}
			case ${INPUT} in
				y|Y)
					break
					;;
				n|N)
					echo "${MSG_I010}"
					return 255
					;;
				*)
					echo "${MSG_W001}"
					;;
			esac
		done
	fi
	echo "${MSG_I027}(${HOST} - ${AGENT_IP_ADDRESS})"
	
	return 0
}

function CheckRPM()
{
	local RET=0
	echo
	echo "${MSG_I013}" && sleep 0.5
	
	# net-snmp
	for RPM in ${RPM_SNMP[@]}
	do
		echo -n "   ${RPM}..."
		rpm -q ${RPM} > /dev/null 2>&1
		if [ $? -eq 0 ]
		then
			EchoOK
		else
			EchoNG
			RET=1
		fi
	done
	if [ ${RET} -eq 0 ]
	then
		RET=0
		
		PKG_NET_SNMP=`rpm -q net-snmp`
		PKG_NET_SNMP_LIB=`rpm -q net-snmp-libs`
		
		echo -n "   ${SNMP_VERSION}..."
		if [[ "x${PKG_NET_SNMP}" < "x${SNMP_VERSION}" ]]
		then
			EchoNG
			RET=1
			echo "${MSG_W006} (current ${PKG_NET_SNMP} < recommend ${SNMP_VERSION})"
		else
			EchoOK
		fi
		
		echo -n "   ${SNMP_LIBS_VERSION}..."
		if [[ "x${PKG_NET_SNMP_LIB}" < "x${SNMP_LIBS_VERSION}" ]]
		then
			EchoNG
			RET=1
			echo "${MSG_W006} (current ${PKG_NET_SNMP_LIB} < recommend ${SNMP_LIBS_VERSION})"
		else
			EchoOK
		fi
	else
		echo "${MSG_W003}"
		echo "${MSG_W004}"
	fi
	
	if [ ${RET} -ne 0 ]
	then
		while [ 1 ]
		do
			sleep 0.5 && read -p "${MSG_I012} : " INPUT
			INPUT=${INPUT:-N}
			case ${INPUT} in
				y|Y)
					break
					;;
				n|N)
					echo "${MSG_I010}"
					return 255
					;;
				*)
					echo "${MSG_W001}"
					;;
			esac
		done
	fi
	
	# expect and so on (for collective run)
	RET=0
	echo "${MSG_I013}" && sleep 0.5
	for RPM in ${RPM_CRUN[@]}
	do
		echo -n "   ${RPM}..."
		rpm -q ${RPM} > /dev/null 2>&1
		if [ $? -eq 0 ]
		then
			EchoOK
		else
			EchoNG
			RET=1
		fi
	done
	if [ ${RET} -ne 0 ]
	then
		echo "${MSG_W005}"
		echo "${MSG_W004}"
		
		while [ 1 ]
		do
			sleep 0.5 && read -p "${MSG_I012} : " INPUT
			INPUT=${INPUT:-N}
			case ${INPUT} in
				y|Y)
					break
					;;
				n|N)
					echo "${MSG_I010}"
					return 255
					;;
				*)
					echo "${MSG_W001}"
					;;
			esac
		done
	fi
	
	return 0
}

function CheckInstallDirectory()
{
	echo
	while [ 1 ]
	do
		read -p "${MSG_I044} : " INPUT
		INPUT=${INPUT:-Y}
			case ${INPUT} in
				y|Y)
					HINEMOS_AGENT_HOME=${HINEMOS_AGENT_HOME_DEFAULT}
					ID=""
					break
					;;
				n|N)
					while [ 1 ]
					do
						read -p "${MSG_I045} : " INPUT
						INPUT=${INPUT}
						case "x${INPUT}" in
							x)
								echo "${MSG_W015}"
								;;
							*)
								ID=_${INPUT} && ReloadMSG
								read -p "${MSG_I046} : " INPUT
								INPUT=${INPUT:-Y}
								case ${INPUT} in
									y|Y)
										HINEMOS_AGENT_HOME=${HINEMOS_AGENT_HOME_DEFAULT}${ID} && ReloadMSG
										break
										;;
									n|N)
										echo "${MSG_I018}"
										;;
									*)
										echo "${MSG_W001}"
										;;
								esac
						esac
					done
					break
					;;
				*)
					echo "${MSG_W001}"
					;;
			esac
	done

	echo
	echo "${MSG_I015}" && sleep 0.5
	if [ -d ${HINEMOS_AGENT_HOME} ]
	then
		echo "${MSG_W007}"
		ls -lA ${HINEMOS_AGENT_HOME} | sed "s/^/   /"
		while [ 1 ]
		do
			sleep 0.5 && read -p "${MSG_I012} : " INPUT
			INPUT=${INPUT:-N}
			case ${INPUT} in
				y|Y)
					# force installation
					break
					;;
				n|N)
					echo "${MSG_I010}"
					return 255
					;;
				*)
					echo "${MSG_W001}"
					;;
			esac
		done
	else
		mkdir -p ${HINEMOS_AGENT_HOME}
		if [ $? -ne 0 ]
		then
			echo "${MSG_E005}" && echo "${MSG_E004}"
			return 255
		fi
		echo "${MSG_I016}"
	fi
	return 0
}

function InputIpAddress()
{
	echo
	while [ 1 ]
	do
		sleep 0.5 && read -p "${MSG_I017} : " MANAGER_IP_ADDRESS
		if [ `echo ${MANAGER_IP_ADDRESS} | grep -E "^[0123456789]{1,3}\.[0123456789]{1,3}\.[0123456789]{1,3}\.[0123456789]{1,3}$" | wc -l` -ne 1 ]
		then
			echo "${MSG_W008}" && echo "${MSG_I018}"
			continue
		fi
		read -p "${MANAGER_IP_ADDRESS} ${MSG_I019} : " INPUT
		INPUT=${INPUT:-Y}
		case ${INPUT} in
			y|Y)
				# force installation
				break
				;;
			n|N)
				echo "${MSG_I018}"
				;;
			*)
				echo "${MSG_W001}"
				;;
		esac
	done
	return 0
}

function CopyFiles()
{
	echo
	echo -n "${MSG_I020}" && sleep 0.5
	cp -pr ${SCRIPT_DIR}/hinemos_agent/* ${HINEMOS_AGENT_HOME} \
		&& mkdir -p ${HINEMOS_AGENT_HOME}/sbin/lib \
		&& cp -pr ${SCRIPT_DIR}/install.cfg ${HINEMOS_AGENT_HOME}/sbin \
		&& cp -pr ${SCRIPT_DIR}/agent_installer_* ${HINEMOS_AGENT_HOME}/sbin \
		&& cp -pr ${SCRIPT_DIR}/lib/*_install.lng ${HINEMOS_AGENT_HOME}/sbin/lib
	if [ $? -ne 0 ]
	then
		EchoNG
		echo "${MSG_E004}"
		return 255
	fi
	EchoOK
	return 0
}

function ConfigureFiles()
{
	echo
	echo "${MSG_I021}" && sleep 0.5
	
	# configure hinemos.cfg
	sed -e "s|%%HINEMOS_AGENT_HOME%%|${HINEMOS_AGENT_HOME}|" \
	-e "s/%%ID%%/${ID}/" \
	-e "s/%%LOCALE%%/${LOCALE}/" \
	${SCRIPT_DIR}/lib/hinemos_agent.cfg > ${HINEMOS_AGENT_HOME}/lib/hinemos_agent.cfg.tmp
	if [ $? -ne 0 ]
	then
		EchoNG
		echo "${MSG_E004}"
		return 255
	fi
		
	# check rhel version and edit JAVA_HOME
	if [ `cat /etc/redhat-release | grep "release 6.[0-9]" | wc -l` -ne 0 ]
	then	
		echo ""
		echo "${MSG_I057}"
		echo "----------"
		${JAVA_DIR_OSORIGINAL}/bin/java -version
		echo "----------"
		echo "${MSG_I058}"
		sed -e "s|${HINEMOS_AGENT_HOME}/%%JAVA_DIR%%|${JAVA_DIR_OSORIGINAL}|" \
		${HINEMOS_AGENT_HOME}/lib/hinemos_agent.cfg.tmp > ${HINEMOS_AGENT_HOME}/lib/hinemos_agent.cfg
		RET=$?
		rm -f ${HINEMOS_AGENT_HOME}/lib/hinemos_agent.cfg.tmp
		if [ ${RET} -ne 0 ]
		then
			EchoNG
			echo "${MSG_E004}"
			return 255
		fi
	else
		sed -e "s/%%JAVA_DIR%%/${JAVA_DIR}/" \
		${HINEMOS_AGENT_HOME}/lib/hinemos_agent.cfg.tmp > ${HINEMOS_AGENT_HOME}/lib/hinemos_agent.cfg
		RET=$? 	
		rm -f ${HINEMOS_AGENT_HOME}/lib/hinemos_agent.cfg.tmp
		if [ ${RET} -ne 0 ]
		then
			EchoNG
			echo "${MSG_E004}"
			return 255
		fi
	fi

			
	# configure Job Agent
	sed -e "s/%%MANAGER_IP_ADDRESS%%/${MANAGER_IP_ADDRESS}/" \
		${SCRIPT_DIR}/hinemos_agent/lib/job_agent/Agent.properties > ${HINEMOS_AGENT_HOME}/lib/job_agent/Agent.properties
	if [ $? -ne 0 ]
	then
		EchoNG
		echo "${MSG_E004}"
		return 255
	fi
	
	sed -e "s|%%HINEMOS_AGENT_HOME%%|${HINEMOS_AGENT_HOME}|" \
		${SCRIPT_DIR}/hinemos_agent/lib/job_agent/log4j.properties > ${HINEMOS_AGENT_HOME}/lib/job_agent/log4j.properties
	if [ $? -ne 0 ]
	then
		EchoNG
		echo "${MSG_E004}"
		return 255
	fi
	
	# configure Log Transfer Agent
	sed -e "s/%%MANAGER_IP_ADDRESS%%/${MANAGER_IP_ADDRESS}/" \
		-e "s/%%ID%%/${ID}/" \
		-e "s/#log.msg.program/log.msg.program/" \
		${SCRIPT_DIR}/hinemos_agent/lib/log_agent/Agent.properties > ${HINEMOS_AGENT_HOME}/lib/log_agent/Agent.properties
	if [ $? -ne 0 ]
	then
		EchoNG
		echo "${MSG_E004}"
		return 255
	fi
	
	sed -e "s|%%HINEMOS_AGENT_HOME%%|${HINEMOS_AGENT_HOME}|" \
		-e "s/%%HOST%%/${HOST}/" \
		${SCRIPT_DIR}/hinemos_agent/lib/log_agent/log4j.properties > ${HINEMOS_AGENT_HOME}/lib/log_agent/log4j.properties
	if [ $? -ne 0 ]
	then
		EchoNG
		echo "${MSG_E004}"
		return 255
	fi
	echo "${MSG_I059}"
	
	return 0
}

function CopyServiceScripts()
{
	echo 
	while [ 1 ]
	do
		read -p "${MSG_I050} : " INPUT
		INPUT=${INPUT:-Y}
		case ${INPUT} in
			y|Y)
				cp -p ${SCRIPT_DIR}/hinemos_agent/sbin/service/hinemos_job_agent /etc/init.d/hinemos_job_agent${ID}
				cp -p ${SCRIPT_DIR}/hinemos_agent/sbin/service/hinemos_log_agent /etc/init.d/hinemos_log_agent${ID}
				chkconfig --add hinemos_job_agent${ID}
				chkconfig --add hinemos_log_agent${ID}
				echo "${MSG_I051}"
				break
				;;
			n|N)
				echo "${MSG_I052}"
				break
				;;
			*)
				echo "${MSG_W001}"
				;;
		esac
	done
	return 0
}

function InstallJRE()
{
	#check redhat-version
	if [ `cat /etc/redhat-release | grep "release 6.[0-9]" | wc -l` -eq 0 ]
        then
		echo "${MSG_I022}" && sleep 1.5
		cp ${SCRIPT_DIR}/thirdparty/${JAVA_PACKAGE} ${HINEMOS_AGENT_HOME} \
			&& cd ${HINEMOS_AGENT_HOME} \
			&& ${HINEMOS_AGENT_HOME}/${JAVA_PACKAGE} \
			&& rm ${HINEMOS_AGENT_HOME}/${JAVA_PACKAGE} \
			&& cd ${SCRIPT_DIR}
		if [ $? -ne 0 ]
		then
			echo "${MSG_E006}" && echo "${MSG_E004}"
			return 255
		fi
	fi
	
	return 0
}

function ConfigureNetSnmp()
{	
	# configure snmpd.conf
	if [ -e /etc/snmp/snmpd.conf ] && [ `grep -E "^view.+systemview.+included.+.1\.3\.6\.1$" /etc/snmp/snmpd.conf | wc -l` -eq 0 ]
	then
		echo
		echo -n "${MSG_I023}" && sleep 0.5
		cp -pr /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.saved_`date +"%Y%m%d-%H%M%S"`
		echo "view    systemview    included   .1.3.6.1" >> /etc/snmp/snmpd.conf
		
		# configure runlevel and restart snmpd
		/etc/init.d/snmpd status > /dev/null 2>&1 && /etc/init.d/snmpd stop
		chkconfig --level 2345 snmpd on && /etc/init.d/snmpd start
		if [ $? -ne 0 ]
		then
			EchoNG
			echo "${MSG_E004}"
			return 255
		fi
		
		echo "${MSG_I024} (appended \"view systemview included .1.3.6.1\")"
		echo "${MSG_I043}"
		echo "${MSG_W014}"
	fi
	
	return 0
}

function UnconfigureNetSnmp()
{	
	local FILE=/etc/snmp/snmpd.conf.saved_`date +"%Y%m%d-%H%M%S"`
	# configure snmpd.conf
	if [ -e /etc/snmp/snmpd.conf ] && [ `grep -E "^view.+systemview.+included.+.1\.3\.6\.1$" /etc/snmp/snmpd.conf | wc -l` -gt 0 ]
	then
		echo
		echo -n "${MSG_I023}" && sleep 0.5
		cp -pr /etc/snmp/snmpd.conf ${FILE}
		sed "s/^view    systemview    included   .1.3.6.1$//" ${FILE} > /etc/snmp/snmpd.conf
		service snmpd status > /dev/null 2>&1 && service snmpd restart
		if [ $? -ne 0 ]
		then
			EchoNG
			echo "${MSG_E004}"
			return 255
		fi
		echo "${MSG_I024} (removed \"view systemview included .1.3.6.1\")"
	fi
	
	return 0
}

function InstallSyslogNg()
{
	HINEMOS_VERSION=`cat ${HINEMOS_AGENT_HOME}/_version`
	
	echo
	echo "${MSG_I025}"
	rpm -q syslog-ng > /dev/null
	RET=$?
	if [ ${RET} -ne 0 ]
	then
		rpm -ivh --force ${SYSLOG_NG_RPM}
		if [ $? -ne 0 ]
		then
			 echo "${MSG_E007}" && echo "${MSG_E004}"
			 return 255
		fi
		
	else
		echo "${MSG_W009}"
		if [ `grep "destination d_hinemos_syslogforward" /etc/syslog-ng/syslog-ng.conf | wc -l` -eq 0 ]
		then
			# already installed and non manager configuration
			echo "${MSG_W010}"
		fi
	fi
	
	# configure syslog-ng.conf
	if [ `grep "d_hinemos_syslogforward" /etc/syslog-ng/syslog-ng.conf | wc -l` -eq 0 ]
	then
		if [ `grep "s_netudp" /etc/syslog-ng/syslog-ng.conf | wc -l` -eq 0 ]
		then
			sed -e "s/%%HINEMOS_VERSION%%/${HINEMOS_VERSION}/g" \
				-e "s/%%MANAGER_IP_ADDRESS%%/${MANAGER_IP_ADDRESS}/" \
				-e "s/%%AGENT_IP_ADDRESS%%/${AGENT_IP_ADDRESS}/" \
				-e "s/%%ID%%/${ID}/g" \
				${SCRIPT_DIR}/lib/syslog-ng_append_common.conf >> /etc/syslog-ng/syslog-ng.conf
			if [ $? -ne 0 ]
			then
				echo "${MSG_E007}" && echo "${MSG_E004}"
				return 255
			fi
			
			echo "${MSG_I042}"
		fi
		
		sed -e "s/%%HINEMOS_VERSION%%/${HINEMOS_VERSION}/g" \
			-e "s/%%MANAGER_IP_ADDRESS%%/${MANAGER_IP_ADDRESS}/" \
			-e "s/%%AGENT_IP_ADDRESS%%/${AGENT_IP_ADDRESS}/" \
			-e "s/%%ID%%/${ID}/g" \
			${SCRIPT_DIR}/lib/syslog-ng_append_individual.conf >> /etc/syslog-ng/syslog-ng.conf
		if [ $? -ne 0 ]
		then
			echo "${MSG_E007}" && echo "${MSG_E004}"
			return 255
		fi
		
		echo "${MSG_I056}"
	fi

	#stop syslog or rsyslog
	rpm -q rsyslog > /dev/null
	if [ $? -eq 0 ]

	then
		#stop and change settings for rsyslog
		/etc/init.d/rsyslog status > /dev/null 2>&1 && /etc/init.d/rsyslog stop
		/sbin/chkconfig --level 2345 rsyslog off
		if [ $? -ne 0 ]
			then
				echo "${MSG_E012}"
		fi
	fi
	rpm -q syslog > /dev/null
	if [ $? -eq 0 ]
	then
		#stop and change settings for syslog
		/etc/init.d/syslog status > /dev/null 2>&1 && /etc/init.d/syslog stop
		/sbin/chkconfig --level 2345 syslog off
		if [ $? -ne 0 ]
		then
			echo "${MSG_E013}"
		fi
	fi
		
	#start and change settings for syslog-ng
	/etc/init.d/syslog-ng status > /dev/null 2>&1  && /etc/init.d/syslog-ng stop
	/etc/init.d/syslog-ng start \
	&& /sbin/chkconfig --level 2345 syslog-ng on
	if [ $? -ne 0 ]
	then
		echo "${MSG_E007}" && echo "${MSG_E004}"
		return 255
	fi
	
	echo "${MSG_I026}"
	
	return 0
}

function UninstallSyslogNg()
{
	local INPUT_DEFAULT="Y"
	
	echo
	echo "${MSG_I032}" && sleep 0.5
	rpm -q syslog-ng > /dev/null
	if [ $? -ne 0 ]
	then
		echo "${MSG_I033}"
		return 0
	fi
	
	if [ -e /opt/hinemos/_version ] || [ `find /opt -mindepth 1 -maxdepth 1 -type d -path "/opt/hinemos_agent*" | wc -l` -ne 0 ]
	then
		# if agent or manager is installed, disable syslog-ng uninstall
		INPUT_DEFAULT="N"
	fi
	
	cp /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.tmp &&
		sed -e "s/^\(.* d_hinemos_manager${DEL_ID} .*\)$/#\1/g" \
			/etc/syslog-ng/syslog-ng.conf.tmp > /etc/syslog-ng/syslog-ng.conf &&
		rm /etc/syslog-ng/syslog-ng.conf.tmp
	
	while [ 1 ]
	do
		sleep 0.5 && read -p "${MSG_I034}${INPUT_DEFAULT}) : " INPUT
		INPUT=${INPUT:-${INPUT_DEFAULT}}
		case ${INPUT} in
			y|Y)
				break
				;;
			n|N)
				echo "${MSG_W011}" && echo "${MSG_W012}"
				return 0
				;;
			*)
				echo "${MSG_W001}"
				;;
		esac
	done
	
	/sbin/chkconfig --level 2345 syslog-ng off \

	#uninstall syslog-ng
	rpm -e syslog-ng libevtlog0
	if [ $? -ne 0 ]
	then
		echo "{MSG_E010}"
		return 255
	fi
	echo "${MSG_I035}" && echo "${MSG_I036}"
	

	
	#start syslog or rsyslog
	#start rsyslog
	rpm -q rsyslog > /dev/null
	if [ $? -eq 0 ]
	then
		/sbin/chkconfig --level 2345 rsyslog on 
		/etc/init.d/rsyslog start
		if [ $? -ne 0 ]
		then
			echo "${MSG_E010}"
		fi
	fi
	#start syslog
	rpm -q syslog > /dev/null
	if [ $? -eq 0 ]
	then
		/sbin/chkconfig --level 2345 syslog on
		/etc/init.d/syslog start
		if [ $? -ne 0 ]
		then
			echo "${MSG_E010}"
		fi
	fi

	return 0
	
}

function CheckProcess()
{
	local PID
	
	echo && echo "${MSG_I031}" && sleep 0.5
	
	# Hinemos Job Agent
	if [ -e /var/run/hinemos_job_agent${DEL_ID}.pid ]
	then
		read PID < /var/run/hinemos_job_agent${DEL_ID}.pid
		if [ `ps --no-headers --pid ${PID} e | grep "${HINEMOS_AGENT_HOME}/${JAVA_DIR}/bin/java.*com.clustercontrol.agent.Agent" | wc -l` -gt 0 ]
		then
			echo "${MSG_E008}"
			return 255
		fi
	fi
	
	# Hinemos Log Transfer Agent
	if [ -e /var/run/hinemos_log_agent${DEL_ID}.pid ]
	then
		read PID < /var/run/hinemos_log_agent${DEL_ID}.pid
		if [ `ps --no-headers --pid ${PID} e | grep "${HINEMOS_AGENT_HOME}/${JAVA_DIR}/bin/java.*com.clustercontrol.logagent.Agent" | wc -l` -gt 0 ]
		then
			echo "${MSG_E009}"
			return 255
		fi
	fi
	
	return 0
}

function RemoveFiles()
{
	echo
	if [ `find /opt -mindepth 1 -maxdepth 1 -type d -path "/opt/hinemos_agent*" | wc -l` -ne 0 ]
	then
		echo "${MSG_I047}"
		find /opt -mindepth 1 -maxdepth 1 -type d -path "/opt/hinemos_agent*"
		
		# if installed script is executed
		DEL_ID="undef"
		if [ -e ${SCRIPT_DIR}/../lib/hinemos_agent.cfg ]
		then
			. ${SCRIPT_DIR}/../lib/hinemos_agent.cfg
			DEL_ID=${ID} && ReloadMSG
			
			echo
			while [ 1 ]
			do
				sleep 0.5 && read -p "${MSG_I055} : " INPUT
				INPUT=${INPUT:-Y}
				case ${INPUT} in
					y|Y)
						break;
						;;
					n|N)
						echo "${MSG_I030}"
						return 255
						;;
					*)
						echo "${MSG_W001}"
						;;
				esac
			done
		fi
		
		# if default agent is not removed
		if [ "x${DEL_ID}" == "xundef" ]
		then
			echo
			echo "${MSG_I048}"
			read -p "/opt/hinemos_agent" INPUT
			
			DEL_ID=${INPUT}
			echo
			HINEMOS_AGENT_HOME=/opt/hinemos_agent${DEL_ID} && ReloadMSG
		fi
		
		echo
		echo "${MSG_I037}"
		if [ ! -d ${HINEMOS_AGENT_HOME} ]
		then
			echo "${MSG_I038}"
			return 255
		fi
		
		CheckProcess || return 255
		
		while [ 1 ]
		do
			sleep 0.5 && read -p "${MSG_I039} : " INPUT
			INPUT=${INPUT:-Y}
			case ${INPUT} in
				y|Y)
					break
					;;
				n|N)
					echo "${MSG_W013}"
					return 0
					;;
				*)
					echo "${MSG_W001}"
					;;
			esac
		done
		
		if [ `ls -l /etc/init.d/ | grep hinemos_job_agent${DEL_ID}$ | wc -l` -ne 0 ] || [ `ls -l /etc/init.d/ | grep hinemos_log_agent${DEL_ID}$ | wc -l` -ne 0 ]
		then
			chkconfig --del hinemos_job_agent${DEL_ID}
			chkconfig --del hinemos_log_agent${DEL_ID}
			rm -rf /etc/init.d/hinemos_job_agent${DEL_ID}
			rm -rf /etc/init.d/hinemos_log_agent${DEL_ID}
			echo "${MSG_I054}"
		fi
		
		rm -rf ${HINEMOS_AGENT_HOME}
		if [ $? -ne 0 ]
		then
			echo "${MSG_E011}"
			return 255
		fi
		echo "${MSG_I040}"
		
	else
		echo "${MSG_I049}"
		return 255
	fi
	return 0
}

function ReloadMSG()
{
	if [ -e ${SCRIPT_DIR}/lib/${LANGUAGE}_install.lng ]
	then
		. ${SCRIPT_DIR}/lib/${LANGUAGE}_install.lng
	else
		echo "failed reloading a language file. (${LANGUAGE}_install.lng)"
	fi
}

function SIGINTExit()
{
	echo
	echo "${MSG_E004} (SIGINT)"
	exit -1
}

########################################
# SHELL
########################################

#
# check parameters
#
if [ $# -ne 1 ]; then
	echo "${MSG_E001}"
	exit -1
fi

# define trap
trap SIGINTExit 2

# print welcome
Welcome

# check environment
CheckEnvironment || exit -2

# main loop
while [ 1 ]
do
	sleep 0.5 && echo
	echo "${MSG_I003}"
	if [ -e ${SCRIPT_DIR}/hinemos_agent ]
	then
		# if installed script is executed
		echo "${MSG_I004}"
	fi
	echo "${MSG_I005}"
	echo "${MSG_I006}"
	echo
	read -p "${MSG_I007}" INPUT
	case ${INPUT} in
		1)
			if [ -e ${SCRIPT_DIR}/hinemos_agent ]
			then
				ConfirmInstallation || continue
				CheckInstallDirectory || continue
				CheckHosts || continue
				CheckRPM || continue
				InputIpAddress || continue
				CopyFiles || continue
				ConfigureFiles || continue
				CopyServiceScripts || continue
				InstallJRE || continue
				ConfigureNetSnmp || continue
				InstallSyslogNg || continue
				echo && echo "${MSG_I028}" && echo
			else
				# if installed script is executed
				echo "${MSG_W001}"
			fi
			;;
		2)
			ConfirmUninstallation || continue
			RemoveFiles || continue
			UninstallSyslogNg || continue
			# UnconfigureNetSnmp || continue
			echo && echo "${MSG_I041}"
			echo && echo "${MSG_I008}" && echo
			# if installed script is executed
			if [ ! -e ${SCRIPT_DIR}/hinemos_agent ]
			then
				break
			fi
			;;
		9)
			echo && echo "${MSG_I008}" && echo
			break
			;;
		*)
			echo "${MSG_W001}"
			;;
	esac
	
done

exit 0