Chapter 5.  Das HTTP-Interface

Table of Contents

Einführung
Der RPN-Bewerter
Die Makros

Einführung

Diese Seite ist nicht vollständig.

Präsentation

VLC enthält einen kleinen HTTP-Server. Er kann zum Streamen über HTTP und für das HTTP-Fernsteuerungsinterface benutzt werden.

Um VLC mit dem HTTP-Interface zu starten, machen Sie folgendes:

% vlc -I http (--http-src /directory/ --http-host host:port)

Das HTTP-Interface wird beginnen, unter host:port (standardmäßig localhost:8080) nach Anfragen zu hören und die Struktur von /directory unter http://host:port / zu reproduzieren (standardmäßig vlc_quell_pfad/share/http).

VLC wird mit einer Reihe von Dateien ausgeliefert, die für übliche Zwecke ausreichend sein sollten. Der Rest dieses Kapitels wird die Wege aufzeigen, diese Seiten dem persönlichen Bedarf anzupassen.

Einige Dateien müssen besonders behandelt werden :

  • Datei, die mit "." beginnen, werden nicht exportiert.

  • Eine '.access'-Datei wird geöffnet werden und das HTTP-Interface wird in der ersten Zeile einen Loginnamen/Passwort (geschrieben als Loginname:Passwort) erwarten. Dieser Loginname/Passwort werden zum Schutz aller Dateien in diesem Verzeichnis benutzt. Bitte beachten Sie, dass nur Dateien in diesem Verzeichnis geschützt werden. (Unterverzeichnisse werden nicht geschützt.)

  • Die Datei <dir>/index.html wird als <Verzeichnis> und <Verzeichnis>/ exportiert, aber nicht als index.html.

Der MIME-Typ wird durch einen Blick an die Dateiendung festgelegt und kann durch eine Einstellungsdatei weder angegeben noch verändert werden. Unbekannte Endungen haben "application/octet-stream" als MIME-Typ.

Sie sollten den Export von großen Dateien vermeiden. Jede Datei wird erst in den Speicher geladen, bevor sie an den Client gesendet wird. Seien Sie also vorsichtig.

VLC-Makros

Jede angeforderte .html/.htm - Seite wird von VLC geparst, bevor sie gesendet wird. Der Parser sucht nach VLC-Makros und führt sie aus oder ersetzt sie. Desweiteren können von der GET-Methode empfangene Argumente ausgeführt werden .

Ein VLC-Makro sieht folgendermaßen aus: <vlc id="Makro-Name" param1="Macro-Parameter1" param2="Makro-Parameters2" />.

"id" ist das einzige zwingend erforderliche Feld, param1 und param2 können präsent sein oder nicht und sind angewiesen auf "id".

Sie sollten darauf achten, dass Sie diese Syntax respektieren müssen, da VLC keine ungültige Syntax mag (diese könnte leicht zu Abstürzen führen).

Beispiele :

Inkorrekt: <vlc id="value" param1="version" > (fehlendes Tag-Ende), <vlc id=value param1="version" /> (fehlende "" )

Gültige Makros sind:

  • control (1 optionaler Parameter)

  • get (2 Parameter)

  • set (2 Parameter)

  • rpn (1 Parameter)

  • if (1 optionaler Parameter)

  • else (ohne Parameter)

  • end (ohne Parameter)

  • value (1 optionaler Parameter)

  • foreach (2 Parameter)

Für fortgeschrittene Makros können Sie diese Werkzeuge benutzen:

  • RPN-Bewerter (siehe Teil 2)

  • Stapel: Der Stapel ist ein Platz, an den Sie Nummern und Zeichenketten schieben und von dort zurückholen können. Er wird mit dem RPN-Bewerter benutzt.

  • Lokale Variablen: Sie können dynamische neue Variablen erzeugen und deren Werte ändern. Einige lokale Variablen sind vordefiniert:

    • url_value : Parameter der URL

    • url_param : 1 wenn url_value nicht leer ist, sonst 0

    • version : die VLC-Version

    • copyright : das VLC-Copyright

Anmerkung: Die Stapel und die lokalen Variablen werden vor der Ausführung der Seite zurückgesetzt.

Der RPN-Bewerter

RPN steht für "umgekehrte polnische Notation" (Reverse Polish Notation)

Einführung

