Xxv
Inhaltsverzeichnis |
Beschreibung
xxv ist ein zentraler Dienst zur Administrierung des VDR und dessen Umgebung, bei dem verschiedene Ports offen sind und diese verschiedene Services bedienen können. Einen zusätzlichen Port über ein Plugin einzurichten sollte genauso einfach sein, wie auch einen bestimmten Service bereitzustellen. Das Schreiben eines Plugins geht sehr schnell, da der Input (Vdr, DB usw) sowie der Output (Telnet, HTTP, ... ) generisch realisiert wurde. Es soll also z.B. möglich sein, mit einer TelnetConsole, HttpBrowser, WapTelefon, etc. pp. einen Autotimer einzutragen. Dieser sollte wesentlich schneller die EPG-Daten durchsuchen können (MySQL-Datenbank) und über ein Interface dem VDR den neuen Timer mitteilen. Dabei wird natürlich auch dem singleModus des SVdrP Rechnung getragen und nur ein Befehl abgesendet. Danach wird der Port sofort wieder geschlossen, damit andere Programme wieder auf den svdrp zugreifen können.
Lange Rede kurzer Sinn, hier ein kleiner Überblick der derzeitigen Funktionen:
- komplett in Perl realisiert
- sehr generisches Frontend
- Plugin system
- Datenbank Unterstützung
- Epg-Daten werden regelmäßig geparst und eingetragen
- sehr einfaches Pluginkonzept für zukünftige Erweiterungen
- mehrere Services aus einem Dienst (Telnet, HTTP, ...)
- Dump-Interface fuer externe Programme
Screenshots
Softwareanforderungen
- mysql-server
- perl
- DBI
- DBD::mysql
- Event
- Test::Simple
- URI
- MIME::Base64
- Time::HiRes
- Attribute::Handlers
- mplayer (optional), Installation siehe mplayer-plugin
Installation
Xxv entpacken
cd /usr/local/src tar xvzf xxv-<VERSION>.tar.gz
MySQL
Als erstes ist Mysql zu installieren.
cd $SOURCEDIR tar xvzf mysql-<VERSION>.tar.gz ./configure --prefix=/usr/local \ --libexecdir=/usr/local/bin \ --without-extra-tools \ --without-bench make make install find . -name my-medium.cnf -exec cp --backup=t \{} /etc/my.cnf \; cd /usr/local/lib ln -s mysql/libmysqlclient.so* . groupadd mysql useradd -g mysql mysql chown -R mysql var mysql_install_db --user=mysql & ldconfig
Starten des Servers mit.
mysqld_safe --user=mysql &
Nun folgen einige Perl Module, da gibt es wie 2 Wege:
Perl Module per cpan
Der empfohlende Weg: Mittels "Bundle::Xxv" per CPAN, einfach in das $SOURCEDIR/lib Verzeichniss wechseln und das Bundle installieren. Alle Module die benoetigt werden stehen in diesem Bundle und werden automatisch installiert:
cd $SOURCEDIR/xxv-<VERSION>/lib perl -MCPAN -e 'install Bundle::Xxv'
Perl Module per Download
Oder eine andere (nicht zu empfehlende) Möglichkeit via Source, auf dem TestPC als Basis Peanut waren es folgende Sachen.
- Test-Simple-<VERSION>.tar.gz
- DBI-<VERSION>.tar.gz
- DBD-mysql-<VERSION>.tar.gz
- Event-<VERSION>.tar.gz
- MIME-Base64-<VERSION>.tar.gz
- Time-HiRes-<VERSION>.tar.gz
Die Installation ist fuer alle Pakete Identisch:
cd $SOURCEDIR tar xvzf <NAME>-<VERSION>.tar.gz cd <NAME>-<VERSION> perl Makefile.PL make make install cd -
Debian-spezifisch
Unter Debian braucht man nicht die perl Module von Hand installieren, diese Zeile sollte ausreichen um xxv zum laufen zu bekommen.
apt-get install mysql-server \ libdbi-perl \ libevent-perl \ libtimedate-perl \ libtime-hires-perl \ libmime-base64-perl
Konfiguration
Als erstes erfolgt das anlegen der Datenbank:
bash> mysql -u root -e "create database xxv;"
Rechte setzen:
bash> mysql -u root -e "grant all privileges on xxv.* to xpix@localhost;"
Die $SOURCEDIR/xxv-<VERSION>/xxvd.cfg ist anzupassen:
[General] DSN=DBI:mysql:database=xxv;host=localhost;port=3306 LANGUAGE=german LOGFILE=/var/log/xxvd.log PIDFILE=/var/run/xxvd.pid PWD= USR=xpix
xxv starten
Damit xxv bei jedem Systemstart als Dienst gestartet werden kann, haben wir ein Startskript unter etc/xxvd gespeichert das man in seinem System installieren sollte. Vorher sollte man aber noch den Pfad eingeben wo sich Euer xxv befindet:
cd $SOURCEDIR/xxv-<VERSION> nano etc/xxvd
In den ersten Zeilen einfach das Sourcedir eintragen und mit ctrl-o abspeichern.
# ------------------------------------------- # In welchem Ordner befindet sich bin/xxvd.pl # Where is bin/xxvd.pl FOLDER="/root/XXV" # -------------------------------------------
Damit ihr wisst in welchem Runlevel ihr gerade lauft solltet ihr runlvel aufrufen:
vdr:~# runlevel N 2
Den Level merkt ihr Euch und erstellt im dem Verzeichnis /etc/rc[runlevelnummer].d einen symbolischen Link auf xxvd. Bei meinem Beispiel in Level 2:
cd $SOURCEDIR/xxv-<VERSION> cp etc/xxvd /etc/init.d/. ln -s /etc/init.d/xxvd rc2.d/S90xxvd
Starten von xxv:
cd $SOURCEDIR/xxv-<VERSION> ./bin/xxvd.pl && tail -f /var/log/xxvd.log
oder als Dienst:
/etc/init.d/xxvd restart
Dann einen Browser aufrufen mit folgender URL:
http://ip_deines_vdrs:8080/
oder per Telnet
telnet [ip deines vdrs oder localhost] 8001
User: xxv Password: xxv
Plugins
General
General ist eigentlich kein Plugin, da dies aber xxv so sieht soll es der Vollständfigkeit halber auch aufgelistet werden. Hier werden globale Einstellungen aufgelistet, wie Logfilepfad, Datenbankserver usw.
Manual: http://www.xpix.de/downloads/xxv/doc/General.html
Autotimer
Hier werden die EPG Daten nach Sendungen mit einem bestimmten Text in title, subtitle und text durchsucht und diese als Timer programmiert.
Manual: http://www.xpix.de/downloads/xxv/doc/AUTOTIMER.html
Timers
Dieses Modul erlaubt das löschen, erstellen und editieren der neuen Timer, sowie deren Darstellung.
Manual: http://www.xpix.de/downloads/xxv/doc/TIMERS.html
EPG
Hier wird die epg.data geparst und deren Einträege in einer Datenbank abgespeichert.
Manual: http://www.xpix.de/downloads/xxv/doc/EPG.html
Channels
Hier wird die channels.conf geparst und deren Einträege in einer Datenbank abgespeichert.
Manual: http://www.xpix.de/downloads/xxv/doc/CHANNELS.html
HTTPD
Dieses Modul stellt einen HTTP Server sowie ein Webinterface zur Verfügung um xxv per Browser bedienen zu können.
Manual: http://www.xpix.de/downloads/xxv/doc/HTTPD.html
Telnet
Dieses Modul stellt einen Telnet Server zur Verfügung um xxv per telnet localhost portnummer bedienen zu können.
Manual: http://www.xpix.de/downloads/xxv/doc/TELNET.html
Interface
Dieses Modul stellt einen Telnet Server zur Verfügung um xxv mit anderen GUIs bedienen zu können.
Manual: http://www.xpix.de/downloads/xxv/doc/INTERFACE.html
Wapd
Dieses Modul stellt einen WapD Server zur Verfügung um xxv mittels einem Wap Browser (Handys) bedienen zu können. Zur Zeit noch ohne Funktion.
Manual: http://www.xpix.de/downloads/xxv/doc/WAPD.html
Music
Das MusicPlugin stellt eine Mediabiblothek sowie einen Icecast Streamserver zur Verfügung.
Manual: http://www.xpix.de/downloads/xxv/doc/MUSIC.html
Records
Dieses Plugin stellt alle Aufnahmen übersichtlich dar und erlaubt verschiedene Aktionen auf den einzelnen Records.
Manual: http://www.xpix.de/downloads/xxv/doc/RECORDS.html
Config
Das Konfiguration Plugin erlaubt während der Laufzeit verschiedene Parameter in den Interfaces (HTTP, Telnet ...) zu ändern und diese abzuspeichern.
Manual: http://www.xpix.de/downloads/xxv/doc/CONFIG.html
Grab
Grab stellt das Livebild vom vdr als JPEG Datei zur Verfügung.
Manual: http://www.xpix.de/downloads/xxv/doc/GRAB.html
Remote
Dieses Plugin stellt eine Fernbedienung und in Verbindung mit Grab auch ein Livebild dar. Somit laesst sich der vdr per Interface rudimentaer bedienen.
Manual: http://www.xpix.de/downloads/xxv/doc/REMOTE.html
Status
Status stellt alle Systeminformationen in den Interaces als übersichtliche Darstellung dar.
Manual: http://www.xpix.de/downloads/xxv/doc/STATUS.html
SVDRP
Dieses Plugin stellt alle telnet Befehle der svdrp Schnittstelle vom vdr zur Verfügung
Manual: http://www.xpix.de/downloads/xxv/doc/SVDRP.html
User
Eine Userautentifikation die in allen Interfaces die Kennung und Passwort des Users abfragt und eine Levelverwaltung zur Verfügung stellt.
Manual: http://www.xpix.de/downloads/xxv/doc/USER.html
Vtx
Diese Modul zeigt Videotextseiten an.
Manual: http://www.xpix.de/downloads/xxv/doc/VTX.html
Probleme
- in dem Logile tauchen beim start von xxv Warnungen auf:
6 (3185) [16:41:37 02/01/05] Can't locate Term/ReadLine/Gnu.pm in @INC (@INC contains: /root/XXV/bin/../lib /root/XXV/bin /usr/local/lib/perl/5.6.1 /usr/local/share/perl/5.6.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.6.1 /usr/share/perl/5.6.1 /usr/local/lib/site_perl .) at (eval 27) line 1 7 (3185) [16:41:37 02/01/05] Can't locate Term/ReadLine/Gnu.pm in @INC (@INC contains: /root/XXV/bin/../lib /root/XXV/bin /usr/local/lib/perl/5.6.1 /usr/local/share/perl/5.6.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.6.1 /usr/share/perl/5.6.1 /usr/local/lib/site_perl .) at (eval 27) line 1
Diese können ignoriert werden. Perl versucht verschiedene Module aufzurufen um herauszufinden welches es benutzen darf.
- in dem Lofile tauchen ab und zu folgende Warnungen auf:
37 (805) [12:01:34 02/02/05] Can't locate object method "timers" via package "XXV::MODULES::EPG" (perhaps you forgot to load "XXV::MODULES::EPG"?) at /root/XXV/bin/../lib/Template/Stash.pm line 650.
Diese können ignoriert werden. Perl versucht per eval eine Methode aufzurufen.
Links
[1] | http://www.mysql.org | mySQL |
[2] | http://xpix.dieserver.de/content | Homepage |
[3] | http://xpix.dieserver.de/downloads/xxv | Downloads |
[4] | http://xpix.dieserver.de/content/vdr/xxv/tutorials/ | Tutorial zum Schreiben eines Plugins für xxv |
[5] | older Screenshoots | Etwas ältere Screenshoots |