#!/bin/sh
#
# description: Starts and stops the snmp agent deamon
#

SNMPD=/usr/local/bin/snmpd
SYSCONF=/etc/config/uLinux.conf
ETCCONF=/etc/config/snmpd.conf
VARCONF=/var/ucd-snmp/snmpd.conf
TMPVARCONF=/etc/config/snmpd.var.conf
NEW_CONF=/tmp/new_snmpd_conf.flag
RETVAL=0

reset_snmp_conf_file()
{
	SNMPV=`/sbin/getcfg SNMP "Version" -d 1`
	if [ $"SNMPV" = "1" ]; then
		COMM=`/sbin/getcfg SNMP "Trap Community" -d public`
	else
		ENGINE_ID=`/sbin/getcfg SNMP "Engine ID" -d ""`
		USER=`/sbin/getcfg SNMP "User" -d ""`
		I_AUTH_PROTOCOL=`/sbin/getcfg SNMP "Auth Protocol" -d 0`
		AUTH_KEY=`/sbin/getcfg SNMP "Auth Key" -d ""`
		I_PRIV_PROTOCOL=`/sbin/getcfg SNMP "Priv Protocol" -d 0`
		PRIV_KEY=`/sbin/getcfg SNMP "Priv Key" -d ""`
		AUTH_PROTOCOL=MD5
		if [ $I_AUTH_PROTOCOL = 1 ]; then
			AUTH_PROTOCOL=SHA
		fi
		PRIV_PROTOCOL=DES
#		if [ $I_PRIV_PROTOCOL = 1 ]; then
#			PRIV_PROTOCOL=AES
#		fi
		cp $TMPVARCONF ${TMPVARCONF}.bak

		AUTH_TYPE=`/sbin/getcfg SNMP "Auth Type" -d 0`
		if [ "x$ENGINE_ID" = "x" ]; then
			ENGINE_CMD=""
		else
			ENGINE_CMD="-e $ENGINE_ID"
		fi
		case "$AUTH_TYPE" in
		"0")
			echo createUser $ENGINE_CMD \"$USER\" > $TMPVARCONF
			;;
		"1")
			echo createUser $ENGINE_CMD \"$USER\" $AUTH_PROTOCOL \"$AUTH_KEY\" > $TMPVARCONF
			;; 
		"2")
			echo createUser $ENGINE_CMD \"$USER\" $AUTH_PROTOCOL \"$AUTH_KEY\" $PRIV_PROTOCOL \"$PRIV_KEY\" > $TMPVARCONF
			;;
		esac
	fi
}
start()
{
	ENABLE=`/sbin/getcfg SNMP "Service Enable" -d FALSE -u -f $SYSCONF`
	if [ "x${ENABLE}" == "xTRUE" ] ; then
		/bin/echo "Starting snmp agent:"
		mkdir -p /var/ucd-snmp
#		/bin/echo "****** /etc/config/snmpd.conf" > /tmp/snmp.log
#		/bin/cat /etc/config/snmpd.conf >> /tmp/snmp.log
#		/bin/echo "****** /etc/config/snmpd.var.conf" >> /tmp/snmp.log
#		/bin/cat /etc/config/snmpd.var.conf >> /tmp/snmp.log
#		if [ -f $VARCONF ]; then
#			/bin/echo "****** $VARCONF" >> /tmp/snmp.log
#			/bin/cat $VARCONF >> /tmp/snmp.log
#		fi
		if [ -f $NEW_CONF ] || [ ! -f $VARCONF ]; then
#			/bin/echo "Copy /etc/config/snmpd.var.conf" >> /tmp/snmp.log
			cp /etc/config/snmpd.var.conf $VARCONF
		fi
		PORT_NO=`/sbin/getcfg SNMP "Listen Port" -d 161`
		$SNMPD -c /etc/config/snmpd.conf -p ${PORT_NO}
		RETVAL=$?
		[ -f $NEW_CONF ] && rm $NEW_CONF
		/bin/sleep 1
		cp $VARCONF /etc/config/snmpd.var.conf
#		/bin/echo "****** /etc/config/snmpd.var.conf" >> /tmp/snmp.log
#		/bin/cat /etc/config/snmpd.var.conf >> /tmp/snmp.log
	fi
}

stop()
{
	/bin/echo "Stopping snmp agent: "
	killall snmpd
	RETVAL=$?
}

restart()
{
	stop
	sleep 1
	start

}

##[ -f $SNMPD ] || exit 0

case "$1" in
	start)
			start
			;;
	stop)
			stop
			;;
	restart)
			stop
			start
			;;
esac

exit $RETVAL
