Plugins für Neutrino-Images bestehen aus mind. 2 Dateien. Einmal die Config-Datei (.cfg) und die Binärdatei (.so). Die Config-Datei enthält nur eine Beschreibung des Plugins und sieht normalerweise so aus:
Code: Alles auswählen
name=Outdoor
desc=Capture in LCD
depend=libfx2.so
type=2
needfb=0
needrc=1
needlcd=1
Der Wert 1 kennzeichnet Spiele, die dann unter Dbox-Taste – Spiele zu finden sind.
Der Wert 2 kennzeichnet Plugins, die dann im Menü der blauen Taste zu finden sind.
Der Wert 3 kennzeichnet Skripte, die dann unter Dbox-Taste – Skripte (erscheint dann unter dem Bildbetrachter, wenn Skripte vorhanden sind) zu finden sind.
Name ist der Name des Plugins, der so in der Auswahl angezeigt wird.
Desc ist die Beschreibung, die im Spiele-Menü und dem Skripte-Menü angezeigt wird.
Das sind die 3 Baustellen, die in diesem Workshop zur individuellen Anpassung im Image interessieren sollten. Ziel ist es u.a. ein Skript zu schreiben, mit dem man sein Image an die persönlichen Bedürfnisse anpassen kann. Aber auch den Einbau von neuen Skripten und Plugins und der Aufruf von Skripten oder Plugins durch das Flexmenü.
Speicherort von Plugins ist /lib/tuxbox/plugins/ - womit wir bei Cramfs- oder Squash-Images, wie Yadi oder JtG dann schon ein kleines Problem hätten, da der Ordner im schreibgeschütztem Bereich liegt und daher individuelle Anpassungen nicht möglich sind.
In modernen Images gibt es dafür aber 2 Ausweichpfade: /var/tuxbox/plugins/ im beschreibbaren Jffs oder auch /mnt/plugins/, einem leeren Ordner, den man als Mountpunkt für eine NFS-, Cifs- oder FTPFS-Freigabe verwenden kann. Das schafft Platz für viele Plugins und ermöglicht, mehrere Boxen mit einem gepflegten Plugin-Verzeichnis aktuell und für die Bedienung identisch zu halten.
Um nun ein Plugin, das in /lib/tuxbox/plugins/ liegt anzupassen, ist es zunächst nötig, dieses nach /var/tuxbox/plugins/ oder /mnt/plugins/ zu kopieren.
In einem Skript kann das dann so aussehen:
Code: Alles auswählen
cp /lib/tuxbox/plugins/outdoor.so /var/tuxbox/plugins/outdoor.so
chmod 744 /var/tuxbox/plugins/outdoor.so
cp /lib/tuxbox/plugins/outdoor.cfg /var/tuxbox/plugins/outdoor.cfg
Allerdings muß man die Binärdatei unter Linux zum funktionellen Gebrauch nicht mit dem Copy-Befehl (cp) kopieren, sondern, es reicht aus, einen Symlink zu setzen (mit ln –s), also besser so, um Speicherplatz zu sparen und nicht später ein Plugin aus einem alten Image zu benutzen, sondern immer auf das aktuelle zu verweisen:
Code: Alles auswählen
ln -s /lib/tuxbox/plugins/outdoor.so /var/tuxbox/plugins/outdoor.so
cp /lib/tuxbox/plugins/outdoor.cfg /var/tuxbox/plugins/outdoor.cfg
Linux und auch die meisten Neutrino-Images kennen aber auch den Befehl Sed. Damit kann man solche Anpassungen auch in einem Skript erledigen lassen. Sagen wir also beispielsweise, das der Name von Outdoor besser in LCD-TV geändert werden soll, sieht das Skript so aus:
Code: Alles auswählen
ln -s /lib/tuxbox/plugins/outdoor.so /var/tuxbox/plugins/outdoor.so
rm /tmp/outdoor.cfg.alt; cp /lib/tuxbox/plugins/outdoor.cfg /tmp/outdoor.cfg.alt; rm /var/tuxbox/plugins/outdoor.cfg
sed -e "s/name=.*/name=LCD-TV/g" /tmp/outdoor.cfg.alt > /var/tuxbox/plugins/outdoor.cfg
rm /tmp/outdoor.cfg.alt
Sed sucht dann nach der Zeile mit dem Eintrag „name=“ und ersetzt diese Zeile dann durch „name=LCD-TV“.
Mit Sed lässt sich so also die gesamte Config-Datei in einem Skript nach belieben automatisch bearbeiten.
So lassen sich z.B. auch Plugins verstecken. Um Outdoor nicht mehr anzuzeigen im Menü der blauen Taste, müsste man Type auf 0 (null) setzen.
Im Skript dann also:
Code: Alles auswählen
rm /tmp/outdoor.cfg.alt; cp /lib/tuxbox/plugins/outdoor.cfg /tmp/outdoor.cfg.alt; rm /var/tuxbox/plugins/outdoor.cfg
sed -e "s/type=.*/type=0/g" /tmp/outdoor.cfg.alt > /var/tuxbox/plugins/outdoor.cfg
rm /tmp/outdoor.cfg.alt
Code: Alles auswählen
rm /var/tuxbox/plugins/outdoor.so
ln -s /lib/tuxbox/plugins/outdoor.so /var/tuxbox/plugins/outdoor.so
rm /tmp/outdoor.cfg.alt; cp /lib/tuxbox/plugins/outdoor.cfg /tmp/outdoor.cfg.alt; rm /var/tuxbox/plugins/outdoor.cfg
sed -e "s/type=.*/type=0/g" /tmp/outdoor.cfg.alt > /var/tuxbox/plugins/outdoor.cfg
rm /tmp/outdoor.cfg.alt
Zum Aufruf des Plugins könnte man jetzt das Flexmenü nutzen.
Der entsprechende Eintrag in der shellexec.conf würde dann so aussehen:
Code: Alles auswählen
ACTION=Outdoor,wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=outdoor.cfg
Möglich wäre auch, das Plugin mit einem Skript aus den Skripte-Menü zu starten.
Der Name der Skriptdatei muß nun aber vom eigentlichen Abweichen, sonst müssten ja 2 Config-Dateien mit einem Dateinamen in einem Ordner liegen.
Also könnte man z.B. eine outdoor_s.cfg und outdoor_s.sh erstellen.
Inhalt der Config-Datei:
Code: Alles auswählen
name=Outdoor
desc=Capture in LCD
type=0
needfb=0
needrc=0
needlcd=0
Code: Alles auswählen
#! /bin/sh
wget -O /dev/null http://localhost/cgi-bin/startPlugin?name=outdoor.cfg
Code: Alles auswählen
rm /tmp/tuxnews.cfg.alt; cp /lib/tuxbox/plugins/tuxnews.cfg /tmp/tuxnews.cfg.alt; rm /var/tuxbox/plugins/tuxnews.cfg
sed -e "s/type=.*/type=0/g" /tmp/tuxnews.cfg.alt > /var/tuxbox/plugins/tuxnews.cfg
rm /tmp/tuxnews.cfg.alt
ln -s /lib/tuxbox/plugins/tuxnews.so /var/tuxbox/plugins/02_tuxnews.so
ln -s /lib/tuxbox/plugins/tuxnews.cfg /var/tuxbox/plugins/02_tuxnews.cfg
Code: Alles auswählen
rm /tmp/tuxnews.cfg.alt; cp /lib/tuxbox/plugins/tuxnews.cfg /tmp/tuxnews.cfg.alt; rm /var/tuxbox/plugins/tuxnews.cfg
sed -e "s/type=.*/type=0/g" /tmp/tuxnews.cfg.alt > /var/tuxbox/plugins/tuxnews.cfg
rm /tmp/tuxnews.cfg.alt
ln -s /lib/tuxbox/plugins/tuxnews.so /var/tuxbox/plugins/02_tuxnews.so
rm /tmp/02_tuxnews.cfg.alt; cp /lib/tuxbox/plugins/tuxnews.cfg /tmp/02_tuxnews.cfg.alt; rm /var/tuxbox/plugins/02_tuxnews.cfg
sed -e "s/name=.*/name=Laufschrift News/g" /tmp/02_tuxnews.cfg.alt > /var/tuxbox/plugins/02_tuxnews.cfg
rm /tmp/02_tuxnews.cfg.alt
Recht häufig sind auch die Plugins, die eigentlich keine sind. Skripte, die durch Shellstarter gestartet werden. Das ist eine Möglichkeit, Skripte auf die blaue Taste zu bekommen. Sehr gute Beispiele sind z.B. die Sport-Liga-Skripte von PauleFoul. Als Beispiel nehmen wir mal das BuliTore 1.3.
Das besteht aus den beiden Skriptstarter-Dateien und dem eigentlichen Skript (und einer Wav-Datei zur Soundausgabe). Den Shellstarter kann man sogar an eigene Skripts anpassen, indem man ihn in einem Hexeditor läd und den Pfad an eine Skript-Datei anpasst. Diese muss dann nicht einmal eine Dateiendung haben.
Aber man kann solche Plugins auch sehr leicht ins Skripte-Menü bringen. Einfach das Skript, was meist ohne Dateiendung nach /var/plugins kommen soll, nach /var/tuxbox/plugins kopieren statt nach /var/plugins. Die Dateiendung .sh anhängen und die Config-Datei auch nach /var/tuxbox/plugins kopieren und Type auf 3 setzen.
So, das dann in /var/tuxbox/plugins die Dateien bulitore.cfg und bulitore.sh (mit chmod 755 versehen) liegen.
Auch eine Verwendung des Flexmenüs mit solchen Plugins bietet sich an, da man dann nicht einmal die Config-Datei benötigt. Es reicht aus, die eigentliche Skript-Datei und die hier für die Soundausgabe benötigte Wav-Datei ins Image zu kopieren und das Skript (chmod 755 nicht vergessen!) über die shellexec.conf aufrufen zu lassen:
Code: Alles auswählen
ACTION=Bundesliga-Tore,/var/plugins/bulitore
Skripte, Config-Dateien und die Shellexec.conf müssen im Linux-Format behandelt werden. Windows liefert keinen brauchbaren Editor mit. Ich benutze den Crimson Editor und bin mit dem sehr zufrieden. Der ist Freeware und ich habe mit dem nie Probleme gehabt. Auch ist darauf zu achten, das Dateien, die per FTP auf die Box kopiert werden, immer im Binär-Mode arbeiten. Eine Übertragung im ASII-Mode würde die Files unbrauchbar machen. Ich benutze dafür SmartFTP mit dem ich im Zusammenhang mit Neutrino auch noch nie Probleme hatte.
Links dazu:
http://wiki.tuxbox.org/Neutrino:Skripte
http://wiki.tuxbox.org/Plugins
http://www.jackthegrabber.de/viewtopic.php?t=7663
http://www.crimsoneditor.com/
http://www.smartftp.com/
cu
Jens