RPN kann merkwürdig aussehen, ist aber ein einfacher und schneller Weg, um Ausdrücke zu schreiben. Es vermeidet außerdem die Benutzung von ( und ).

Anstatt ( 1 + 2 ) * 5 können Sie einfach 1 2 + 5 * schreiben.

Die Idee dahinter ist: Wenn man eine Nummer oder eine Zeichenkette hat, legt man sie auf den Stapel. Wenn man einen Operator (wie +) hat, nimmt man die Argumente vom Stapel, führt die Operatoren aus und legt das Ergebnis wieder auf den Stapel. Das Ergebnis der RPN-Sequenz ist der oberste Wert des Stapels.

 stack:                         Wort verarbeitet
 empty      1                   1 wird auf dem Stapel abgelegt
 1          2                   2 dito
 1 | 2      +                   + : 1 und 2 entfernen und 3 auf dem Stapel ablegen
 3          5                   5 wird auf dem Stapel abgelegt
 3 | 5      *                   * : 3 und 5 entfernen und 15 schreiben
 15                             <- Ergebnis

Die Operatoren

Notation: ST(1) meint das erste Stapelelement, ST(2) das zweite, usw. und op den Operator

Sie haben Zugriff auf:

  • Die artithmetrischen Standardoperatoren: +, -, /, %: Diese legen das Ergebnis von ST(1) op ST(2) auf den Stapel

  • Die binären Operatoren: ! (bearbeitet !ST(1)); ^, &, | : legen das Ergebnis von ST(1) op ST(2) ab

  • Tests: =, <, <=, >, >= : führen ST(1) op ST(2) aus und legen -1 ab, wenn das Ergebnis wahr oder 0 wenn nicht

  • Zeichenketten: strcat legt das Ergebnis von 'ST(1)ST(2)' ab, strcmp vergleicht ST(1) und ST(2) und legt -1 ab, wenn ST(1)<ST(2), 0 wenn sie gleich sind und 1, wenn nicht. strlen legt die Länge von ST(1) ab.

  • Manipulation des Stapels: dup verdoppelt ST(1), drop entfernt ST(1), swap vertauscht ST(1) und ST(2) und flush leert den Stapel.

  • Manipulation von Variablen: store speichert ST(2) in einer lokalen Variable namens ST(1), value legt den Wert der Variablen namens ST(1) ab und url_extract legt den Wert des ST(1)-Teils der URL-Parameter ab.

Die Makros

Das control-Makro

Wenn Sie eine Seite abrufen, können Sie dieser Argumente durch die URL geben. Beispielsweise: http://host:port/page.html?var=value&var2=value2&... Das "control"-Makro gibt einer Seite Bescheid, diese Argumente zu parsen und die erlaubten auszuführen. param1 dieses Makros sagt aus, welche Befehle erlaubt sind. Wenn es leer ist, sind alle Befehle erlaubt.

Einige Befehle benötigen ein Argument, welches auch über die URL mitgegeben werden muss.

Table 5.1.  Die URL-Befehle

NameArgument> Beschreibung
play> Objekt (Ganzzahl) > Gibt das angegebene Wiedergabelistenobjekt wieder
stop > Stopp
pause Pause
next > Zum nächsten Wiedergabelistenobjekt gehen
previous > Zum vorherigen Wiedergabelistenobjekt gehen
add> mrl (Zeichenkette) > Fügt eine MRL (Media Resource Locator) der Wiedergabeliste hinzu
delete> Objekt (Ganzzahl) > Löscht das angegebene Wiedergabelistenobjekt oder die angegebene Liste
empty > Leert die Wiedergabeliste
close ID (hexadezimal) > Schließt die angegebene Verbindung
shutdown > VLC beenden

Beispielsweise können Sie die Ausführung des shutdown-Befehls auf geschützte Seiten (durch eine .access-Datei) beschränken, in dem Sie das control-Makro in allen ungeschützten Seiten benutzen.

Das get-Makro

Dies Makro wird durch den Wert der Einstellungsvariablen ersetzt, die param1 gespeichert ist und deren Typ durch param2 bestimmt wird.

param1 muss der Name einer existierenden Einstellungsvariablen sein. param2 muss der richtige Typ der Variablen sein. Dies kann einer der folgenden sein: int (Ganzzahl), float (Fließkommazahl) oder string (Zeichenkette).

Beispiel: <vlc id="get" param1="sout" param2="string" /> wird in der ausgegebenen Seite durch den Wert von sout ersetzt.

