Xxv

Aus VDR Wiki
Wechseln zu: Navigation, Suche

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. 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

beschreibung?
Datei:Xxv-stone.png
beschreibung?
beschreibung?
beschreibung?

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 $SOURCEDIR
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 (empfohlen)

Der empfohlende Weg: Mittels "Bundle::Xxv" per CPAN, einfach in das $SOURCEDIR/lib Verzeichniss wechseln und das Bundle installieren. Dazu muss man LEIDER dem cpan das Modul unterschieben, es kann sein das bei den mkdir's Fehlermeldungen kommen das dieses Verzeichniss bereits schon existiert, das könnt ihr getrost ignorieren. Alle Module die benoetigt werden stehen in diesem Bundle und werden automatisch installiert:

cd $SOURCEDIR/xxv-<VERSION>/lib
mkdir ~/.cpan
mkdir ~/.cpan/Bundle
cp Bundle/Xxv.pm ~/.cpan/Bundle
perl -MCPAN -e 'install Bundle::Xxv'

Perl Module per Download

Oder eine andere Möglichkeit via Source, auf dem TestPC als Basis Peanut waren es folgende Pakete:

  • 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 für 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 können die Perl Module einfach mit dieser Zeile komplett installiert werden.

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:

mysql -u root -e "create database xxv;"

Danach die Rechte setzen:

mysql -u root -e "grant all privileges on xxv.* to xpix@localhost;"

Die $SOURCEDIR/xxv-<VERSION>/xxvd.cfg ist wie folgt 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 abgespeichert.

# -------------------------------------------

# 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 runlevel aufrufen:

runlevel

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 --configfile=./xxvd.cfg && 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 es aus Sicht von xxv so aussieht, sollte es der Vollständigkeit halber hier aufgelistet werden. Hier werden globale Einstellungen wie Logfilepfad, Datenbankserver usw. aufgelistet.

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 eingelesen und deren Einträge in einer Datenbank abgespeichert.

Manual: http://www.xpix.de/downloads/xxv/doc/EPG.html

Channels

Hier wird die channels.conf eingelesen und deren Einträge 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 Wap Browser (Mobiltelefon) bedienen zu können.

Zur Zeit noch ohne Funktion.

Manual: http://www.xpix.de/downloads/xxv/doc/WAPD.html

Music

Das MusicPlugin stellt eine Medienbibliothek 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 Konfigurations Plugin erlaubt es, während der Laufzeit verschiedene Parameter der Interfaces (HTTP, Telnet, ..) zu verändern und abzuspeichern.

Manual: http://www.xpix.de/downloads/xxv/doc/CONFIG.html

Grab

Grab stellt das Livebild des VDR als JPEG Bilddatei 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 lässt sich der VDR per Interface rudimentär bedienen.

Manual: http://www.xpix.de/downloads/xxv/doc/REMOTE.html

Status

Status stellt alle Systeminformationen in den Interfaces als übersichtliche Darstellung dar.

Manual: http://www.xpix.de/downloads/xxv/doc/STATUS.html

SVDRP

Dieses Plugin stellt alle telnet Befehle der svdrp Schnittstelle des VDR zur Verfügung.

Manual: http://www.xpix.de/downloads/xxv/doc/SVDRP.html

User

Eine Userauthentifikation, die in allen Interfaces 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

Skins installieren

Es ist möglich das Webinterface in einem völlig anderem Aussehen sich darstellen zu lassen. Dafür muss man sich nur einen Skin herunterladen und das Paket im $SOURCEDIR entpacken:

cd $SOURCEDIR
wget http://www.deltab.de/vdr/xxv-stone-0.14g.tgz
tar -zxvf xxv-stone-0.14g.tgz

Danach sollte ein neues Verzeichniss enstanden sein mit dem Namen stone. Anschliessend ruft man das Webinterface von xxv auf (http://ip_deines_vdrs:8080) und stellt den neuen Skin unter Preferences -> HTTPD -> HtmlRoot ein ../stone. Danach SendData und mit F5 das gesamte xxv neu laden.

Natürlich kann man auch die Konfigurationsdatei editieren und einfach xxv neu starten:

cd $SOURCEDIR
nano etc/xxvd.cfg
/etc/init.d/xxvd restart

Probleme

  • im Logfile taucht folgende Warnung auf:
11 (10305) [03:27:27 03.02.2005] [Fatal] Cannot build telnet initial socket.
Du musst eine andere Portnummer fuer den Telnetserver in der xxvd.cfg festlegen. Den Port den du benutzten willst, ist wahrscheinlich schon belegt.


  • im Logfile 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 Meldungen können ignoriert werden. Perl versucht verschiedene Module aufzurufen, um herauszufinden welche es benutzen darf.


  • im Logfile 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 Meldungen können ignoriert werden. Perl versucht per eval eine Methode aufzurufen.

Links

[1] www.mysql.org mySQL
[2] xpix.dieserver.de/content Homepage
[3] xpix.dieserver.de/downloads/xxv Downloads
[4] xpix.dieserver.de/content/vdr/xxv/tutorials Tutorial zum Schreiben eines Plugins für xxv
[5] xpix.dieserver.de/downloads/xxv/skins Skins für xxv
[6] screenshots Etwas ältere Screenshoots