#!/bin/sh
oem="LSI SAS"
sfile="lsi_mrdsnmpd" # startup file name
defsnmpconf="snmpd.conf"
snmpconf="lsi_mrdsnmpd.conf"
snmpd="snmpd"
trapconf="sas_TrapDestination.conf"
agent="lsi_mrdsnmpagent"
main="lsi_mrdsnmpmain"
mib_dat="sas_mib.dat"
datacollector="libsas_objects.so"
datacollector_version="1"
agtdir="/etc/lsi_mrdsnmp"
dcdir="${agtdir}/sas"
script="lsi_mrdsnmpd"
source_file="${agtdir}/LSI_StorSNMP.ini"
destination_file="${source_file}"".tmp"
first_install=0
initdir="/etc/init.d"

SNMPDCONF=""
JOBFILE=""
if [ -f /etc/redhat-release ]; then
	SNMPDCONF=/etc/snmp/snmpd.conf
	JOBFILE=${sfile}.rh
fi

if [ -f /etc/SuSE-release ]; then
        suse_ver=`cat /etc/SuSE-release | grep 'VERSION = 9'| wc -l` # Check for SUSE 9 Operating System
        if [ "$suse_ver" == "1" ]; then
                SNMPDCONF=/etc/snmpd.conf
        else
                SNMPDCONF=/etc/snmp/snmpd.conf
        fi
	JOBFILE=${sfile}.suse
fi

if [ ${SNMPDCONF} = "" ]; then
	echo "SAS SNMP Agent supports only Redhat and SuSE releases."
	echo "Exiting ....."
	exit 1
fi
if ! [ -f ${SNMPDCONF} ]; then
	echo "${SNMPDCONF} file not found. Please check the filepath"
	echo "Exiting ....."
	exit 1
fi
if [ "$TRAPIND" = "" ]; then
	TRAPIND="Y"
fi

case "$TRAPIND" in
	Y)
	TRAPIND="Y"
	;;
	N)
	TRAPIND="N"
	;;
	y)
	TRAPIND="Y"
	;;
	n)
	TRAPIND="N"
	;;
	*)
	TRAPIND="Y"
	;;
esac

Write_SNMPD_Conf()
{
	cat ${SNMPDCONF} | grep "pass .1.3.6.1.4.1.3582 /usr/sbin/lsi_mrdsnmpmain" >/dev/null
	if [ $? -ne 0 ] ; then
	   echo pass .1.3.6.1.4.1.3582 /usr/sbin/lsi_mrdsnmpmain >> ${SNMPDCONF}
	fi
}

startup()
{
rm ${initdir}/${sfile} 2>/dev/null

ln -s ${agtdir}/${agent} /usr/sbin/${agent} 2>/dev/null
ln -s ${agtdir}/${main} /usr/sbin/${main} 2>/dev/null
ln -s /usr/lib/${datacollector}.${datacollector_version} /usr/lib/${datacollector} 2>/dev/null
ln -s /opt/lsi/snmp/lib/libstorelib.so.3.96-0 /opt/lsi/snmp/lib/libstorelib.so.3 2>/dev/null
ln -s /opt/lsi/snmp/lib/libstorelib.so.3 /opt/lsi/snmp/lib/libstorelib.so 2>/dev/null
ln -s ${agtdir}/${JOBFILE} /etc/init.d/${sfile} 2>/dev/null
#ln -s $initdir/${sfile} $rcdir/rc0.d/K45${sfile} 2>/dev/null
#ln -s $initdir/${sfile} $rcdir/rc1.d/K45${sfile} 2>/dev/null
#ln -s $initdir/${sfile} $rcdir/rc6.d/K45${sfile} 2>/dev/null
#ln -s $initdir/${sfile} $rcdir/rc2.d/S55${sfile} 2>/dev/null
#ln -s $initdir/${sfile} $rcdir/rc3.d/S55${sfile} 2>/dev/null
#ln -s $initdir/${sfile} $rcdir/rc4.d/S55${sfile} 2>/dev/null
#ln -s $initdir/${sfile} $rcdir/rc5.d/S55${sfile} 2>/dev/null
}

