#!/bin/bash

#############################################################################
# plugin.sh v0.1.2
# by nogood (www.easy-vdr.de)
#
# kann mit folgenden Parameter aufgerufen werden:
# ---------------------------------------------------------------------------
# plugin.sh easyinfo
#   ruft das Script easyInfo auf und gibt das Ergebnis auf StdOut aus
# ---------------------------------------------------------------------------
# plugin.sh del /pfad/zu/datei
#   löscht die angegebene Datei und erstellst sie neu
# ---------------------------------------------------------------------------
# plugin.sh chk pluginname
#   prüft ob ein Pluginfile existiert, gibt true oder false zurück
# ---------------------------------------------------------------------------
# plugin.sh on pluginname
#   Aktiviert das Plugin in der vdr-setup.xml und sysconfig
# ---------------------------------------------------------------------------
# plugin.sh off pluginname
#   Deaktiviert das Plugin in der vdr-setup.xml und sysconfig
# ---------------------------------------------------------------------------
# plugin.sh lst
#   gibt eine Liste aller verfügbaren Plugins zurück
# ---------------------------------------------------------------------------
# plugin.sh ver
#   gibt die Aktuell installierte easyVDR-Version zurück
# ---------------------------------------------------------------------------
# plugin.sh upd
#   Prüft auf Updates und gibt sie aus
# ---------------------------------------------------------------------------
# plugin.sh startvdr
#	Startet den VDR
# ---------------------------------------------------------------------------
# plugin.sh stopvdr
#	Stoppt den VDR
# ---------------------------------------------------------------------------

#############################################################################
# Includes
#

. /usr/bin/easyvdr/functions/easyvdr_var_names
. /usr/bin/easyvdr/functions/easyvdr_functions
. /etc/vdr/static.conf

#############################################################################
# Variablen
#

# Pfad zu easyInfo
EasyInfoShScript="/var/www/scripts/easyinfo.sh"

# Ausgabedatei die easyInfo erstellt
EasyInfoTxtFile="/tmp/easyinfo.txt"

# URL zu den Updates
URL="http://ftp.gwdg.de/pub/linux/easyvdr/$EASYVDRBASEVERS/online-updates"

# Temporäres Arbeitsverzeichnis
TEMPDIR="/tmp/easyvdrupdateversion"

#############################################################################
# Funktionen
#

# VDR API-Ermitteln
function getApi {
  API=$(/usr/vdr/vdr -V | cut -d" " -f2 | tr -d "()" | cut -d "/" -f2)
}

# Aktuell Installierte Version ermitteln
function getVersion {
    EASYVDRSUBVERS="${EASYVDRSUBVERS##*.}"
    if [ $EASYVDRSUBVERS == "0" ] ; then
        echo $EASYVDRBASEVERS.$EASYVDRSUBVERS
    else
        echo $EASYVDRBASEVERS."${EASYVDRSUBVERS##*0}"
    fi
}

# Plugins auflisten
function getPlugins {
    getApi
	cat $FolderAndFilenameForVDRSetupXML | grep "<plugin name" | grep -v 'protected="yes"' | sort | while read a; do
		a=${a#<plugin}
		a=${a%/>}
		PL=$(echo $a | awk -F\" {'print $2'})
           if [ -f $FolderAndFilenameForVDRPluginDir"/libvdr-"$PL".so."$API ] ; then
			echo $a
		fi
	done
}

# Plugin Deaktivieren
function PluginOff {
	DeactivatePlugin "$1"
	echo $(date '+%d.%m.%Y %H:%M')\;$1\;"deaktiviert" >> $2
}

# Plugin Aktivieren
function PluginOn() {
    ActivatePlugin "$1"
	echo $(date '+%d.%m.%Y %H:%M')\;$1\;"aktiviert" >> $2
}

# Prüfen ob Plugin vorhanden ist
function PluginExist() {
    getApi
	echo $FolderAndFilenameForVDRPluginDir"/libvdr-"$1".so."$API
	if [ -f $FolderAndFilenameForVDRPluginDir"/libvdr-"$1".so."$API ] ; then
		echo true
	else
		echo false
	fi
}

# Datei löschen
function DeleteFile() {
    if [ -f "$1" ] ; then
		rm $1
		touch $1
	fi
}

# easyInfo ausführen
function easyInfo {
    $EasyInfoShScript $EasyInfoTxtFile
	cat $EasyInfoTxtFile
}

# Auf Updates Prüfen
function checkUpdates {

	# Temporäres Arbeitsverzeichnis erstellen wenn nicht vorhanden	
	if [ -e ${TEMPDIR} ] ; then
        :
    else
        mkdir $TEMPDIR
    fi

    cd $TEMPDIR

    # Update MD5-File saugen
    wget -np -r -nd -N -A md5 $URL >/dev/null 2>&1

    VVERS=0

    for i in $(ls -1) ; do

        if [ -f ${i} ] ; then

            for z in $(cat $i | awk '{print $2}' | sort) ; do

				V="${z##*-}"
                V="${V%%.*}"

                if [ $V == "basic" ] ; then
                    :
                else
                    if [ $V -gt $VVERS ] ; then
                        VVERS=$V
                    fi
                fi
 
            done
        fi
    done

    echo $EASYVDRBASEVERS.$VVERS
    cd /
    rm -R $TEMPDIR
}

# VDR Starten
function startVdr {
	/usr/bin/startvdr >/dev/null && sleep 5
}

# VDR Stoppen
function stopVdr {
	/usr/bin/stopvdr >/dev/null && sleep 5
}


#############################################################################
# Sciptablauf
#

case $1 in

	easyinfo) # Aufruf von easyInfo
        easyInfo
	;;

	del) # Log Datei löschen
		DeleteFile $2
	;;

	chk) # Prüfen ob ein Plugin vorhanden ist 
        PluginExist $2
	;;

	on) # Plugin Aktivieren
		PluginOn $2 $3
	;;

	off) # Plugin Deaktivieren
        PluginOff $2 $3
	;;

	lst) # Plugins Auflisten
        getPlugins
	;;

    ver) # Installierte easyVDR-Version
        getVersion
    ;;

    upd) # Prüft auf Updates
        checkUpdates
    ;;

	startvdr) # VDR Starten
		startVdr
	;;

	stopvdr) # VDR Stoppen
		stopVdr
	;;

	*) # Ungültige eingabe
		echo "Falscher Parameter: $1"
		exit 1
	;;
	
esac