#!/bin/sh

#/DSX/IM/IntraMail.sh

killall dsxwdog
killall boa
dsxwdog 120 &

dsxreset
status=$?

while true
do
	if [ "$status" -eq 254 ] || [ "$status" -eq 3 ]
	then
	 	
# DSX configuration files erased here	

		echo
		echo "DSX Database Erased...Cold Starting"
		rm -rf /DSX/DB
		rm -f /usr/share/DSXEmailService/workq
		rm -f /usr/share/DSXEmailService/SMTPResults.txt
		rm -f /usr/share/DSXEmailService/SMTPFailure.txt
		rm -f /usr/share/DSXEmailService/DSXEmail.log1
		rm -f /usr/share/DSXEmailService/DSXEmail.log2
		
	elif [ "$status" -eq 4 ]
	then
	 	
# DSX configuration files restored here	

		echo
		echo "DSX Database Erased..."
		rm -rf /DSX/DB
		echo "DSX Database Restoring..."
		tar xvf /cf/DSXDB.tar -C /
	fi

	killall voip
	killall -9 sipw
	killall sarb
	sleep 1
	
	rm -f /var/run/sipwitch/pidfile
	
	/usr/bin/check_voipdb > /dev/null
	voipdb=$?
	
	if [ "$voipdb" -eq 1 ]
	then
		while [ 1 ]
		do
			ebtables -t nat -D PREROUTING 1 > /dev/null 2>&1
			if [ $? -ne 0 ]
			then
				break;
			fi
		done
		while [ 1 ]
		do
			ebtables -t nat -D POSTROUTING 1 > /dev/null 2>&1
			if [ $? -ne 0 ]
			then
				break;
			fi
		done
		eth0=`ifconfig eth0 |grep HWaddr |awk '{print $5}'`
		eth1=`ifconfig eth1 |grep HWaddr |awk '{print $5}'`
		ebtables -t nat -A POSTROUTING -o eth0 -j snat --to-source ${eth0} --snat-target ACCEPT
		ebtables -t nat -A POSTROUTING -o eth1 -j snat --to-source ${eth1} --snat-target ACCEPT

		rm -f /tmp/voip_start_up
		#nice /DSX/sarb &
		/DSX/sarb &
		if [ "${manu}" = "yes" ]
		then
			dsxwdog -1
			/DSX/voip > /dev/null &
		else
		#	nice -n -19 /DSX/voip &
			/DSX/voip &
		fi
		count=0
		while [ 1 ]
		do
			sleep 1
			count=$(($count+1))
			if [ -e /tmp/voip_start_up ]
			then
				rm -f /tmp/voip_start_up
				echo "waited ${count} times"
				break
			fi
			if [ ${count} -gt 35 ]
			then
				break
			fi
		done
		if [ "${manu}" = "yes" ]
		then
			/DSX/sipw -f > /dev/null 2>&1 &
		else
			/DSX/sipw -f &
		fi
		sleep 2
	elif [ "${manu}" = "yes" ]
	then
		dsxwdog -1
		while [ 1 ]
		do
			sync; sync
			echo "************** Board isn't detected"
			sleep 10
		done
	fi

	if [ ${voipdb} = 1 ]
	then
        isdsx40 > /dev/null
        if [ $? -eq 1 ]
        then
            #this is a dsx40 up the priority of the main app
		    if [ "${manu}" = "yes" ]
		    then
			    nice -n -1 /DSX/DSXApp.elf $status > /dev/null 2>&1
		    else
			    #nice -n -1 /DSX/DSXApp.elf $status
			    /DSX/DSXApp.elf $status
		    fi
        else
            #this is a dsx80 keep the same priority since we have more streams
		    if [ "${manu}" = "yes" ]
		    then
			    nice -n 11 /DSX/DSXApp.elf $status > /dev/null 2>&1
		    else
			    #nice -n 11 /DSX/DSXApp.elf $status
			    /DSX/DSXApp.elf $status
		    fi
        fi
	else
		/DSX/DSXApp.elf $status
	fi
	exitcode=$?
	echo
	echo -n " >>> DSXApp: exit ($exitcode)"
	
	dsxreset
	status=$?
	
	if [ "$status" -eq 0 ]
	then
		status=$exitcode
	fi

	dsxled 0 0
	dsxled 1 1
		
	echo
	echo -n " >>> DSXApp: Closed ($status)"
	
	case "$status" in
	
	0 )
		echo -n "...Exit Code Not Specified"
		;;
		
	1 )
		echo -n "...Warm Start Requested"
		;;
	 	
	2 )
		echo -n "...Reboot Requested"
		reboot
		;;
		
	3 )
	 	echo -n "...Cold Start Requested"
		;;
		
	4 )
	 	echo -n "...DB Restore Requested"
	 	;;
		
	5 )
		echo -n "...Software Watchdog Occurred"
		;;
	 	
	6 )
		echo -n "...Error Encountered"
		;;
		
	7 )
		echo "...Exiting to Linux"
		break;
		;;
		
	126 )
		echo "...No Execute Permission"		
		break;
		;;

	127 )
		echo "...Application Not Found"		
		break;
		;;
			
	130 )
		echo -n "...CTL-C Entered"
	 	;;
		
	137 )
		echo "...Killed"
		break;
		;;
		
	139 )
		echo "...Segmentation Violation"
		;;
		
	141 )
		echo "...Message Pipe Error"
		;;
	
	143 )
		echo "...Terminated"
		;;
		
	* )
		;;

	esac
	
	dsxwdog 120 &
	sleep 1
	
done

killall voip
killall sipw
killall sarb

dsxwdog -1

exec /sbin/getty -L 38400 ttyCPM0

	
