#! /bin/sh

#set serial no
uid=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='hard_id';")
new_serial_no='SN'${uid:8:4}
old_serial_no=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='sn';")

echo "new serial no:"${new_serial_no}
echo "old serial no:"${old_serial_no}
if [ ${new_serial_no} != ${old_serial_no} ];then
	/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "update settings set value='${new_serial_no}' where name='sn';"
	echo "save sn to:"${new_serial_no}
fi

#start web server

http_port=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='http_port';")
if [ ! $http_port ]; then
	http_port=80
fi

https_port=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='https_port';")
if [ ! $https_port ]; then
        https_port=443
fi

enable_redirect=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='enable_redirect';")
if [ ! $enable_redirect ]; then
	enable_redirect=0
fi

chmod 755 /usr/local/lighttpd/bin/lighttpd

if [ $enable_redirect -eq 1 ];then
	sed -i "s/^[[:blank:]]*var.server_port.*/var.server.port = 80/g" /usr/local/lighttpd/config/lighttpd_redirect.conf

	sed -i "s/^[[:blank:]]*var.ssl_port.*/var.ssl_port = 443/g" /usr/local/lighttpd/config/lighttpd_redirect.conf

	/usr/local/lighttpd/bin/lighttpd -f /usr/local/lighttpd/config/lighttpd_redirect.conf -m /usr/local/lighttpd/lib
else
	sed -i "s/^[[:blank:]]*server.port.*/server.port = ${http_port}/g" /usr/local/lighttpd/config/lighttpd.conf
	
	sed -i "s/^[[:blank:]]*var.ssl_port.*/var.ssl_port = ${https_port}/g" /usr/local/lighttpd/config/lighttpd.conf

	/usr/local/lighttpd/bin/lighttpd -f /usr/local/lighttpd/config/lighttpd.conf -m /usr/local/lighttpd/lib
fi

#for ipc key
mkdir -p "/usr/local/etc/app/shm/"

#start pdu controller                                                                                                                   
chmod 755 /usr/app/pdu_controller 
/usr/app/pdu_controller 127.0.0.1 8888 &

#start snmp
snmp_enable=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='snmp_enable';")

if [ $snmp_enable -eq 1 ];then
	snmp_community=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='snmp_group';")
	snmp_permission=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='snmp_permission';")
	snmp_v3_user=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='snmp_v3_user';")
	snmp_v3_auth_pwd=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='snmp_v3_auth_pwd';")
	snmp_v3_priv_pwd=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='snmp_v3_priv_pwd';")

	snmp_trap_enable=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='snmp_trap';")
	snmp_trap_receiver=$(/usr/local/sqlite/sqlite3 /var/www/database/pdu.db "select value from settings where name='snmp_address';")
 
	echo 'snmp_community' $snmp_community
	echo 'snmp_permission' $snmp_permission
	echo 'snmp_v3_user' $snmp_v3_user
	echo 'snmp_v3_auth_pwd' $snmp_v3_auth_pwd
	echo 'snmp_v3_priv_pwd' $snmp_v3_priv_pwd

	echo 'snmp_trap_enable' $snmp_trap_enable
	echo 'snmp_trap_receiver' $snmp_trap_receiver

	if [ $snmp_permission -eq 0 ]; then
		#ro
		#v1 & v2
		sed -i 's/^[[:blank:]]*#rocommunity/rocommunity/g' /usr/local/snmp/snmpd.conf
		sed -i "s/^[[:blank:]]*rocommunity[[:blank:]]\+[^[:blank:]]\+[[:blank:]]\+[^[:blank:]]\+/rocommunity ${snmp_community} default/g" /usr/local/snmp/snmpd.conf

		sed -i 's/^[[:blank:]]*rwcommunity/#rwcommunity/g' /usr/local/snmp/snmpd.conf

		#v3
		sed -i 's/^[[:blank:]]*#rouser/rouser/g' /usr/local/snmp/snmpd.conf
		sed -i "s/^[[:blank:]]*rouser[[:blank:]]\+[^[:blank:]]\+/rouser ${snmp_v3_user}/g" /usr/local/snmp/snmpd.conf

		sed -i 's/^[[:blank:]]*rwuser/#rwuser/g' /usr/local/snmp/snmpd.conf
	else
		#rw
		#v1 & v2
		sed -i 's/^[[:blank:]]*#rwcommunity/rwcommunity/g' /usr/local/snmp/snmpd.conf
		sed -i "s/^[[:blank:]]*rwcommunity[[:blank:]]\+[^[:blank:]]\+[[:blank:]]\+[^[:blank:]]\+/rwcommunity ${snmp_community} default/g" /usr/local/snmp/snmpd.conf

		sed -i 's/^[[:blank:]]*rocommunity/#rocommunity/g' /usr/local/snmp/snmpd.conf

		#v3
		sed -i 's/^[[:blank:]]*#rwuser/rwuser/g' /usr/local/snmp/snmpd.conf
		sed -i "s/^[[:blank:]]*rwuser[[:blank:]]\+[^[:blank:]]\+/rwuser ${snmp_v3_user}/g" /usr/local/snmp/snmpd.conf

		sed -i 's/^[[:blank:]]*rouser/#rouser/g' /usr/local/snmp/snmpd.conf
	fi

	#edit password
	sed -i "s/^[[:blank:]]*createUser.*/createUser ${snmp_v3_user} SHA ${snmp_v3_auth_pwd} AES ${snmp_v3_priv_pwd}/g" /usr/local/snmp/snmpd.conf

	if [ $snmp_trap_enable -eq 1 ]; then
		sed -i 's/^[[:blank:]]*#trapsink/trapsink/g' /usr/local/snmp/snmpd.conf
		sed -i "s/trapsink[[:blank:]]\+[^[:blank:]]\+[[:blank:]]\+[^[:blank:]]\+/trapsink ${snmp_trap_receiver} ${snmp_community}/g" /usr/local/snmp/snmpd.conf
	else
		sed -i 's/^[[:blank:]]*trapsink/#trapsink/g' /usr/local/snmp/snmpd.conf
	fi

	/usr/local/snmp/snmpd  -Le -c /usr/local/snmp/snmpd.conf
fi

