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

. /var/emu/script/functions.sh
readipccfg
[ -z $OSNAME ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler !\033[0m" && exit 1
[ -z $OSVERSION ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler !\033[0m" && exit 1
[ -z $OSBIN ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler !\033[0m" && exit 1
[ -z $OSTMP ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler !\033[0m" && exit 1
[ -z $OSCFG ] && clear && echo -e "\033[1;31mVariablen Konfigurationsfehler !\033[0m" && exit 1
[ -z $CAMLOGS ] && 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="$OSNAME"

if [ ! -f "$OSBIN" ]; 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

function Get_OSCAMversion () {
	VERFILE="/tmp/.oscam/oscam.version"
	[ -n "$OSTMP" ] && VERFILE="$OSTMP/oscam.version"
	OSCAMversion=$(sed -ne '/Version:.*[0-9]\.[0-9][0-9].*/p' $VERFILE 2>/dev/null|awk '{print $2,$3,$4}')
	if [ -z "$OSCAMversion" ]; then
		OSCAMversion=$(grep -i "Rev." $VERFILE|sed 's/Version://g'|awk '{print $1,$2,$3}')
	fi
	echo "$OSCAMversion" > /tmp/.oscam.version
}

# OSCam - Start
start_cam () {
	_error=0
	if [ -n "$OSTMP" ]; then
		$OSBIN -b -c $CAMCONFIGS -t $OSTMP
		[ $? -ne "0" ] && _error=1
	else
		$OSBIN -b -c $CAMCONFIGS
		[ $? -ne "0" ] && _error=1
	fi
	if [ $_error -ne "0" ]; then
		echo "Fehler beim starten von $CAMNAME!"
	else
		sleep 0.5
		echo "$CAMNAME : gestartet"
		Get_OSCAMversion
	fi
}

# OSCam - Stop
stop_cam () {
	pkill $OSVERSION
	sleep 2
	PID="$(pgrep -x $OSVERSION)"
	if [[ ! -n $PID ]] ; then
		echo "$CAMNAME : beendet"
	else
		pkill -9 $OSVERSION
		echo "$CAMNAME : gekillt"
	fi
}

# Befehlsparameter
case "$1" in
	start)
		PID="$(pgrep -x $OSVERSION)"
		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
					echo "Cron  : gestartet"
					/etc/init.d/cron start > /dev/null
				fi
			fi
		fi
	;;
	stop)
		PID="$(pgrep -x $OSVERSION)"
		if [[ ! -z $PID ]] ; then
			stop_cam
			if [[ $CRON == 1 ]]; then
				PID="$(pgrep -x cron)"
				if [[ ! -z $PID ]] ; then
					echo "Cron  : beendet"
					/etc/init.d/cron stop > /dev/null
				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
	;;
	conf)
		if test -f $OSCFG
		then
			clear
			echo -e "$CAMNAME-Server: \033[1;37mKonfiguration\033[0m                                   $(date +"%d.%m.%Y %H:%M")"
			echo "==============================================================================="
			echo ""
			echo "Lade $OSCFG zum editieren.."
			sleep 2
			$useEDITOR -R $OSCFG
			clear
		else
			echo -e "\033[1;31mKeine Konfiguration vorhanden, erstelle diese unter $OSCFG!\033[0m"
		fi
	;;
	server)
		if test -f $OSSERVER
		then
			clear
			echo -e "$CAMNAME-Server: \033[1;37mKonfiguration\033[0m                                   $(date +"%d.%m.%Y %H:%M")"
			echo "==============================================================================="
			echo ""
			echo "Lade $OSSERVER zum editieren.."
			sleep 2
			$useEDITOR -R $OSSERVER
			clear
		else
			echo -e "\033[1;31mKeine Konfiguration vorhanden, erstelle diese unter $OSSERVER!\033[0m"
		fi
	;;
	user)
		if test -f $OSUSER
		then
			clear
			echo -e "$CAMNAME-Server: \033[1;37mKonfiguration\033[0m                                   $(date +"%d.%m.%Y %H:%M")"
			echo "==============================================================================="
			echo ""
			echo "Lade $OSUSER zum editieren.."
			sleep 1
			$useEDITOR -R $OSUSER
			echo ""
			echo -en "\033[1;33mUserDB [N]euladen / []Beenden: \033[0m"
			read x
			case $x in
				[Nn])
					PID="$(pgrep -x $OSVERSION)"
					kill -1 $PID
					echo -en "\033[1;34mUserDB wurde neu geladen\033[0m"
				;;
				*)
				;;
			esac
		else
			echo -e "\033[1;31mKeine Konfiguration vorhanden, erstelle diese unter $OSUSER!\033[0m"
		fi
		echo ""
		echo "-------------------------------------------------------------------------------"
		echo ""
	;;
	services)
		$CAMBINS/script/oscam-services.sh
	;;
	srvid)
		$CAMBINS/script/oscam-srvid.sh
	;;
	help)
		clear
		less $CAMBINS/script/oscam-help.txt
	;;
	version)
		$CAMBINS/script/oscam-version.sh
	;;
	compile)
		$CAMBINS/script/oscam-compile.sh $2 $3
	;;
	prev)
		if [ -f  $OSBIN.prev ] ; then
			echo
			echo "Vorherige OScam-Binary wird wiederhergestellt"
			mv $OSBIN.prev $OSBIN
			sleep 3
			echo ""
			echo "$CAMNAME : restart"
			stop_cam
			sleep 3
			start_cam && echo ""
		else
			echo "" && echo -en "\033[1;33mKeine alte Binary vorhanden.\033[0m"  && echo "" && echo ""
		fi
	;;
	log)
		clear
		echo -e "$CAMNAME-Server: \033[1;37mLog\033[0m - Abbrechen mit [Strg]+[C]                  $(date +"%d.%m.%Y %H:%M")"
		echo "==============================================================================="
		echo ""
                if [ -f  $OSLOGFILE ] ; then
			tail -f $OSLOGFILE
		else
			echo " Keine Logdatei vorhanden." && echo ""
		fi
	;;
	ssl)
		$CAMBINS/script/oscam-ssl.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;31moscam\033[0m"
		echo ""
		echo -e "\033[1;37m  Hilfe zu diesen Befehlen\033[0m                    \033[1;31mhelp\033[0m"
		echo -e "\033[1;37m  Version anzeigen/installieren\033[0m               \033[0;37mversion\033[0m"
		echo -e "\033[1;37m  Start, Stop, Restart\033[0m                        \033[0;37mstart | stop | restart\033[0m"
		echo -e "\033[1;37m  Konfiguration\033[0m                               \033[0;37mconf | server | user\033[0m"
		echo -e "\033[1;37m  Services, Srvid aktualisieren\033[0m               \033[0;37mservices | srvid\033[0m"
		echo -e "\033[1;37m  Log: Was laeuft\033[0m                             \033[0;37mlog\033[0m"
		echo -e "\033[1;37m  OScam kompilieren (help fuer mehr)\033[0m          \033[0;37mcompile\033[0m"
		echo -e "\033[1;37m  Zuletzt kompilierte Binary wiederherstellen\033[0m \033[0;37mprev\033[0m"
		echo -e "\033[1;37m  OScam SSL Zertifikat generieren\033[0m             \033[0;37mssl\033[0m"
		echo ""
		echo "==============================================================================="
		echo ""
		exit 1
	;;
esac

exit 0
