#!/bin/bash
# IPC - MASTERSCRIPT (sBox)
#

. /var/emu/script/functions.sh
readipccfg
[ -z $SBVERSION ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $SBBIN ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $SBCFG ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $SBLOGFILE ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CRON ] && clear && echo -e "\033[1;31mIPC - Paket Konfigurationsfehler!\033[0m" && exit 1

CAMNAME="$SBNAME"


if [ ! -f "$SBBIN" ]; then
	echo ""
	echo -e "\e[1;31m$CAMNAME wurde deaktiviert!"
	echo -e "Zum Re-aktivieren: \e[0;32mi cams\033[0m"
	echo ""
	exit 1
fi


# This method starts sBox
start_cam() {
	if [ ! -z "$SBLOGFILE" ]; then
		$SBBIN -c $CAMCONFIGS/ >$SBLOGFILE
	else
		$SBBIN -c $CAMCONFIGS/ >/dev/null
	fi
	if [ $? -ne "0" ]; then
		echo "Fehler beim starten von $CAMNAME!"
	else
		echo "$CAMNAME : gestartet"
	fi
}

# This method starts sBox with Logging to Console for debuging
log_cam() {
	$SBBIN -c $CAMCONFIGS/
	if [ $? -ne "0" ]; then
		echo "\033[1;31mFehler beim starten von $CAMNAME!\033[0m"
	fi
}

# This method stops sBox
stop_cam() {
	pkill -9 $SBVERSION
	sleep 2
	PID="$(pgrep -x $SBVERSION)"
	if [[ ! -n $PID ]] ; then
		echo "$CAMNAME : beendet"
	else
		pkill -9 $SBVERSION
		echo "$CAMNAME : gekillt"
	fi
}

case "$1" in
	start)
		PID="$(ps auxw | grep -v grep | grep -v $0 | grep $SBVERSION | awk {'print $2'})"
		if [[ ! -z $PID ]] ; then
			echo "$CAMNAME : ist bereits gestartet"
		else
			start_cam
			if [[ $CRON == 1 ]]; then
				PID="$(pgrep -x cron)"
				if [[ ! -z $PID ]] ; then
					dummy="1"
				else
					/etc/init.d/cron start > /dev/null
					echo "Cron  : gestartet"
				fi
			fi
		fi
	;;
	lstart)
		PID="$(ps auxw | grep -v grep | grep -v $0 | grep $SBVERSION | awk {'print $2'})"
		if [[ ! -z $PID ]] ; then
			echo "$CAMNAME : ist bereits gestartet"
		else
			log_cam
			echo "$CAMNAME : wurde mit ConsolenLog gestartet. Beenden mit: [STRG]+[C]"
		fi
	;;
	stop)
		PID="$(ps auxw | grep -v grep | grep -v $0 | grep $SBVERSION | awk {'print $2'})"
		if [[ ! -z $PID ]] ; then
			stop_cam
			if [[ $CRON == 1 ]]; then
				PID="$(pgrep -x cron)"
				if [[ ! -z $PID ]] ; then
					/etc/init.d/cron stop > /dev/null
					echo "Cron  : beendet"
				else
					echo "Cron  : ist bereits beendet"
				fi
			fi
		else
			echo "$CAMNAME : ist bereits beendet"
		fi
	;;
	restart)
		echo "$CAMNAME : restart"
		stop_cam
		sleep 3
		start_cam
	;;
	help)
		clear
		less $CAMBINS/script/sbox-help.txt
	;;
	log)
		clear
		echo "$CAMNAME Log - Abbrechen mit [Strg]+[C]                          $(date +"%d.%m.%Y %H:%M")"
		echo "==============================================================================="
		echo ""
		if [ -f $SBLOGFILE ] ; then
			tail -f $SBLOGFILE
		else
			echo "Keine Logdatei vorhanden!"
		fi
	;;
	*)
		clear
		echo -e "\033[1;37m$CAMNAME IPC $IPCVERSION                                         $(date +"%d.%m.%Y %H:%M")\033[0m"
		echo "==============================================================================="
		echo ""
		echo -e "Befehlsliste: \033[1;31msbox\033[0m"
		echo ""
		echo -e "\033[1;37m  Hilfe zu Befehlen\033[0m                           \033[1;31mhelp\033[0m"
		echo -e "\033[1;37m  Start, Stop, Restart\033[0m                        \033[0;37mstart | lstart | stop | restart\033[0m"
		echo -e "\033[1;37m  Logfile\033[0m                                     \033[0;37mlog\033[0m"
		echo ""
		echo "==============================================================================="
		echo ""
		exit 1
	;;
esac

exit 0

