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

. /var/emu/script/functions.sh
readipccfg
[ -z $NCSVERSION ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $NCSBIN ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $NCSXML ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $NCSLOG ] && 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="$NCSNAME"

if [ ! -f "$NCSBIN" ]; 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 NewCS
start_cam () {
	$NCSBIN -c $NCSXML > /dev/null 2>&1
	if [ $? -ne "0" ]; then
		echo "Fehler beim starten von $CAMNAME!"
	else
		echo "$CAMNAME : gestartet"
	fi
}

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

# This method starts NewCS with Logging
log_cam () {
	$NCSBIN -c $NCSXML
	if [ $? -ne "0" ]; then
		echo "\033[1;31mFehler beim starten von $CAMNAME!\033[0m"
	fi
}

case "$1" in
	start)
		PID="$(pgrep -x $NCSVERSION)"
		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="$(pgrep -x $NCSVERSION)"
		if [[ ! -z $PID ]] ; then
			echo "$CAMNAME : ist bereits gestartet"
		else
			log_cam
			echo "$CAMNAME : wurde gestartet mit Log"
		fi
	;;
	stop)
		PID="$(pgrep -x $NCSVERSION)"
		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/newcs-help.txt
	;;
	version)
		$NCSBIN -help &> /tmp/newcs.version
		NCSVER=$(cat /tmp/newcs.version | grep -i build)
		echo "$NCSVER" && rm -f /tmp/newcs.version
	;;
	log)
		clear
		echo "$CAMNAME Log - Abbrechen mit [Strg]+[C]                          $(date +"%d.%m.%Y %H:%M")"
		echo "==============================================================================="
		echo ""
		if [ -f $NCSLOG ] ; then
			tail -f $NCSLOG
		else
			echo "Keine Logdatei vorhanden!"
			echo ""
			echo " Die Filelogfunktion ist im Debugteil der newcs.xml einzustellen."
			echo " Siehe Vorlagendatei /var/emu/help/newcs.xml"
			echo ""
		fi
	;;
	*)
		clear
		echo -e "\033[1;37m$CAMNAME-Server IPC $IPCVERSION                                         $(date +"%d.%m.%Y %H:%M")\033[0m"
		echo "==============================================================================="
		echo ""
		echo -e "Befehlsliste: \033[1;31mnewcs\033[0m"
		echo ""
		echo -e "\033[1;37m  Hilfe zu Befehlen\033[0m                           \033[1;31mhelp\033[0m"
		echo -e "\033[1;37m  Version anzeigen\033[0m                            \033[0;37mversion\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

