0800555333
Hacker
- Registriert
- 9. Juli 2013
- Beiträge
- 329
- Reaktionspunkte
- 364
- Punkte
- 123
Angelehnt an das Project von amassidda @ https://www.digital-eliteboard.com/...ettings-%FCber-eigenen-Server-laden-m%F6glich
Hier meine angepassten Scripts um amassidda 's Thread nicht weiter zu belasten :emoticon-0111-blush
Das Project dient dazu die Senderliste von einem Enigma1 oder Enigma2 Receiver über einen Webserver zu verteilen.
Auf dem Quell-Receiver wird ein Script " pack_bq.sh " installiert welches die benötigten Dateien in ein entsprechendes Archive packt.
Dieses Archive sowie eine zusätzliche Datei " time.txt " muss dann auf einen Webserver (zum Beispiel ein ThinClient) geladen werden
Auf dem Ziel-Receivern wiederum wird ein Script " get_bq.sh " installiert welches beim ausführen anhand der time.txt prüft ob ein neues Update der Bouquets verfügbar ist und läd sowie installiert diese dann..
In den Scripts muss im oberen Bereich ggf etwas eingestellt werden, aber ab der Zeile " ## Ende der Konfiguration " bitte nichts verändern
pack_bq.sh
get_bq.sh
Changelog
Um das SERVERdir über einen seperaten Webserver-port zu betreiben könnt ihr wie folgt vorgehen:
Hier meine angepassten Scripts um amassidda 's Thread nicht weiter zu belasten :emoticon-0111-blush
Das Project dient dazu die Senderliste von einem Enigma1 oder Enigma2 Receiver über einen Webserver zu verteilen.
Auf dem Quell-Receiver wird ein Script " pack_bq.sh " installiert welches die benötigten Dateien in ein entsprechendes Archive packt.
Dieses Archive sowie eine zusätzliche Datei " time.txt " muss dann auf einen Webserver (zum Beispiel ein ThinClient) geladen werden
Auf dem Ziel-Receivern wiederum wird ein Script " get_bq.sh " installiert welches beim ausführen anhand der time.txt prüft ob ein neues Update der Bouquets verfügbar ist und läd sowie installiert diese dann..
In den Scripts muss im oberen Bereich ggf etwas eingestellt werden, aber ab der Zeile " ## Ende der Konfiguration " bitte nichts verändern
pack_bq.sh
Code:
#!/bin/sh
#
# creates Bouquets ans Settings file. version: 0.5
#
#
# Enigma Version ("enigma1" oder "enigma2").
ENIGMA="enigma2"
# Farbliche Text-Ausgabe verwenden? 0 = Nein , 1 = Ja
COLORED="0"
#
## Ende der Konfiguration
#
TEMPdir=/tmp
enigma1dir="/var/tuxbox/config/enigma/"
enigma2dir="/etc/enigma2/"
Files2Pack2="satellites.xml terrestrial.xml cables.xml timezone.xml"
Files2Pack1="$Files2Pack2 *.tv *.radio lamedb blacklist settings whitelist userbouquet.* services"
PakFiles=""
ST="time.txt"
[ -z "$COLORED" ] && COLORED=0
#- functions
#error handling
_error() {
if [ $1 -gt 0 ]; then
[ -z "$2" ] && message="Es ist ein Fehler aufgetreten" || message=$2
if [ "$COLORED" = 1 ]; then
echo -e "\033[1;31;40m$message\033[0m"
echo -e "\033[1;31;40mAbbruch\033[0m"
else
echo "$message"
echo "Abbruch"
fi
exit 1
fi
}
#collect files to pack
collectFiles() {
# source dir = $1
# Files2Pack = $2
cd $1
FILES=$(ls)
for file in $FILES; do
validfile=0
for wantedfile in $2; do
crapfile=0
if [ "$file" = "$wantedfile" ]; then
case $file in
*_bak) crapfile=1 ;;
*_org) crapfile=1 ;;
esac
[ "$crapfile" = 0 ] && validfile=1
fi
done
[ "$validfile" = 1 ] && PakFiles="$PakFiles $1$file"
done
}
#- main code
#falls ENIGMA leer -> versuche ENIGMA version zu ermitteln
if [ -z "$ENIGMA" ]; then
[ -d "$enigma1dir" ] && ENIGMA="enigma1"
[ -d "$enigma2dir" ] && ENIGMA="enigma2"
if [ -z "$ENIGMA" ]; then
_error 1 "Kann die ENIGMA Version nicht ermitteln! Bitte manuell im Script festlegen!"
fi
else
# prüfe gültige ENIGMA einstellung
if [ "$ENIGMA" != "enigma1" ] && [ "$ENIGMA" != "enigma2" ]; then
_error 1 "Die Script Einstellung ENIGMA ist fehlerhaft!\n Gueltige Einstellung: ENIGMA=\"enigma1\" oder ENIGMA=\"enigma2\""
fi
fi
# Name der gepackten Bouquets Datei
BQ="${ENIGMA}.tar.gz"
[ "$ENIGMA" = "enigma1" ] && srcDIR=$enigma1dir
[ "$ENIGMA" = "enigma2" ] && srcDIR=$enigma2dir
#zu packende dateien ermitteln: enigma1 & enigma2
collectFiles "$srcDIR" "$Files2Pack1"
#zu packende dateien ermitteln: enigma2 (/etc/tuxbox/)
[ "$ENIGMA" = "enigma2" ] && collectFiles "/etc/tuxbox/" "$Files2Pack2"
#dateien zum packen vorbereiten
echo "Bereite Dateien zum packen vor.."
mkdir -p $TEMPdir/$ENIGMA
cp -rf $PakFiles $TEMPdir/$ENIGMA/
_error $? "Es ist ein Fehler aufgetreten (zu packende dateien kopieren)"
#archive erstellen
echo "Erstelle Archive.."
cd $TEMPdir
tar -cz $ENIGMA > $TEMPdir/$BQ
_error $? "Es ist ein Fehler aufgetreten (archive erstellen)"
[ ! -s "$TEMPdir/$BQ" ] && _error 1 "Es ist ein Fehler aufgetreten (erstelles archive hat 0 bytes)"
rm -rf $TEMPdir/$ENIGMA/
echo "Archive $TEMPdir/$BQ erfolgreich erstellt ($(echo `du -sh $TEMPdir/$BQ` | cut -d' ' -f 1))"
#time.txt erzeugen (format: unixtimestamp)
TIMESTAMP=$(date +%s)
echo $TIMESTAMP > $TEMPdir/$ST
echo "$TEMPdir/$ST erfolgreich erstellt ($TIMESTAMP)"
exit 0
get_bq.sh
Code:
#!/bin/sh
#
# Downloads, Installs & Reloads the latest Enigma Bouquets. version: 1.3
#
#
# Enigma Version ("enigma1" oder "enigma2").
ENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="http://192.168.0.10"
# Der Port eures Webservers (standard: 80)
SERVERport="8080"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="ORDNER"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
# Farbliche Text-Ausgabe verwenden? 0 = Nein , 1 = Ja
COLORED="0"
#
## Ende der Konfiguration
#
#prepare url
case $SERVERurl in
[hH][tT][tT][pP]*|[fF][tT][pP]*)
URLprot="$(echo $SERVERurl | cut -d ":" -f 1)://"
URL=$(echo $SERVERurl | cut -d ":" -f 2 | tr -d "//")
;;
*)
URL=$SERVERurl
;;
esac
if [ ! -z "$USERNAME" ]; then
if [ -z "$PASSWORD" ]; then
_error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
fi
URL="$USERNAME:$PASSWORD@$URL"
fi
[ ! -z "$SERVERport" ] && URL="$URL:$SERVERport"
[ ! -z "$URLprot" ] && URL=$URLprot$URL
TEMPdir=/tmp
WGETsettings="-q"
FILES2="satellites.xml terrestrial.xml cables.xml timezone.xml"
[ -z "$COLORED" ] && COLORED=0
#- functions
#aufräumen
_cleanup() {
rm -rf $TEMPdir/$ENIGMA
rm -f $TEMPdir/$ST
rm -f $TEMPdir/$BQ
}
#error handling
_error() {
if [ $1 -gt 0 ]; then
[ -z "$2" ] && message="Es ist ein Fehler aufgetreten" || message=$2
if [ "$COLORED" = 1 ]; then
echo -e "\033[1;31;40m$message\033[0m"
echo -e "\033[1;31;40mAbbruch\033[0m"
else
echo "$message"
echo "Abbruch"
fi
exit 1
fi
}
#downloaden von time.txt
downtimetxt() {
#Downloaden von time.txt vom Server
wget $WGETsettings $URL/$SERVERdir/$ST
_error $? "Es ist ein Fehler aufgetreten (download $ST)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$ST" ]; then
_error 1 "Es ist ein Fehler aufgetreten (download $ST)"
fi
#Speichern des Inhalts von time.txt in einer Variablen
timen=$(cat $TEMPdir/$ST | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von $TEMPdir/$ST)"
}
#Speichern der time.txt-variable in timelu.txt
savetimetxt() {
echo "$timen" > /etc/timelu.txt
}
#download and install Bouquets
downinstBQ() {
TYPE=$1
#Download der Senderliste vom Server
wget $WGETsettings $URL/$SERVERdir/$BQ
_error $? "Es ist ein Fehler aufgetreten (download $BQ)"
#prüfen ob download erfolgreich
if [ ! -f "$TEMPdir/$BQ" ]; then
_error 1 "Es ist ein Fehler aufgetreten ($BQ wurde nicht heruntergeladen)"
fi
#Entpacken
tar -zxf $BQ
_error $? "Es ist ein Fehler aufgetreten (entpacken $BQ)"
if [ "$ENIGMA" = "enigma2" ]; then
PakValidated=0
for file in $FILES2; do
if [ -f "$TEMPdir/$ENIGMA/$file" ]; then
mv -f $TEMPdir/$ENIGMA/$file /etc/tuxbox/
PakValidated=1
fi
done
#prüfen ob der inhalt des enigma2 archives korrekt ist
[ $PakValidated = 0 ] && _error 1 "Das Archive $BQ entspricht nicht den Anforderungen!"
cd /etc/$ENIGMA
rm -f *.tv
rm -f *.radio
rm -f blacklist
rm -f lamedb
mv -f $TEMPdir/$ENIGMA/* /etc/$ENIGMA/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /etc/$ENIGMA/)"
_cleanup
#Speichern der time.txt in timelu.txt
savetimetxt
echo "Lade Senderliste neu"
RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
echo " "
if [ "$COLORED" = 1 ]; then
echo -e "\033[1;32;40mBouquets $TYPE erfolgreich abgeschlossen\033[0m"
else
echo "Bouquets $TYPE erfolgreich abgeschlossen"
fi
echo " "
else
cd /var/tuxbox/config/enigma/
rm -f *.tv
rm -f *.radio
rm -f *.epl
rm -f bouquets
rm -f services
rm -f services.locked
mv -f /tmp/$ENIGMA/* /var/tuxbox/config/enigma/
_error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /var/tuxbox/config/enigma/)"
_cleanup
#Speichern der time.txt in timelu.txt
savetimetxt
echo " "
if [ "$COLORED" = 1 ]; then
echo -e "\033[1;32;40mBouquets $TYPE erfolgreich abgeschlossen\033[0m"
else
echo "Bouquets $TYPE erfolgreich abgeschlossen"
fi
echo " "
echo "Starte Receiver neu um Bouquets $TYPE wirksam zu machen"
reboot
fi
}
#- main code
#falls ENIGMA leer -> versuche ENIGMA version zu ermitteln
if [ -z "$ENIGMA" ]; then
[ -d "/etc/enigma2/" ] && ENIGMA="enigma2"
[ -d "/var/tuxbox/config/enigma/" ] && ENIGMA="enigma1"
if [ -z "$ENIGMA" ]; then
_error 1 "Kann die ENIGMA Version nicht ermitteln! Bitte manuell im Script festlegen!"
fi
else
# prüfe gültige ENIGMA einstellung
if [ "$ENIGMA" != "enigma1" ] && [ "$ENIGMA" != "enigma2" ]; then
_error 1 "Die Script Einstellung ENIGMA ist fehlerhaft!\n Gueltige Einstellung: ENIGMA=\"enigma1\" oder ENIGMA=\"enigma2\""
fi
fi
# Name der gepackten Bouquets Datei
BQ="${ENIGMA}.tar.gz"
echo "Pruefe ob ein Update der Bouquets noetig ist.."
cd $TEMPdir
#prüfen ob das script schon mal genutzt wurde und /etc/timelu.txt überhaupt vorhanden ist
if [ -f "/etc/timelu.txt" ]; then
#Speichern des Inhalts von timelu.txt in einer Variablen
timelu=$(cat /etc/timelu.txt | head -n1 | tail -n1)
_error $? "Es ist ein Fehler aufgetreten (auslesen von /etc/timelu.txt)"
#vor dem downloaden sicherstellen das die datei nicht vorhanden ist
_cleanup
#Downloaden von time.txt vom Server
downtimetxt
#Vergleich: Ist timelu kleiner als timen?
if [ $timelu -lt $timen ]; then
echo "Update vom $(date -d @$timen +"%d.%m.%Y um %H:%M") vorhanden.. Starte Update"
echo " "
#download and update bouquets
downinstBQ Update
else
#Timen ist kleiner oder gleich groß wie timelu
echo "Senderliste aktuell. Kein Update noetig"
fi
else
#vor dem downloaden sicherstellen das die datei nicht vorhanden ist
_cleanup
#Downloaden von time.txt vom Server
downtimetxt
#download and install bouquets
echo "Starte Bouquets Install"
echo " "
downinstBQ Install
fi
exit 0
Changelog
pack_bq.sh
v0.5:
- format der time.txt auf unixtimestamp geändert
- neue einstellung COLORED zum festlegen ob die text-ausgabe farblich angezeigt werden soll (farbliche ausgabe funktion nicht wenn das script über den Dateibrowser des Receivers ausgeführt wird)
get_bq.sh
v1.3:
- problem bei username/password verwendung behoben
v1.2:
- anstatt das erstellungsdatum des archives wird nun der timestamp aus der time.txt angezeigt
- neue einstellung COLORED zum festlegen ob die text-ausgabe farblich angezeigt werden soll (farbliche ausgabe funktion nicht wenn das script über den Dateibrowser des Receivers ausgeführt wird)
v0.5:
- format der time.txt auf unixtimestamp geändert
- neue einstellung COLORED zum festlegen ob die text-ausgabe farblich angezeigt werden soll (farbliche ausgabe funktion nicht wenn das script über den Dateibrowser des Receivers ausgeführt wird)
get_bq.sh
v1.3:
- problem bei username/password verwendung behoben
v1.2:
- anstatt das erstellungsdatum des archives wird nun der timestamp aus der time.txt angezeigt
- neue einstellung COLORED zum festlegen ob die text-ausgabe farblich angezeigt werden soll (farbliche ausgabe funktion nicht wenn das script über den Dateibrowser des Receivers ausgeführt wird)
Um das SERVERdir über einen seperaten Webserver-port zu betreiben könnt ihr wie folgt vorgehen:
cd /etc/apache2/sites-available/
cp default settings
nano settings
nano /etc/apache2/ports.conf
a2ensite settings
/etc/init.d/apache2 restart
Zu erreichen ist der Ordner dann über "
cp default settings
nano settings
Code:
<VirtualHost *:[COLOR=#ff0000]88[/COLOR]>
[COLOR=#ff0000] ServerName localhost[/COLOR]
ServerAdmin webmaster@localhost
DocumentRoot /var/www/[COLOR=#ff0000]settings[/COLOR]
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/[COLOR=#ff0000]settings[/COLOR]>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Code:
NameVirtualHost *:80
[COLOR=#ff0000]NameVirtualHost *:88[/COLOR]
Listen 80
[COLOR=#ff0000]Listen 88[/COLOR]
/etc/init.d/apache2 restart
Zu erreichen ist der Ordner dann über "
Sie müssen registriert sein, um Links zu sehen.
" aber nicht unter "
Sie müssen registriert sein, um Links zu sehen.
" !
Zuletzt bearbeitet: