Diese Bibliothek dient der Erzeugung von Webseiten innerhalb des Freetz-Webinterface. Einzubinden durch
source /usr/lib/libmodcgi.sh
Diese Schnittstelle ist in Entwicklung und kann sich täglich ändern.
Mithilfe der Funktion cgi
können verschiedene Einstellungen für die
aktuelle Seite vorgenommen werden. cgi
darf nur vor cgi_begin
aufgerufen werden.
Die Optionen sind im Einzelnen:
--style=URI
Das CSS-Stylesheet an der Adresse
URI
wird zusätzlich eingebunden. Diese Option kann mehrfach verwendet werden.
Relative URLs werden relativ zu
/style/
im Freetz-Webinterface ausgewertet. Sollte ein Stylesheet also im Dateisystem unter/usr/share/style/pkg/status.css
abgelegt sein, so kann es über--style=pkg/status.css
eingebunden werden.
--id=ID
Das body-Tag der Seite erhält diese ID; die ID dient außerdem der Auswahl des aktiven Menüpunkts in der Navigation.
--help=PATH
Ein Pfad (beginnend mit “/”), der die Hilfe-Seite zu der aktuellen Seite angibt. (Für das Haupt-Freetz-Interface wird dieser Pfad momentan an http://trac.freetz.org/wiki angehängt.)
Startet eine HTML-Seite im Freetz-Stil. (Vom HTTP-Header über den HTML-Header bis zu Navigationselementen und ähnlichem wird alles geschrieben, was an den Anfang einer Seite gehört.)
Alle Seiten im Freetz-Webinterface sind momentan in ISO-8859-1 (Latin 1) kodiert.
Aufruf:
cgi_begin TITLE
Schließt eine HTML-Seite im Freetz-Stil ab.
Startet einen Abschnitt mit dem Titel TITLE. Wie ein “Abschnitt” im
Detail in der HTML-Ausgabe umgesetzt wird, obliegt dem gewählten Skin;
garantiert wird jedoch ein umgebendes <div class="section">
sec_begin TITLE [ID]
Optional kann eine ID angegeben werden, um sich auf den Abschnitt beziehen zu können. Auf HTML-Ebene wird dies die ID des genannten div-Elements.
Beendet einen Abschnitt.
Diese Funktion HTML-kodiert ihre Eingaben. Kurze Eingaben können als
Argument übergeben werden, bei längeren sollte html
als Filter benutzt
werden:
echo "<input value='$(html "$VALUE")'> ..."
log_output | html
TODO
Erzeugt einen Link zu einer dynamisch registrierten Seite im
Freetz-Webinterface: Die Argumente sind denen von modreg
ähnlich:
href file <pkg> <id>
href extra <pkg> <cgi-name>
href status <pkg> [<cgi-name>]
href cgi <pkg> [<key-value>]...
Typischer Einsatz in einem Paket foo:
cat << EOF
<a href="$(href file foo advanced)">Konfigurationsdatei bearbeiten</a>
EOF
(wenn die Datei vorher per modreg file foo advanced ...
registriert
wurde.)
TODO
TODO
TODO
TODO
cgi_error MESSAGE
print_error MESSAGE
cgi_error
erzeugt eine komplette Fehlerseite (inkl.
cgi_begin/cgi_end) mit der angegeben Meldung. print_error
erzeugt
nur die Fehlermeldung und kann innerhalb einer bestehenden Seite genutzt
werden.
Splits PATH_INFO into segments at “/”; returns the segments in the given variables. If there are not more variables than segments, the final variable will receive the remaining unsplit PATH_INFO.
PATH_INFO=/foo/bar/baz
path_info package id rest
will set
package=foo
id=bar
rest=/baz
Validiert bestimmte Arten von Eingabedaten. Momentan unterstützt:
valid package PACKAGE
Ist wahr, wenn PACKAGE ein gültiger Paket-Name ist.
valid id NAME
Ist wahr, wenn NAME eine gültiger Bezeichner ist (der Dateien, Extras, Status-Seiten innerhalb eines Pakets identifiziert)
Die Prüfung ist momentan recht lax (hauptsächlich nur Schutz gegen
Pfadoperationen wie “.” und “/” im Namen). Die Ausgabe von valid
sollte momentan nicht als Maßstab genommen werden, um gültige Namen zu
konstruieren.