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

. /var/emu/script/functions.sh
readipccfg
[ -z $CDVERSION ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CDBIN ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CDCFG ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler!\033[0m" && exit 1
[ -z $CDLOGFILE ] && 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="$CDNAME"
controllCamd3="$CAMBINS/camd3/pcamd"


if [ ! -f "$CDBIN" ]; 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 Camd3
start_cam() {
	if [ ! -z "$CDLOGFILE" ]; then
			$CDBIN $CDCFG >$CDLOGFILE &
	else
		$CDBIN $CDCFG &
	fi
	if [ $? -ne "0" ]; then
		echo "Fehler beim starten von $CAMNAME!"
	else
		echo "$CAMNAME : gestartet"
	fi
}

# This method starts Camd3 with Logging to Console
log_cam() {
	$CDBIN $CDCFG &
	if [ $? -ne "0" ]; then
		echo "\033[1;31mFehler beim starten von $CAMNAME!\033[0m"
	fi
}

# This method stops Camd3
stop_cam() {
	$controllCamd3 -kill >/dev/null 2>&1
	pkill -9 $CDVERSION >/dev/null 2>&1
	sleep 2
	PID="$(pgrep -x $CDVERSION)"
	if [[ ! -n $PID ]] ; then
		echo "$CAMNAME : beendet"
	else
		pkill -9 $CDVERSION
		echo "$CAMNAME : gekillt"
	fi
}

case "$1" in
	start)
		PID="$(ps auxw | grep -v grep | grep -v $0 | grep $CDVERSION | 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 $CDVERSION | awk {'print $2'})"
		if [[ ! -z $PID ]] ; then
			echo "$CAMNAME : ist bereits gestartet"
		else
			log_cam
			echo "$CAMNAME : wurde mit ConsolenLog gestartet."
		fi
	;;
	stop)
		PID="$(ps auxw | grep -v grep | grep -v $0 | grep $CDVERSION | 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/camd3-help.txt
	;;
	log)
		clear
		echo "$CAMNAME Log - Abbrechen mit [Strg]+[C]                          $(date +"%d.%m.%Y %H:%M")"
		echo "==============================================================================="
		echo ""
		if [ -f $CDLOGFILE ] ; then
			tail -f $CDLOGFILE
		else
			echo "Keine Logdatei vorhanden!"
		fi
	;;
	[sS][oO][fF][tT]*)
		$CAMBINS/script/camd3-softkey.sh
	;;
	*)
		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;31mcamd3\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 -e "\033[1;37m  Softcam Keys aktualisieren\033[0m                  \033[0;37msoftkey\033[0m"
		echo ""
		echo "==============================================================================="
		echo ""
		exit 1
	;;
esac

exit 0