Create_Config_File()
{
	rm -f ${destination_file}
        already_present=0 
	if [ ! -f ${source_file} ]
	then
		touch ${source_file}
		echo "####################################">${source_file}
		echo "NoOfInstalledController=1">>${source_file}
		echo "## Dat File Name    ###  Trap Dest. File Name##">>${source_file}
		echo "${dcdir}/${mib_dat} ${dcdir}/${trapconf} ${TRAPIND}">>${source_file}
		
		Write_SNMPD_Conf
		first_install=1	
		return 0
	fi
	while [ true ]
	do
		read line
		if [ $? -ne 0 ]
		then
			break
		fi
		no_of_controller_line=`echo ${line}|grep NoOfInstalledController`
		if [ "${no_of_controller_line}" = ""  ]; then
			find_dat=`echo ${line} | grep ${mib_dat}`
			if [ "${find_dat}" = "" ]; then
				echo ${line} >>  ${destination_file}
			else
				already_present=1	
				break
			fi
		else
			no_of_controller=`echo ${line}|sed s/NoOfInstalledController=//`
			no_of_controller=`expr $no_of_controller + 1`
			echo "NoOfInstalledController="$no_of_controller >>${destination_file}
		fi	
	done < ${source_file}

	if [ ${already_present} = 0 ]; then
		echo "${dcdir}/${mib_dat} ${dcdir}/${trapconf} ${TRAPIND}">>${destination_file}
		rm -f ${source_file}
		mv  ${destination_file} ${source_file}
	else
		rm -f ${destination_file} 
	fi

}

#1.Check snmpd is installed or not!
if ! [ -x /sbin/snmpd -o -x /usr/sbin/snmpd -o -x /usr/local/sbin/snmpd ] ; then
	echo snmpd is not installed.
	echo Can not continue installation of $oem Agent
	exit 1
fi

#2.Check snmptrap is installed or not!
if ! [ -x /usr/bin/snmptrap ] ; then
	if ! [ -x /usr/local/bin/snmptrap ] ; then
		echo Can not find snmptrap in /usr/bin
		echo Can not continue installation of $oem Agent
		echo Please install the net-snmp agent
		exit 1
	else
		[ -f /usr/bin/snmptrap ] && rm -f /usr/bin/snmptrap
		ln -s /usr/local/bin/snmptrap /usr/bin/snmptrap
	fi
fi


#3. Create configuration files
Create_Config_File
#4. Create startup process
if [ -d /etc/rc.d ] ; then
    rcdir="/etc/rc.d"
else
    rcdir="/etc"
fi
		    
startup
#5.
echo "Starting snmpd"
apid=`pidof ${snmpd} | cut -f1 -d" "`
if [ "$apid" != "" ] ; then
   [ -x ${initdir}/${snmpd} ] &&  ${initdir}/${snmpd} restart
else
   [ -x ${initdir}/${snmpd} ] &&  ${initdir}/${snmpd} start
fi

if [ -f /etc/SuSE-release ]; then
	if [ ${first_install} -eq 1 ]; then
   		echo "Registering Service lsi_mrdsnmpd"
   		chkconfig -a lsi_mrdsnmpd 2>|/dev/null
	fi
fi

if [ -f /etc/redhat-release ]; then
	if [ "$first_install" = "1" ]; then
   		echo "Registering Service lsi_mrdsnmpd"
		chkconfig --add lsi_mrdsnmpd 2>|/dev/null
	fi
fi

echo "Starting LSI SNMP Agent"
apid=`pidof ${agent} | cut -f1 -d" "`
if [ "$apid" != "" ] ; then
   [ -x ${initdir}/${script} ] &&  ${initdir}/${script} restart
else
   [ -x ${initdir}/${script} ] &&  ${initdir}/${script} start
fi

 
exit 0
