#!/bin/sh
# Version 00.00.02
# script fuer CTI  :
# Threads auf Polling ueberwachen, laufende Thrads legen nach /var/run/ die Dateien checkbusX an
# X = Busnummer/Schnittstelle
# Achtung: nur passend in Kombination mit der neuen Hardware lib (ohne 'busbegrenzung')

POLLCHECKSTATE=1

CHECKPATH=/var/run

BLOCKED_BUS=0

checkBusse()
{
   FILES="$CHECKPATH/checkbus*"
	for f in $FILES
	do
# Ziffer ermitteln
		NUMBER=$(echo "$f" | tr -dc '0-9')
#		; echo $NUMBER
# debug		echo "checking $f Bus ... # $NUMBER"
		if [ -e $CHECKPATH/checkbus$NUMBER ]; then
#			echo "überwache busclass$NUMBER -debug"
			if [ -e $CHECKPATH/busclass$NUMBER ]; then
# debug 				echo "Bus $NUMBER alive"
				rm $CHECKPATH/busclass$NUMBER
			else
				BLOCKED_BUS=$NUMBER
# debug 				echo "Bus $NUMBER blocked, reboot"
				neustart
			fi

		fi
	done
}
#------------------------
neustart()
{
	now=$(date)

	echo "$now :reboot System wegen Bus $BLOCKED_BUS"  >> /home/cti/systemstart.log
	sleep 2
	ProcessList=$(ps -T)
   echo -en "\n $now \n==========\n $ProcessList \n==========\n" >> /home/cti/processlist.log
	rm $CHECKPATH/ctiapp_run
	reboot
	exit 0
}
#------------------------
start()
{
	logger -s "Poll Check Started"
	sleep 180
	while [ $POLLCHECKSTATE -gt 0 ]
	do
		sleep 30
		if [ -e $CHECKPATH/ctiapp_run ]; then
# nur wenn Datei "ctiapp_run" vorhanden ist, dann Pruefung
# wenn nicht dann ist das System nicht gestartet
         checkBusse
		else
			echo "$(date) ctiapp not running, wait 180 ..."
			sleep 180
		fi
	done
}

stop()
{
	POLLCHECKSTATE=0
}
#====================
# main case ...
#====================
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	restart
	;;
#  mytest)	ReadBusseInfo	;;
  *)
	echo "Usage: $0 {start | stop | restart }"
	exit 1
esac

exit $?
