Dateien hochladen nach „Build“

This commit is contained in:
Stephan 2018-10-24 09:01:44 +00:00
parent b3b18e6e0e
commit 62eb93d70e
4 changed files with 1162 additions and 0 deletions

831
Build/edit.sh Normal file
View file

@ -0,0 +1,831 @@
#!/bin/bash
# edit.sh
if [[ "$page" == "edit-save" ]]; then
"$set_var" "$dir/app/etc/Konfiguration.txt" "WORKDIR" "$WORKDIR"
"$set_var" "$dir/app/etc/Konfiguration.txt" "DESTDIR" "$DESTDIR"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRkeydir" "$OTRkeydir"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRkeydeldir" "$OTRkeydeldir"
"$set_var" "$dir/app/etc/Konfiguration.txt" "decoderactiv" "$decoderactiv"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRuser" "$OTRuser"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRpw" "$OTRpw"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRcutactiv" "$OTRcutactiv"
"$set_var" "$dir/app/etc/Konfiguration.txt" "SMARTRENDERING" "$SMARTRENDERING"
"$set_var" "$dir/app/etc/Konfiguration.txt" "WaitOfCutlist" "$WaitOfCutlist"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRlocalcutlistdir" "$OTRlocalcutlistdir"
"$set_var" "$dir/app/etc/Konfiguration.txt" "FrameversatzAnfangCut" "$FrameversatzAnfangCut"
"$set_var" "$dir/app/etc/Konfiguration.txt" "FrameversatzEndeCut" "$FrameversatzEndeCut"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRrenameactiv" "$OTRrenameactiv"
"$set_var" "$dir/app/etc/Konfiguration.txt" "TVDBlang" "$TVDBlang"
"$set_var" "$dir/app/etc/Konfiguration.txt" "TVDB_APIKEY" "$TVDB_APIKEY"
"$set_var" "$dir/app/etc/Konfiguration.txt" "MOVIEDB_APIKEY" "$MOVIEDB_APIKEY"
"$set_var" "$dir/app/etc/Konfiguration.txt" "NameSyntax" "$NameSyntax"
"$set_var" "$dir/app/etc/Konfiguration.txt" "NameSyntaxSerientitel" "$NameSyntaxSerientitel"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRavi2mp4active" "$OTRavi2mp4active"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRaacqal" "$OTRaacqal"
"$set_var" "$dir/app/etc/Konfiguration.txt" "normalizeAudio" "$normalizeAudio"
"$set_var" "$dir/app/etc/Konfiguration.txt" "MP4BOX_DELAY" "$MP4BOX_DELAY"
"$set_var" "$dir/app/etc/Konfiguration.txt" "dsmtextnotify" "$dsmtextnotify"
"$set_var" "$dir/app/etc/Konfiguration.txt" "MessageTo" "$MessageTo"
"$set_var" "$dir/app/etc/Konfiguration.txt" "dsmbeepnotify" "$dsmbeepnotify"
"$set_var" "$dir/app/etc/Konfiguration.txt" "LOGlevel" "$LOGlevel"
"$set_var" "$dir/app/etc/Konfiguration.txt" "endgueltigloeschen" "$endgueltigloeschen"
"$set_var" "$dir/app/etc/Konfiguration.txt" "reindex" "$reindex"
"$set_var" "$dir/app/etc/Konfiguration.txt" "cutlistat_ID" "$cutlistat_ID"
"$set_var" "$dir/app/etc/Konfiguration.txt" "useallcutlistformat" "$useallcutlistformat"
# "$set_var" "$dir/app/etc/Konfiguration.txt" "customizedConfig" "1"
echo '<div class="Content_1Col_full">'
echo '<br /><div class="info"><br /><p class="center" style="color:#0086E5;font-weight:normal; ">Änderungen wurden gespeichert</p><br /></div>'
echo '<br /><p class="center"><button name="page" value="edit" class="blue_button">Weiter...</button></p><br />'
echo '</div><div class="clear"></div>'
fi
if [[ "$page" == "edit-import-query" ]] || [[ "$page" == "edit-import" ]]; then
# echo '<div class="Content_1Col_full">'
if [[ "$page" == "edit-import-query" ]]; then
echo '
<p class="center">
Sollen die aktuellen Einstellungen überschrieben werden (Datenbank bleibt erhalten)?<br /><br />
Um eine frühere Konfigurationsdatei zu importieren, lege zunächst in den <a href="index.cgi?page=edit" style="'$synotrred';">Einstellungen</a>
das Arbeitsverzeichnist fest. Die zu importierende Konfigurationsdatei muss den Namen "Konfiguration.txt"
haben und in das Arbeitsverzeichnis gelegt werden. Klicke dann auf weiter.<br /><br />
<a href="index.cgi?page=edit-import" class="blue_button">Weiter</a>&nbsp;&nbsp;&nbsp;<a href="index.cgi?page=edit" class="button">Abbrechen</a></p>' >> "$stop"
elif [[ "$page" == "edit-import" ]]; then
if [ ! -z "$WORKDIR" ] && [ -d "$WORKDIR" ]; then
# "$dir/importconfig.sh" "$WORKDIR"
# echo '<p class="center"><br><b>Konfiguration wurde importiert.</b></p>'
SOURCECONFIG="${WORKDIR%/}/Konfiguration.txt"
if [ -f "$SOURCECONFIG" ] ; then
source $SOURCECONFIG
"$set_var" "$dir/app/etc/Konfiguration.txt" "WORKDIR" "$WORKDIR"
"$set_var" "$dir/app/etc/Konfiguration.txt" "DESTDIR" "$DESTDIR"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRkeydir" "$OTRkeydir"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRkeydeldir" "$OTRkeydeldir"
"$set_var" "$dir/app/etc/Konfiguration.txt" "decoderactiv" "$decoderactiv"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRuser" "$OTRuser"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRpw" "$OTRpw"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRcutactiv" "$OTRcutactiv"
"$set_var" "$dir/app/etc/Konfiguration.txt" "SMARTRENDERING" "$SMARTRENDERING"
"$set_var" "$dir/app/etc/Konfiguration.txt" "WaitOfCutlist" "$WaitOfCutlist"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRlocalcutlistdir" "$OTRlocalcutlistdir"
"$set_var" "$dir/app/etc/Konfiguration.txt" "FrameversatzAnfangCut" "$FrameversatzAnfangCut"
"$set_var" "$dir/app/etc/Konfiguration.txt" "FrameversatzEndeCut" "$FrameversatzEndeCut"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRrenameactiv" "$OTRrenameactiv"
"$set_var" "$dir/app/etc/Konfiguration.txt" "TVDBlang" "$TVDBlang"
"$set_var" "$dir/app/etc/Konfiguration.txt" "TVDB_APIKEY" "$TVDB_APIKEY"
"$set_var" "$dir/app/etc/Konfiguration.txt" "MOVIEDB_APIKEY" "$MOVIEDB_APIKEY"
"$set_var" "$dir/app/etc/Konfiguration.txt" "NameSyntax" "$NameSyntax"
"$set_var" "$dir/app/etc/Konfiguration.txt" "NameSyntaxSerientitel" "$NameSyntaxSerientitel"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRavi2mp4active" "$OTRavi2mp4active"
"$set_var" "$dir/app/etc/Konfiguration.txt" "OTRaacqal" "$OTRaacqal"
"$set_var" "$dir/app/etc/Konfiguration.txt" "normalizeAudio" "$normalizeAudio"
"$set_var" "$dir/app/etc/Konfiguration.txt" "MP4BOX_DELAY" "$MP4BOX_DELAY"
"$set_var" "$dir/app/etc/Konfiguration.txt" "dsmtextnotify" "$dsmtextnotify"
"$set_var" "$dir/app/etc/Konfiguration.txt" "MessageTo" "$MessageTo"
"$set_var" "$dir/app/etc/Konfiguration.txt" "dsmbeepnotify" "$dsmbeepnotify"
"$set_var" "$dir/app/etc/Konfiguration.txt" "LOGlevel" "$LOGlevel"
"$set_var" "$dir/app/etc/Konfiguration.txt" "endgueltigloeschen" "$endgueltigloeschen"
"$set_var" "$dir/app/etc/Konfiguration.txt" "reindex" "$reindex"
"$set_var" "$dir/app/etc/Konfiguration.txt" "cutlistat_ID" "$cutlistat_ID"
"$set_var" "$dir/app/etc/Konfiguration.txt" "useallcutlistformat" "$useallcutlistformat"
# neue Konfiguration laden:
source $dir/app/etc/Konfiguration.txt
echo '<br /><p class="center">Die Konfiguration wurde importiert</p><br />' >> "$stop"
else
echo '<p class="center">Die Quellkonfiguration konnte nicht im angegebenen Verzeichnis gefunden werden!</p>' >> "$stop"
fi
else
echo '<p class="center"><br><b>Konfiguration konnte nicht importiert werden,
<br>da kein korrektes Arbeitsverzeichnis in den Einstellungen definiert wurde!</b></p>' >> "$stop"
fi
echo '<br /><p class="center"><button name="page" value="edit" class="blue_button">Fertig ...</button></p><br />
<div class="clear"></div>' >> "$stop"
fi
fi
if [[ "$page" == "edit-export" ]]; then
echo '<div class="Content_1Col_full">'
if [ ! -z "$WORKDIR" ] ; then
cp "$dir/app/etc/Konfiguration.txt" "$WORKDIR/Konfiguration.txt"
cp "$dir/app/etc/synOTR.sqlite" "$WORKDIR/synOTR.sqlite"
echo '<br /><div class="info"><br /><p class="center" style="color:#0086E5;font-weight:normal; ">Konfigurationsdatei und die synOTR-Datenbank<br>wurde in das Arbeitsverzeichnis gesichert.</p><br /></div>'
else
echo '<br /><div class="warning"><br /><p class="center">Konfigurationsdatei und die synOTR-Datenbank<br>konnte nicht in das Arbeitsverzeichnis gesichert werden,
<br>da kein Arbeitsverzeichnis in den Einstellungen definiert wurde!</p><br /></div>'
fi
echo '<br /><p class="center"><button name="page" value="edit" class="blue_button">Weiter...</button></p><br />'
echo '
</div>
<div class="clear"></div>'
fi
if [[ "$page" == "edit-restore-query" ]] || [[ "$page" == "edit-restore" ]]; then
if [[ "$page" == "edit-restore-query" ]]; then
echo '
<p class="center" style="'$synotrred';">
Sollen die Werkseinstellungen geladen werden (Datenbank bleibt erhalten)?<br /><br /><br />
<a href="index.cgi?page=edit-restore" class="red_button">Ja</a>&nbsp;&nbsp;&nbsp;<a href="index.cgi?page=edit" class="button">Nein</a></p>' >> "$stop"
elif [[ "$page" == "edit-restore" ]]; then
if [ -f "$dir/app/etc/Konfiguration.txt" ]; then
rm "$dir/app/etc/Konfiguration.txt"
cp "$dir/usersettings/Konfiguration_org.txt" "$dir/app/etc/Konfiguration.txt"
chmod 755 "$dir/app/etc/Konfiguration.txt"
fi
echo '<p class="center" style="'$green';"><b>Werkseinstellungen wurden wiederhergestellt</b></p>
<br /><p class="center"><button name="page" value="edit" class="blue_button">Weiter...</button></p><br />' >> "$stop"
fi
fi
if [[ "$page" == "edit" ]]; then
# Dateiinhalt einlesen für Variablenverwertung
if [ -f "$dir/app/etc/Konfiguration.txt" ]; then
source "$dir/app/etc/Konfiguration.txt"
fi
echo '
<div id="Content_1Col">
<div class="Content_1Col_full">
<div class="title">
synOTR Einstellungen
</div>
Trage hier deine Einstellungen ein und passe die Pfade an.
<br>Hilfe für die einzelnen Felder erhältst du über das blaue Info-Symbol am rechten Rand.
<br>
<br>Achte unbedingt darauf, die kompletten Pfade inkl. Volume (z.B. <code>/volume1/…</code>) einzutragen.
Das sicherste ist, wenn du in der Filestation den gewünschten Ordner suchst und du dir über Rechtsklick die Eigenschaften anzeigen lässt.
In diesem Dialog kannst du dir den korrekten Pfad kopieren.
<br><br>'
# -> Abschnitt Allgemein
# Aufklappbar:
echo '<fieldset>
<hr style="border-style: dashed; size: 1px;">
<br />
<details><p>
<summary>
<span class="detailsitem">Allgemein</span>
</summary></p>
<p>' #ab hier steht der Text, der auf- und zugeklappt werden soll.
# <span style="color:#FFFFFF;">_</span>
# <div id="ExpFieldset"> </div>
# WORKDIR
echo '
<p>
<label>Arbeitsverzeichnis</label>'
if [ -n "$WORKDIR" ]; then
echo '<input type="text" name="WORKDIR" value="'$WORKDIR'" />'
else
echo '<input type="text" name="WORKDIR" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Das Arbeitsverzeichnis ist zunächst einmal optional, ist aber sehr zu empfehlen. Z.B. werden bei aktivierter MP4-Konvertierung alle avi-Dateien im Arbeitsverzeichnis konvertiert. Setzt man kein spezielles Arbeitsverzeichnis ein, so ist das Zielverzeichnis das Arbeitsverzeichnis und alle darin enthaltenen avi-Dateien werden konviertiert!<br><br>(wird ggf. erstellt)</span></a>
</p>'
# DESTDIR
echo '
<p>
<label>Zielverzeichnis</label>'
if [ -n "$DESTDIR" ]; then
echo '<input type="text" name="DESTDIR" value="'$DESTDIR'" />'
else
echo '<input type="text" name="DESTDIR" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Ausgabeverzeichnis der fertigen Filme</span></a>
</p>'
# OTRkeydir
echo '
<p>
<label>Quellverzeichnis (.otrkeys)</label>'
if [ -n "$OTRkeydir" ]; then
echo '<input type="text" name="OTRkeydir" value="'$OTRkeydir'" />'
else
echo '<input type="text" name="OTRkeydir" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Verzeichnis mit den OTRKEY-Dateien</span></a>
</p>'
# OTRkeydeldir
echo '
<p>
<label>Papierkorb</label>'
if [ -n "$OTRkeydeldir" ]; then
echo '<input type="text" name="OTRkeydeldir" value="'$OTRkeydeldir'" />'
else
echo '<input type="text" name="OTRkeydeldir" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Löschverzeichnis der Quelldateien<br><br>! ! ! ACHTUNG ! ! !<br>gleichnamige vorhandene Dateien in dem Verzeichnis werden überschrieben</span></a>
</p>'
# endgueltigloeschen
echo '
<p>
<label>Dateien endgültig löschen</label>
<select name="endgueltigloeschen">'
if [[ "$endgueltigloeschen" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$endgueltigloeschen" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>ein => alle Quelldateien endgültig löschen<br>aus => Papierkorb verwenden (Pfad siehe oben)</span></a>
</p>'
echo '
</details>
</fieldset>
</p>'
# -> Abschnitt Decoder:
echo '<fieldset>
<hr style="border-style: dashed; size: 1px;">
<br />
<details><p>
<summary>
<span class="detailsitem">Decodieren</span>
</summary></p>
<p>'
# decoderactiv
echo '
<p>
<label>soll decodiert werden?</label>
<select name="decoderactiv">'
if [[ "$decoderactiv" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$decoderactiv" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>ein => decodieren aktiv<br>aus => decodieren inaktiv</span></a>
</p>'
# OTRuser
echo '
<p>
<label>OTR Benutzername</label>'
if [ -n "$OTRuser" ]; then
echo '<input type="text" name="OTRuser" value="'$OTRuser'" />'
else
echo '<input type="text" name="OTRuser" value="" />'
fi
echo '
</p>'
# OTRpw
echo '
<p>
<label>OTR Kennwort</label>'
if [ -n "$OTRpw" ]; then
echo '<input type="text" name="OTRpw" value="'$OTRpw'" />'
else
echo '<input type="text" name="OTRpw" value="" />'
fi
echo '
</p>
</fieldset>
</p>
</details>'
# -> Abschnitt .avi's schneiden
echo '<fieldset>
<hr style="border-style: dashed; size: 1px;">
<br />
<details><p>
<summary>
<span class="detailsitem">Filme schneiden</span>
</summary></p>
<p>'
# OTRcutactiv
echo '
<p>
<label>automatisch schneiden?</label>
<select name="OTRcutactiv">'
if [[ "$OTRcutactiv" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$OTRcutactiv" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>ein => schneiden aktiv<br>aus => schneiden inaktiv</span></a>
</p>'
# SMARTRENDERING
echo '
<p>
<label>Smartrendering</label>
<select name="SMARTRENDERING">'
if [[ "$SMARTRENDERING" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$SMARTRENDERING" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Für das Schneiden an Keyframes wird avisplit/avimerge aus Transcode verwendet. Diese Art geht sehr schnell (fast wie das Kopieren der Dateien auf der Festplatte). Der Nachteil ist, dass die Schnittübergänge um mehrere Sekunden ungenau sind und nur avi-Quelldateien scheidbar sind.
<br><br>Für das framegenaue Schneiden wird das Programm avcut verwendet. Avcut schneidet im Gegensatz zu avisplit framegenau, allerdings ergeben sich daraus erhöhte Anforderungen an die CPU und RAM (min. installiert: 1GB für HD-Aufnahmen und 500MB für HQ-Aufnahmen). Framegenaue Schnitte sind zeitintensiv.
<br><br>ACHTUNG: mit avcut geschnittene Filme werden derzeit sehr asynchron. Die Option der Konvertierung zu MP4 löst das Problem!</span></a>
</p>'
# WaitOfCutlist
echo '
<p>
<label>auf Cutlist warten</label>
<select name="WaitOfCutlist">'
if [[ "$WaitOfCutlist" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$WaitOfCutlist" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>ein => Film wartet so lange im Arbeitsverzeichnis, bis eine passende Cutlist verfügbar ist<br>aus => der Film wird ohne warten weiterverarbeitet</span></a>
</p>'
# alternativeCutlist
# useallcutlistformat
echo '
<p>
<label>Cutlist für andere Formate nutzen</label>
<select name="useallcutlistformat">'
if [[ "$useallcutlistformat" == "0" ]]; then
echo '<option value="0" selected>nur für Originalformat</option>'
else
echo '<option value="0">nur für Originalformat</option>'
fi
if [[ "$useallcutlistformat" == "1" ]]; then
echo '<option value="1" selected>auch für Alternativformate</option>'
else
echo '<option value="1">auch für Alternativformate</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Es können auch Cutlits für andere Qualitäten gefunden werden (z.B. wird für einen HD-Film, für den es keine Cutlist gibt, die entsprechende Cutlist des HQ-Formats verwendet).<br><br>
Es können derzeit nur alternative Cutlits mit zeitbasierten Schnitten verwendet werden. Die Schnitte können allerdings ungenau werden.
Daher ist eine objektive Bewertung schlecht möglich weshalb die Cuts nicht über die persönliche Benutzer-ID geladen werden
- sie erscheinen daher auch nicht im Benutzerkonto von cutlist.at</span></a>
</p>'
# OTRlocalcutlistdir
echo '
<p>
<label>Ordner für lokale Cutlist (optional)</label>'
if [ -n "$OTRlocalcutlistdir" ]; then
echo '<input type="text" name="OTRlocalcutlistdir" value="'$OTRlocalcutlistdir'" />'
else
echo '<input type="text" name="OTRlocalcutlistdir" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>optionaler Ordner für lokale Cutlists<br>(lokale Cutlists müssen generell den kompletten Dateinamen des Films mit zusätzlicher Dateiendung .cutlist haben)<br>Standardmäßig werden lokalen Cutlist im Download- sowie im Dekodierordner gesucht und ungeprüft (d.h. auch wenn Error wie z.B. missing Ende enthalten sind) verwendet.<br><br>
=> Cutlists in diesem Pfad werden geprüft und müssen daher direkt zum Film passen und dürfen keine Error definiert haben.<br><br>Bei Nichtnutzung leer lassen</span></a>
</p>'
# OTRcutlistserver-ID
echo '
<p>
<label>Benutzer-ID von cutlist.at</label>'
if [ -n "$cutlistat_ID" ]; then
echo '<input type="text" name="cutlistat_ID" value="'$cutlistat_ID'" />'
else
echo '<input type="text" name="cutlistat_ID" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Bitte registriert euch bei Cutlist.at und tragt hier die 64 Zeichen lange ID ein (ohne http://cutlist.at/ und ohne abschließenden Slash).
<br>Eure geladenen Cutlists werden in eurem persönlichen Bereich auf cutlist.at aufgelistet. Bitte bewertet sie dort.<br><br>Bei Nichtnutzung leer lassen</span></a>
</p>'
# FrameversatzAnfangCut
echo '
<p>
<label>Frameversatz Anfang-Cut</label>'
if [ -n "$FrameversatzAnfangCut" ]; then
echo '<input type="text" name="FrameversatzAnfangCut" value="'$FrameversatzAnfangCut'" />'
else
echo '<input type="text" name="FrameversatzAnfangCut" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Frameversatz, um Cuts manuell zu justieren (positive Werte verschieben jeden Cut nach hinten, negative nach vorn)<br><br>=> dieser Wert verschiebt den <b>Beginn</b> der gewünschten Filmteile beim framegenauen Schneiden</span></a>
</p>'
# FrameversatzEndeCut
echo '
<p>
<label>Frameversatz Ende-Cut</label>'
if [ -n "$FrameversatzEndeCut" ]; then
echo '<input type="text" name="FrameversatzEndeCut" value="'$FrameversatzEndeCut'" />'
else
echo '<input type="text" name="FrameversatzEndeCut" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Frameversatz, um Cuts manuell zu justieren (positive Werte verschieben jeden Cut nach hinten, negative nach vorn)<br><br>=> dieser Wert verschiebt das <b>Ende</b> der gewünschten Filmteile beim framegenauen Schneiden</span></a>
</p>
</fieldset>
</p>
</details>'
# -> Abschnitt .avi's / .mp4's umbenennen
echo '<fieldset>
<hr style="border-style: dashed; size: 1px;">
<br />
<details><p>
<summary>
<span class="detailsitem">Filme umbenennen</span>
</summary></p>
<p>
<div class="info">
folgende Parameter stehen f&uuml;r die Umbenennung zur Verf&uuml;gung:<br /><br />
<u><b>Parameter aus Dateinamen:</b></u><br />- <span style="color:#BD0010;">&sect;dur</span> (Filml&auml;nge [EPG] - Filml&auml;nge laut EPG / inkl. Werbebl&ouml;cke)<br />- <span style="color:#BD0010;">&sect;tit</span> (Titel)<br />- <span style="color:#BD0010;">&sect;ylong</span> (Jahr [4stellig])<br />- <span style="color:#BD0010;">&sect;yshort</span> (Jahr [2stellig])<br />- <span style="color:#BD0010;">&sect;mon</span> (Monat)<br />- <span style="color:#BD0010;">&sect;day</span> (Tag)<br />- <span style="color:#BD0010;">&sect;hou</span> (Stunde)<br />- <span style="color:#BD0010;">&sect;min</span> (Minute)<br />- <span style="color:#BD0010;">&sect;cha</span> (Sender)<br />- <span style="color:#BD0010;">&sect;qua</span> (Qualtit&auml;t / Format)<br /><br />
<u><b>Parameter f&uuml;r Serientitel:</b></u><br />- <span style="color:#BD0010;">&sect;sertit</span> (Serientitel)<br />- <span style="color:#BD0010;">&sect;epitit</span> (Episodentitel)<br />- <span style="color:#BD0010;">&sect;sta</span> (Staffel [2stellig])<br />- <span style="color:#BD0010;">&sect;epi</span> (Episode [2stellig])<br /><br />
<u><b>technische Parameter:</b></u><br />- <span style="color:#BD0010;">&sect;fps</span> (Framerate)<br />- <span style="color:#BD0010;">&sect;redur</span> (Filml&auml;nge [real])<br />- <span style="color:#BD0010;">&sect;height</span> (Aufl&ouml;sung H&ouml;he)<br />- <span style="color:#BD0010;">&sect;width</span> (Aufl&ouml;sung Breite)<br />- <span style="color:#BD0010;">&sect;asra</span> (Seitenverh&auml;ltnis)<br />- <span style="color:#BD0010;">&sect;acod</span> (Audiocodec)<br />- <span style="color:#BD0010;">&sect;vcod</span> (Videocodec)<br />- <span style="color:#BD0010;">&sect;ac01</span> (AC3 vorhanden - Tonspur in AC3 ja ==> " AC3" sonst ==> "")</p>
</div><br />'
# OTRrenameactiv
echo '
<p>
<label>automatisch umbenennen?</label>
<select name="OTRrenameactiv">'
if [[ "$OTRrenameactiv" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$OTRrenameactiv" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>ein => umbenennen aktiv<br>aus => umbenennen inaktiv</span></a>
</p>'
# TVDBlang
echo '
<p>
<label>TVDB Sprachcode</label>'
if [ -n "$TVDBlang" ]; then
echo '<input type="text" name="TVDBlang" value="'$TVDBlang'" />'
else
echo '<input type="text" name="TVDBlang" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Sprache (Ländercode), in welcher nach Serien auf theTVDB.com gesucht werden soll</span></a>
</p>'
# TVDB_APIKEY
echo '
<p>
<label>eigener TVDB APIKEY (optional)</label>'
if [ -n "$TVDB_APIKEY" ]; then
echo '<input type="text" name="TVDB_APIKEY" value="'$TVDB_APIKEY'" />'
else
echo '<input type="text" name="TVDB_APIKEY" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Falls du einen eigenen API-Key von thetvdb.com nutzen möchtest, kannst du ihn hier hinterlegen</span></a>
</p>'
# MOVIEDB_APIKEY
# echo '
# <p>
# <label>eigener MOVIEDB APIKEY (optional)</label>'
# if [ -n "$MOVIEDB_APIKEY" ]; then
# echo '<input type="text" name="MOVIEDB_APIKEY" value="'$MOVIEDB_APIKEY'" />'
# else
# echo '<input type="text" name="MOVIEDB_APIKEY" value="" />'
# fi
# echo '
# <a class="helpbox" href="#HELP"><img src="images/icon_information_mini@geimist.svg" height="25" width="25"/><span>Falls du einen eigenen API-Key von moviedb.com nutzen möchtest, kannst du ihn hier hinterlegen</span></a>
# </p>'
# NameSyntax
echo '
<p>
<label>Name-Syntax</label>'
if [ -n "$NameSyntax" ]; then
echo '<input type="text" name="NameSyntax" value="'$NameSyntax'" />'
else
echo '<input type="text" name="NameSyntax" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>"Name-Syntax" beschreibt den zukünftigen Dateinamen indem du die verfügbaren Parameter als Platzhalter wie gewünscht zusammenstellst. Des weiteren kannst du beliebigen Text hinzufügen (Sonderzeichen können zu unvorhergesehen Verhalten führen und sollten möglichst vermieden werden)
<br><br>Ein Beispiel:
<br>aus<br>
<i>"Die_Sendung_14.11.21_22-40_orf3_30_TVOON_DE.mpg.HQ.avi"</i>
<br>wird mit der Syntax<br>
<i>"<b>§tit</b> [<b>§ylong</b>-<b>§mon</b>-<b>§day</b> <b>§hou</b>-<b>§min</b> <b>§cha</b> <b>§height</b>p <b>§redur</b>min <b>§ac01</b>] autocut"</i>
<br>der Zieldateiname<br>
<i>"Die Sendung [2014-11-21 22-40 ORF3 576p 24min] autocut.avi"</i><br>
<br>Standardvorgabe ist videostationkonform
<br>Info VideoStation: https://www.synology.com/de-de/knowledgebase/DSM/help/VideoStation/category
<br>Info Plex: https://forums.plex.tv/discussion/135388/anleitung-deutsche-filmtitel-und-bessere-beschreibung-2
</span></a></p>'
# NameSyntaxSerientitel
echo '
<p>
<label>Name-Syntax für Serientitel</label>'
if [ -n "$NameSyntaxSerientitel" ]; then
echo '<input type="text" name="NameSyntaxSerientitel" value="'$NameSyntaxSerientitel'" />'
else
echo '<input type="text" name="NameSyntaxSerientitel" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>gleicher Aufbau wie "Name-Syntax".<br>Wird eine Serie erkannt, so wird der Titel (§tit) durch die hier eingetragene Syntax ersetzt.</span></a>
</p>
</fieldset>
</p>
</details>'
# -> Abschnitt .avi's in native MP4's (MAC OS tauglich) umwandeln
echo '<fieldset>
<hr style="border-style: dashed; size: 1px;">
<br />
<details><p>
<summary>
<span class="detailsitem">AVI-Filme in native MP4-Filme (macOS tauglich) umwandeln</span>
</summary></p>
<p>'
# OTRavi2mp4active
echo '
<p>
<label>soll nach MP4 konvertiert werden?</label>
<select name="OTRavi2mp4active">'
if [[ "$OTRavi2mp4active" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$OTRavi2mp4active" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>ein => konvertieren aktiv<br>aus => konvertieren inaktiv</span></a>
</p>'
# OTRaacqal
echo '
<p>
<label>Bitrate der AAC-Tonspur (kBit/s)</label>'
if [ -n "$OTRaacqal" ]; then
echo '<input type="text" name="OTRaacqal" value="'$OTRaacqal'" />'
else
echo '<input type="text" name="OTRaacqal" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Ziel-Bitrate der aac-Audiospur (80k also 80 kbit/s)<br>AC3 bleibt unverändert</span></a>
</p>'
# normalizeAudio
echo '
<p>
<label>Audiospur normalisieren</label>
<select name="normalizeAudio">'
if [[ "$normalizeAudio" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$normalizeAudio" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Normalisierung der Audiospur (ja / nein)<br>nur in Verbindung mit avi2mp4-Konvertierung bei mp3-Quellspur</span></a>
</p>'
# MP4BOX_DELAY
echo '
<p>
<label>manueller Tonspurversatz (in ms)</label>'
if [ -n "$MP4BOX_DELAY" ]; then
echo '<input type="text" name="MP4BOX_DELAY" value="'$MP4BOX_DELAY'" />'
else
echo '<input type="text" name="MP4BOX_DELAY" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>in Millisekunden<br>Feinabstimmung für den Audio-Video-Sync<br>Positive Werte verzögern den Ton; negative Werte verzögern das Bild</span></a>
</p>
</fieldset>
</p>
</details>'
# -> Abschnitt DSM-Benachrichtigung und sonstige Einstellungen
echo '<fieldset>
<hr style="border-style: dashed; size: 1px;">
<br />
<details><p>
<summary>
<span class="detailsitem">DSM-Benachrichtigung und sonstige Einstellungen</span>
</summary></p>
<p>'
# dsmtextnotify
echo '
<p>
<label>Systembenachrichtigung (Text)</label>
<select name="dsmtextnotify">'
if [[ "$dsmtextnotify" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$dsmtextnotify" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>ein => Benachrichtigung per Text aktiv im Benachrichtigungszentrum<br>aus => keine Textbenachrichtigung</span></a>
</p>'
# MessageTo
echo '
<p>
<label>Benachrichtigung an User</label>'
if [ -n "$MessageTo" ]; then
echo '<input type="text" name="MessageTo" value="'$MessageTo'" />'
else
echo '<input type="text" name="MessageTo" value="" />'
fi
echo '
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>User, an den die Benachrichtigungen gesendet werden.
<br>Auf diese Art kann man sich in Verbindung mit dem Paket "Notification Forwarder" über synOTR-Ereignisse z.B. über einen Pushdienst benachrichtigen lassen.
<br>Bleibt der Wert leer, so wird die Gruppe "administrators" benachrichtigt.
</span></a></p>'
# dsmbeepnotify
echo '
<p>
<label>Systembenachrichtigung (Piep)</label>
<select name="dsmbeepnotify">'
if [[ "$dsmbeepnotify" == "off" ]]; then
echo '<option value="off" selected>aus</option>'
else
echo '<option value="off">aus</option>'
fi
if [[ "$dsmbeepnotify" == "on" ]]; then
echo '<option value="on" selected>ein</option>'
else
echo '<option value="on">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Ein kurzer Piep, sobald ein Film fertig bearbeitet wurde.</span></a>
</p>'
# LOGlevel
echo '
<p>
<label>LOGlevel (0,1,2)</label>
<select name="LOGlevel">'
if [[ "$LOGlevel" == "0" ]]; then
echo '<option value="0" selected>aus</option>'
else
echo '<option value="0">aus</option>'
fi
if [[ "$LOGlevel" == "1" ]]; then
echo '<option value="1" selected>1 (standard)</option>'
else
echo '<option value="1">1 (standard)</option>'
fi
if [[ "$LOGlevel" == "2" ]]; then
echo '<option value="2" selected>2 (erweitert)</option>'
else
echo '<option value="2">2 (erweitert)</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>0 => es wird keine Log-Datei erstellt<br>1 => normales Log (standard)<br>2 => erweitertes Log
<br>Die Logs befinden sich im Dekodierverzeichnis/_LOGsynOTR/</span></a>
</p>'
# reindex
echo '
<p>
<label>tägliche Neuindexierung des Zielordners</label>
<select name="reindex">'
if [[ "$reindex" == "0" ]]; then
echo '<option value="0" selected>aus</option>'
else
echo '<option value="0">aus</option>'
fi
if [[ "$reindex" == "1" ]]; then
echo '<option value="1" selected>ein</option>'
else
echo '<option value="1">ein</option>'
fi
echo '
</select>
<a class="helpbox" href="#HELP">
<img src="images/icon_information_mini@geimist.svg" height="25" width="25"/>
<span>Gelöschte Filme bleiben teilweise noch länger im Videostationindex.
Hier kann eingestellt werden, ob nach dem 1. Programmlauf des Tages (also in der Regel nachts) der Index der Videostation neu aufgebaut werden soll.
<br><br>(angepasste Videoinformationen gehen dabei nicht verloren - nur der Dateiindex wird aktualisiert)</span></a>
</p>'
echo '
</p>
</details>
<br><hr style="border-style: dashed; size: 1px;">
</fieldset>'
echo '
</div>
</div><div class="clear"></div>
<div id="minheight"></div>
'
fi

54
Build/footer.sh Normal file
View file

@ -0,0 +1,54 @@
#!/bin/bash
# footer.sh
if [[ "$mainpage" == "timer" ]]; then
echo '
<footer>
<p class="center">'
if [[ "$page" != "timer" ]] && [[ "$page" != "timer-set-6" ]] && [[ "$page" != "timer-delete-query" ]] && [[ "$page" != "timer-delete" ]]; then
if [[ "$page" == timer-* ]]; then
if [[ "$page" == "timer-set-1" ]]; then
echo '
<button name="page" value="timer">zurück</button>&nbsp;&nbsp;&nbsp;'
elif [[ "$page" == "timer-set-5" ]] && [[ "$timer_times" == "one" ]]; then
echo '
<button name="page" value="timer-set-2">zurück</button>&nbsp;&nbsp;&nbsp;'
else
echo '
<button name="page" value="timer-set-'$siteless'">zurück</button>&nbsp;&nbsp;&nbsp;'
fi
if [[ "$page" == "timer-set-5" ]]; then
echo '
<button name="page" value="timer-set-6" class="blue_button">Zeitplan speichern</button>'
else
echo '
<button name="page" value="timer-set-'$sitemore'">weiter</button>'
fi
fi
fi
echo '
</p>
</footer>
<div class="clear"></div>'
elif [[ "$mainpage" == "edit" ]]; then
echo '
<footer>
<p>'
# button:
echo '
<div style="text-align: right;">
<button name="page" value="edit-save" class="blue_button">Speichern</button>&nbsp;
<button name="page" value="edit-import-query">Import</button>&nbsp;
<button name="page" value="edit-export">Export</button>&nbsp;
<button name="page"><a href="app/etc/Konfiguration.txt" download="Konfiguration.txt">Download</a></button>&nbsp;
<button name="page" value="edit-restore-query" class="red_button">R E S E T</button>&nbsp;
</div>'
echo '
</p>
</footer>'
echo '
<div class="clear"></div>'
fi

52
Build/help.sh Normal file
View file

@ -0,0 +1,52 @@
#!/bin/bash
# help.sh
echo '
<div id="Content_1Col">
<div class="Content_1Col_full">
<div class="title">
synOTR Schnellstart
</div>
<ol style="list-style:decimal">
<p>
<li>Passe zunächst deine Installation in den <a href="index.cgi?page=edit" style="'$synotrred';">Einstellungen</a> an.
</li></p>
<p>
<li>Um synOTR regelmäßig laufen zu lassen (was sich empfiehlt), erstelle als
nächstes <br>einen automatisierten Programmaufruf.
<div class="tab"><br>
Dazu hast du 2 Möglichkeiten:<br>verwende den <a href="index.cgi?page=timer" style="'$synotrred';">Zeitplaner</a> für einen programmierten synOTR-Start.</p><hr>
<p>Oder, erstelle alternativ im Aufgabenplaner einen neuen Task mit diesem
Programmpfad<br>(zu empfehlen, sofern du kürzere Intervalle als "stündlich" benötigst):</p>
<p style="margin-left: 40px;"><code>/usr/syno/synoman/webman/3rdparty/synOTR/synOTR-start.sh</code></p>
<h3>Öffne dazu im DSM die Systemsteuerung </h3>
<ul class="li_standard">
<li>Aufgabenplaner </li>
<li>Schaltfläche <i>Erstellen</i> </li>
<li><i>geplante Aufgabe</i> </li>
<li><i>Benutzerdefiniertes Skript</i></li>
</ul><br>
<h3>Registerkarte "Allgemein":</h3>
<ul class="li_standard">
<li>Benutzer root</li>
<li>ein beliebiger Name unter <i>Vorgang</i></li>
<li>Haken bei <i>aktiviert</i></li>
</ul><br>
<h3>Registerkarte "Zeitplan":</h3>
<ul class="li_standard">
<li>hier gewünschtes Intervall (z.B. stündlich)</li>
</ul><br>
<h3>Registerkarte "Aufgabeneinstellung":</h3>
<ul class="li_standard">
<li>hier den nachstehenden Pfad hineinkopieren:</li><br>
<code><span style="background-color:#cccccc;font-hight:1.1em;">/usr/syno/synoman/webman/3rdparty/synOTR/synOTR-start.sh</span></code>
</ul><br>
</ol>
<hr>
<p>
Weitere Hilfe findest du derzeit auf der synOTR Homepage: https://synotr.geimist.eu/faq/faq.html
</p>'
echo '
</div>
</div><div class="clear"></div>'

225
Build/index.cgi Normal file
View file

@ -0,0 +1,225 @@
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin
# Zugangsberechtigungen des DSM überprüfen (Syno-Token)
login=$(php -f /volume*/@appstore/synOTR/includes/token.php) || exit
login_user=$(echo $login | sed "s/.*user: //;s/ admin:.*//") || exit
login_admin=$(echo $login | sed -e 's/.*admin: //') || exit
if [ -n "$login" ]; then
if [[ "$login" != "0" ]] && [[ "$login_user" != "0" ]]; then
access="yes"
fi
fi
# Script beenden wenn Zugang nicht gewährt
if [ -z "$access" ]; then
exit
else
# Benutzerordner initiieren
dir=$(echo /volume*/@appstore/synOTR) || exit
get_var=$(which get_key_value) || exit
set_var=$(which synosetkeyvalue) || exit
usersettings="$dir/usersettings"
var="$dir/usersettings/var.txt"
# var="$usersettings/var.txt"
# stop="$usersettings/stop.txt"
stop="$dir/usersettings/stop.txt"
black="color: #000000"
green="color: #00B10D"
red="color: #DF0101"
synotrred="color: #BD0010"
blue="color: #2A588C"
orange="color: #FFA500"
grey="color: #424242"
grey1="color: #53657D"
grey2="color: #374355"
# Konfiguration laden:
source $dir/app/etc/Konfiguration.txt
# MAC-Adresse auslesen (um DEV-Seiten zu verstecken)
read MAC </sys/class/net/eth0/address
sysID=`echo $MAC | cksum | awk '{print $1}'`; sysID="$(printf '%010d' $sysID)" #echo "Prüfsumme der MAC-Adresse als Hardware-ID: $sysID" 10-stellig
fi
if [ -z "$backifs" ]; then
backifs="$IFS"
readonly backifs
fi
IFS="&"
set -- $QUERY_STRING
IFS='
'
# Umgebungsparameter initiieren
for i in "$@"; do
IFS="$backifs"
variable=${i%%=*}
encode_value=${i##*=}
decode_value=$(echo "$encode_value" | sed -f $dir/includes/decode.sed)
"$set_var" "$var" "$variable" "$decode_value"
"$set_var" "$var" "encode_$variable" "$encode_value"
done
if [ -f "$var" ]; then
source "$var"
fi
mainpage=${page%%-*}
site=${page##*-}
sitemore=$(expr $site + 1)
siteless=$(expr $site - 1)
if [[ "$mainpage" == "start" ]]; then
[ -f "$var" ] && rm "$var"
[ -f "$stop" ] && rm "$stop"
[ -f "$usersettings/stop2.txt" ] && rm "$usersettings/stop2.txt"
mainpage="main"
fi
# Layout - Startseite definieren
if [ -z "$page" ]; then
mainpage="main"
fi
"$set_var" "$var" "page" ""
# Layout - Grundgerüst öffnen inkl. Navigation -
echo "Content-type: text/html"
echo
echo '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>synOTR</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/svg+xml" href="images/synOTR-LOGO.svg" sizes="any">
<!-- <link rel="shortcut icon" href="images/uh_32.png" type="image/x-icon" /> -->
<link rel="stylesheet" type="text/css" href="css/synotr_4.0.3.css" />
<!--Load the AJAX API-->
<!--<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>-->
<script type="text/javascript" src="js/chartsloader.js"></script>
</head>
<body>'
echo '<div id="wrapper">'
echo '
<div id="navleft">
<div id="navleftinbox">
<ul class="li_blank">'
if [[ "$mainpage" == "main" ]]; then
echo '
<li><a class="navitemselc" href="index.cgi?page=start"><img class="svg" src="images/home_white@geimist.svg" height="25" width="25"/>Übersicht</a></li>'
else
echo '
<li><a class="navitem" href="index.cgi?page=start"><img class="svg" src="images/home_grey3@geimist.svg" height="25" width="25"/>Übersicht</a></li>'
fi
if [[ "$mainpage" == "edit" ]]; then
echo '
<li><a class="navitemselc" href="index.cgi?page=edit"><img class="svg" src="images/settings_white@geimist.svg" height="25" width="25"/>Konfiguration</a></li>'
else
echo '
<li><a class="navitem" href="index.cgi?page=edit"><img class="svg" src="images/settings_grey3@geimist.svg" height="25" width="25"/>Konfiguration</a></li>'
fi
# #if [[ "$customizedConfig" == "1" ]]; then # Flag "$customizedConfig" soll beim speichern der Einstellungen automatisch in der Config gesetzt werden. Erst dann wird der Timer angezeigt
if [[ "$mainpage" == "timer" ]]; then
echo '
<li><a class="navitemselc" href="index.cgi?page=timer"><img class="svg" src="images/calendar_white@geimist.svg" height="25" width="25"/>Zeitplaner</a></li>'
else
echo '
<li><a class="navitem" href="index.cgi?page=timer"><img class="svg" src="images/calendar_grey3@geimist.svg" height="25" width="25"/>Zeitplaner</a></li>'
fi
# #fi
if [[ "$mainpage" == "help" ]]; then
echo '
<li><a class="navitemselc" href="index.cgi?page=help"><img class="svg" src="images/help_white@geimist.svg" height="25" width="25"/>Hilfe</a></li>'
else
echo '
<li><a class="navitem" href="index.cgi?page=help"><img class="svg" src="images/help_grey3@geimist.svg" height="25" width="25"/>Hilfe</a></li>'
fi
#if [[ "$sysID" -eq "3382110677" ]]; then # 3382110677 = DEV-ID
if [[ "$mainpage" == "status" ]] ; then
echo '
<li><a class="navitemselc" href="index.cgi?page=status"><img class="svg" src="images/status_white@geimist.svg" height="25" width="25"/>Status</a></li>'
else
echo '
<li><a class="navitem" href="index.cgi?page=status"><img class="svg" src="images/status_grey3@geimist.svg" height="25" width="25"/>Status</a></li>'
fi
#fi
echo '</ul>
</div>
</div>'
echo '
<p style="padding: 15px;">
<div class="clear"></div>'
# Layout - Dynamischer Seitenaustausch
echo '
<form action="index.cgi" method="get" autocomplete="on">'
if [ -z "$mainpage" ]; then
echo 'Die Seite konnte nicht geladen werden!'
else
script="$mainpage.sh"
if [ -f "$script" ]; then
. ./"$script"
else
. ./main.sh
fi
fi
# Fehlerausgabe
if [ -f "$usersettings/stop2.txt" ]; then
#<div id="Content_1Col">
echo '
<div class="Content_1Col_full">
<div class="warning">
<p class="center">'
IFS='
'
for i in $(< "$usersettings/stop2.txt"); do
IFS="$backifs"
echo ''$i''
done
[ -f "$stop" ] && rm "$stop"
[ -f "$usersettings/stop2.txt" ] && rm "$usersettings/stop2.txt"
echo '
</p>
</div>
<div id="lastLine"></div>
</div><div class="clear"></div>'
#</div>
fi
if [ -f "$stop" ]; then
cp "$stop" "$usersettings/stop2.txt"
echo '<meta http-equiv="refresh" content="0; url=index.cgi?page='$(echo "$page" | sed 's/[[:digit:]]*$//')''$siteless'#lastLine">'
fi
# Footer
if [ -f "footer.sh" ] && [ ! -f "$stop" ]; then
. ./footer.sh
fi
# Layout - Grundgerüst schließen -
echo '
</form>
</div>
</body>
</html>'