Das set-Makro

Dieses Makro erlaubt Ihnen den Wert einer Konfigurationsvariablen einzustellen. Der Name wird über param1 und der Typ param2 gesteuert (wie bei get). Der Wert wird der URL, über den in param1 angegebenen Namen, entnommen.

Zum Beispiel: Wenn player.html <vlc id="set" param1="sout" param2="string" /> enthält und die URL http://host:ip/player.html?sout=sout_value ist, wird die sout-Variable den Wert "sout_value" erhalten. Wenn die URL nicht sout enthält, wird nichts geschehen.

Das rpn-Makro

Dieses Makro erlaubt Ihnen RPN-Befehle (siehe II) auszuwerten.

Das Makro if,else,end

Dieses Makro erlaubt Ihnen das Parsen der HTML-Seite zu kontrollieren.

Wenn param1 nicht leer ist, wird es mit dem RPN-Bewerter ausgeführt. Wenn das erste Element auf dem Stapel nicht 0 ist, ist der Testwert wahr, sonst unwahr .

 <vlc id="if" param1="1 2 =" />
    <!-- Nicht erreicht -->
 <vlc id="else" />
    <p> Test erfolgreich: 1 ist nicht gleich mit 2 </p>
 <vlc id="end" />

Sie können auch einfach "if" und "end" benutzen.

Das value-Makro

Wenn param1 nicht leer ist, wird es über den RPN-Bewerter ausgeführt. Das Makro ersetzt den Wert des ersten Elements des Stapels.

Beachten Sie: Wenn das Element der Name einer lokalen Variable ist, wird deren Wert und nicht ihr Name angezeigt.

Das foreach,end Makro

param1 ist der Name der Variable, die für die Schleife benutzt wird. param2 ist der Name der Variable, deren Werte benutzt werden:

  • integer: nimmt das erste Element des Stapels um ein Set von Ganzzahlen zu erzeugen. Das Stapelelement sollte folgendermaßen aussehen: erste:letzte[:Schritt][,erste2:letzte2[:Schritt2][,...] (Beispiel: 1:5:2,6:8:1 wird zu 1,3,5,6,7,8)

  • directory: nimmt das erste Element des Stapels als Ausgangsverzeichnis und erzeugt ein Set von Dateinamen direkt darin. Jedes Element hat die folgenden Felder:

    • name: Name der Datei/des Verzeichnisses

    • type: "directory" (Verzeichnis) oder "file" (Datei) oder "unknown" (unbekannt)

    • size: die Größe der Datei

    • date: das Datum

  • playlist: ein auf der Wiedergabeliste mit folgenden Feldern basierendes Set: current ist 1, wenn das Objekt derzeit ausgewählt ist, sonst 0. index ist der Index-Wert, der von den play oder delete - Befehlen benutzt werden kann. name ist der Name des Objekts .

  • "informations": Erzeugt Informationen für den derzeit abgespielten Stream. name ist der Name der Kategorie, value ist dessen Wert, info ist ein neues Set, dass Sie erneut parsen können (Unterfelder von info sind name und value).

  • "hosts": Erzeugt eine Liste von hörenden Hosts. Enthält die "id" (interne ID), host, ip und port-Felder.

  • "urls": Erzeugt eine Liste der derzeit verfügbaren URLs. Felder sind id, stream (1 wenn wir einen Stream haben, sonst 0), url, mime, protected (1 wenn geschützt, sonst 0), used (wird es derzeit benutzt?).

  • "connections": Erzeugt eine Liste der derzeitigen Verbindungen. Die Felder sind: id, eine interne ID, die mit dem close-Befehl benutzt werden kann, ip, url und status (HTTP-Fehlercode).

  • Der Name einer foreach-Variablen, wenn es ein Set von eingestellten Werten ist.

    ;<vlc id="foreach" param1="cat" param2="informations" />
                    <p> <vlc id="value" param1="cat.name" />
                    <ul>
                    <vlc id="foreach" param1="info" param2="cat.info" />
                        <li>
                        <vlc id="value" param1="info.name" /> :
                                <vlc id="value" param1="info.value" />
                        </li>
                    <vlc id="end" />
                    </ul>
                <vlc id="end" />
    

Schauen Sie für weitere Details in das share/http - Verzeichnis der Quellen von VLC...