EnglischFranzösischSpanisch

Server ausführen | Ubuntu > | Fedora > |


OnWorks-Favicon

haserl - Online in der Cloud

Führen Sie haserl im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl haserl, der im kostenlosen OnWorks-Hosting-Provider mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME


haserl - Ein cgi-Skriptprogramm für eingebettete Umgebungen

ZUSAMMENFASSUNG


#!/usr/bin/haserl [--Schale=Pfadangabe] [--upload-dir=dirspez] [--Upload-Handler=Handler]
[--upload-limit=begrenzen] [--alle akzeptieren] [--akzeptiere-keine] [--Leise] [--debuggen]

[ Text ] [ <% Shell-Skript %> ] [ Text ] ...

BESCHREIBUNG


Haserl ist ein kleiner cgi-Wrapper, der die cgi-Programmierung im PHP-Stil ermöglicht, aber ein UNIX . verwendet
bash-ähnliche Shell oder Lua als Programmiersprache. Es ist sehr klein, so dass es verwendet werden kann
in eingebetteten Umgebungen oder wo etwas wie PHP zu groß ist.

Es kombiniert drei Funktionen in einer kleinen CGI-Engine:

Es parst POST- und GET-Anfragen und platziert Formularelemente als Name=Wert-Paare in die
Umgebung für das zu verwendende CGI-Skript. Das ist ein bisschen wie die uncgi Verpackung.

Es öffnet eine Shell und übersetzt den gesamten Text in druckbare Anweisungen. Alle Texte
innerhalb von <% ... %> werden Konstrukte wörtlich an die Shell übergeben. Das ist etwas
gerne schreiben PHP Skripte.

Es kann optional installiert werden, um seine Berechtigungen dem Besitzer des Skripts zu überlassen.
Geben Sie ihm einige der Sicherheitsfunktionen von suexec or CGI-Wrapper.

OPTIONAL ZUSAMMENFASSUNG


Dies ist eine Zusammenfassung der Befehlszeilenoptionen. Bitte sehen Sie sich ... an OPTIONAL Abschnitt unter dem
langer Optionsname für eine vollständige Beschreibung.

-a --akzeptiere-alle
-n --accept-none
-d --debug
-s, --Schale
-S, --stumm
-U, --upload-dir
-u, --upload-limit
-H, --Upload-Handler

OPTIONAL


--alle akzeptieren
Das Programm akzeptiert normalerweise nur POST-Daten, wenn REQUEST_METHOD POST ist und
akzeptiert nur Daten zu den URL-Daten, wenn REQUEST_METHOD GET ist. Diese Option
ermöglicht, dass sowohl POST- als auch URL-Daten unabhängig von REQUEST_METHOD akzeptiert werden.
Wenn diese Option gesetzt ist, hat REQUEST_METHOD Vorrang (zB wenn die Methode
ist POST, FORM_variables werden aus COOKIE-Daten, GET-Daten und POST-Daten entnommen, in
diese Bestellung. Wenn die Methode GET ist, werden FORM_variables aus COOKIE-Daten genommen, POST
data und GET data.) Standardmäßig werden nicht alle Eingabemethoden akzeptiert - nur die
COOKIE-Daten und die REQUEST_METHOD.

--akzeptiere-keine
Falls angegeben, parst haserl die Standardeingabe vor der Verarbeitung nicht als http-Inhalt
das Skript. Dies ist nützlich, wenn Sie ein Haserl-Skript von einem anderen Haserl-Skript aus aufrufen.

--debuggen
Anstatt das Skript auszuführen, drucken Sie das auszuführende Skript aus. Wenn
die Umgebungsvariable 'REQUEST_METHOD' ist gesetzt, die Daten werden mit dem
Nur/Text-Inhaltstyp. Andernfalls wird das Shell-Skript wörtlich ausgegeben.

--Schale=Pfadangabe
Geben Sie eine alternative zu verwendende bash-ähnliche Shell an. Standardmäßig auf "/ Bin / sh"

Um Shell-Parameter einzuschließen, verwenden Sie nicht --shell=/ Bin / sh Format. Verwenden Sie stattdessen die
alternatives Format ohne "=", wie in --shell "/ bin / bash --norc".
Anführungszeichen der Optionszeichenfolge, um Sonderzeichen zu schützen.

Wenn mit Lua-Bibliotheken kompiliert, wird die Zeichenfolge "lua" verwendet, um eine integrierte
Lua vm. Bei dieser Zeichenfolge muss die Groß-/Kleinschreibung beachtet werden. Beispiel: --Schale=Mond

Eine Alternative ist "luac". Dadurch werden die Haserl- und Lua-Parser deaktiviert.
und es wird angenommen, dass das Skript ein vorkompilierter Lua-Chunk ist. Sehen LUAC unten für mehr
Informationen.

--Leise
Haserl gibt normalerweise eine Informationsmeldung zu Fehlerzuständen aus. Dies
unterdrückt die Fehlermeldung, sodass die Verwendung von haserl nicht beworben wird.

--upload-dir=dirspez
Standardmäßig auf "/ Tmp". Alle hochgeladenen Dateien werden mit temporären Dateinamen in diesem erstellt
Verzeichnis HASERL_xxx_Pfad enthält den Namen der temporären Datei. FORM_xxx_name
enthält den ursprünglichen Namen der Datei, wie er vom Client angegeben wurde.

--upload-handler=Pfadangabe
Wenn angegeben, werden Datei-Uploads von diesem Handler verarbeitet und nicht geschrieben
temporäre Dateien. Die vollständige Pfadspezifikation muss angegeben werden (der PATH wird nicht durchsucht), und
Der Upload-Handler erhält einen Befehlszeilenparameter: Der Name des FIFO auf
an die die Upload-Datei gesendet wird. Darüber hinaus kann der Handler 3 . erhalten
Umgebungsvariablen: INHALTSTYP, DATEINAMEund NAME. Diese spiegeln das MIME
Content-Disposition-Header für den Inhalt. Haserl wird für jeden den Handler geben
hochgeladenen Datei und sendet den Inhalt der hochgeladenen Datei an das angegebene FIFO.
Haserl blockiert dann, bis der Handler beendet. Diese Methode ist für Experten
nur.

--upload-limit=begrenzen
Erlaube eine mime-codierte Datei bis zu begrenzen KB hochgeladen werden. Die Standardeinstellung ist 0KB Nein
Uploads erlaubt). Beachten Sie, dass die Mime-Codierung die Datengröße um 33 % erhöht.

OVERVIEW OF OPERATION


Im Allgemeinen richtet der Webserver mehrere Umgebungsvariablen ein und verwendet dann Gabel or
eine andere Methode zum Ausführen des CGI-Skripts. Wenn das Skript die verwendet haserl Dolmetscher, der
folgendes passiert:

If haserl wird suid root installiert, dann wird uid/gid auf den Eigentümer des Skripts gesetzt.

Die Umgebung wird gescannt nach HTTP_COOKIE, die möglicherweise vom Web eingestellt wurden
Server. Falls vorhanden, werden die geparsten Inhalte in der lokalen Umgebung platziert.

Die Umgebung wird gescannt nach REQUEST_METHOD, die vom Webserver gesetzt wurde.
Basierend auf der Anfragemethode wird die Standardeingabe gelesen und geparst. Das geparste
Inhalte werden in der lokalen Umgebung platziert.

Das Skript ist tokenisiert und wird geparst haserl Codeblöcke aus Rohtext. Rohtext ist
in "echo"-Anweisungen umgewandelt, und dann werden alle Token an die Sub-Shell gesendet.

haserl Gabeln und eine Unterschale (normalerweise / Bin / sh) ist gestartet.

Alle Token werden an die STDIN der Sub-Shell gesendet, mit einem nachgestellten verlassen Befehl.

Wenn die Unterschale endet, wird die haserl Dolmetscher führt Endreinigung durch und
dann endet.

KLIENT SEITE SPEISUNG


The haserl Interpreter dekodiert Daten, die über die Umgebungsvariable HTTP_COOKIE gesendet werden, und
die GET- oder POST-Methode vom Client und speichern Sie sie als Umgebungsvariablen, die
von haserl abgerufen werden. Der Name der Variablen folgt dem in der Quelle angegebenen Namen,
außer dass ein Präfix ( FORMULAR_) wird vorangestellt. Wenn der Client beispielsweise "foo=bar" sendet,
die Umgebungsvariable ist FORM_foo=Bar.

Bei der Methode HTTP_COOKIE werden Variablen zusätzlich mit dem Präfix ( COOKIE_) hinzugefügt.
Wenn HTTP_COOKIE beispielsweise "foo=bar" enthält, lautet die Umgebungsvariable
COOKIE_foo=Bar.

Bei der GET-Methode werden Daten, die in der Form %xx gesendet werden, in die Zeichen übersetzt, die sie
darstellen, und Variablen werden auch mit dem Präfix ( GET_) hinzugefügt. Zum Beispiel, wenn
QUERY_STRING enthält "foo=bar", die Umgebungsvariable ist GET_foo=Bar.

Bei der POST-Methode werden Variablen zusätzlich mit dem Präfix ( & schalten Sie _) hinzugefügt. Zum
Wenn der Post-Stream beispielsweise "foo=bar" enthält, lautet die Umgebungsvariable POST_foo=Bar.

Auch für die POST-Methode, wenn die Daten mit gesendet werden mehrteilige / Formulardaten Codierung, die
Daten werden automatisch dekodiert. Dies wird normalerweise verwendet, wenn Dateien aus einem Web hochgeladen werden
Client verwendet .

HINWEIS Wenn eine Datei auf den Webserver hochgeladen wird, wird sie im Upload-Verzeichnis
Verzeichnis. FORM_variable_name= enthält den Namen der hochgeladenen Datei (wie
vom Kunden angegeben.) HASERL_variable_path= enthält den Namen der Datei in
Upload-Verzeichnis das den hochgeladenen Inhalt enthält. Um zu verhindern, dass böswillige Clients
Auffüllen Upload-Verzeichnis auf Ihrem Webserver sind Datei-Uploads nur erlaubt, wenn die
--upload-limit Option wird verwendet, um anzugeben, wie groß eine Datei hochgeladen werden kann. Haserl
löscht die temporäre Datei automatisch, wenn das Skript beendet ist. Um das zu behalten
Datei verschieben, verschieben oder irgendwo im Skript umbenennen.

Beachten Sie, dass der Dateiname gespeichert wird in HASERL_variable_pfad Dies liegt daran, dass die FORM_,
Die Variablen GET_ und POST_ können vom Client geändert werden, und ein bösartiger Client kann
setze eine zweite Variable mit dem Namen variable_pfad=/ etc / passwd. Frühere Versionen
habe die Pfadangabe nicht gespeichert in HASERL Namespace. Zu halten rückwärts
Kompatibilität, Name of vorübergehend Datei is ebenfalls gelagert in FORM_Variable= und
POST_variable=. Diese is betrachtet unsicher und sollte nicht be benutzt.

Wenn der Client Daten sendet beide durch POST- und GET-Methoden, dann haserl wird nur die analysieren
Daten, die mit dem korrespondieren REQUEST_METHOD Variable, die vom Webserver gesetzt wird, es sei denn, die
alle akzeptieren Option eingestellt wurde. Zum Beispiel ein Formular, das über die POST-Methode aufgerufen wird, aber a
URI von some.cgi?foo=bar&otherdata=something werden die POST-Daten analysiert und die foo
und andere Daten Variablen werden ignoriert.

Wenn der Webserver a . definiert HTTP_COOKIE Umgebungsvariable werden die Cookie-Daten geparst.
Cookie-Daten werden geparst Bevor die GET- oder POST-Daten, also bei zwei Variablen der
gleichen Namens, überschreiben die GET- oder POST-Daten die Cookie-Informationen.

Wenn mehrere Instanzen derselben Variablen von verschiedenen Quellen gesendet werden, wird die
FORM_variable wird entsprechend der Reihenfolge gesetzt, in der Variablen verarbeitet werden.
HTTP_COOKIE wird immer zuerst verarbeitet, gefolgt von REQUEST_METHOD. Wenn das alles akzeptiere
Option gesetzt wurde, dann wird zuerst HTTP_COOKIE verarbeitet, gefolgt von der Methode not
angegeben durch REQUEST_METHOD, gefolgt von REQUEST_METHOD. Die letzte Instanz des
Variable wird verwendet, um FORM_variable zu setzen. Beachten Sie, dass die Variablen auch separat sind
erstellt als COOKIE_variable, GET_variable und POST_variable. Dies ermöglicht die Verwendung von
überlappende Namen aus jeder Quelle.

Wenn mehrere Instanzen derselben Variablen von derselben Quelle gesendet werden, wird nur die letzte
einer ist gerettet. Um alle Kopien zu behalten (zum Beispiel für Mehrfachauswahlen), füge "[]" am Ende hinzu
des Variablennamens. Alle Ergebnisse werden durch Zeilenumbrüche getrennt zurückgegeben. Zum Beispiel,
host=Enoch&host=Esther&host=Joshua ergibt "FORM_host=Joshua".
host[]=Enoch&host[]Esther&host[]=Joshua ergibt "FORM_host=Enoch\nEsther\nJoshua"

SPRACHE


Folgende Sprachstrukturen werden erkannt von haserl.

RUN
<% [Shell-Skript] %>

Alles, was von <% %>-Tags eingeschlossen ist, wird zur Ausführung an die Sub-Shell gesendet. Der Text
wird wörtlich gesendet.

eNTHALTEN
<%in Pfadspezifikation %>

Fügen Sie eine andere Datei wörtlich in dieses Skript ein. Die Datei ist enthalten, wenn das Skript
wird zunächst geparst.

EVAL
<%= Ausdruck %>

Geben Sie den Shell-Ausdruck aus. Syntaktischer Zucker für "echo expr".

WIE
<%# Kommentar %>

Kommentarblock. Alles in einem Kommentarblock wird nicht geparst. Kommentare können verschachtelt werden
und kann andere haserl-Elemente enthalten.

Beispiele:


WARNUNG
Die folgenden Beispiele sind vereinfacht, um die Verwendung zu veranschaulichen haserl. Du solltest sein
vertraut mit grundlegender Web-Scripting-Sicherheit vor der Verwendung haserl (oder irgendein Skript
Sprache) in einer Produktionsumgebung.

Einfacher Befehl
#!/usr/local/bin/haserl
Inhaltstyp: Text/einfach

<%# Dies ist ein Beispiel für ein "env"-Skript %>
<% env %>

Druckt die Ergebnisse der env Befehl als Mime-Typ "Text/Plain"-Dokument. Das ist
haserl Version des Common printenv cgi.

Schleife mit dynamisch Ausgabe
#!/usr/local/bin/haserl
Inhaltstyp: Text / HTML




<% für a in Rot Blau Gelb Cyan; mach %>
"><% echo -n "$a" %>
<% erledigt %>




Sendet ein "text/html"-Dokument vom Mime-Typ an den Client mit einer HTML-Tabelle von with
Elemente, die mit der Hintergrundfarbe gekennzeichnet sind.

Verwenden Sie unsere Größentabelle, um die Rasse und das Gewicht Ihres Hundes einer der XNUMX verfügbaren Bettgrößen zuzuordnen. Wenn Sie Fragen zur Größe Ihres Hundes haben, können Sie sich gerne mit uns in Verbindung setzen. Schale definiert Funktionen.
#!/usr/local/bin/haserl
Inhaltstyp: Text/html

<% # Definiere eine Benutzerfunktion
Tabellenelement() {
Echo" $1 "
}
%>



<% für a in Rot Blau Gelb Cyan; mach %>
<% table_element $a %>
<% erledigt %>




Wie oben, verwendet jedoch eine Shell-Funktion anstelle von eingebettetem HTML.

Selbst Referenzieren CGI mit a Formular
#!/usr/local/bin/haserl
Inhaltstyp: Text/html


Musterformular
" method="GET">
<% # Führen Sie eine grundlegende Validierung von FORM_textfield durch
# Um allgemeine Webangriffe zu verhindern
FORM_textfield=$( echo "$FORM_textfield" | sed "s/[^A-Za-z0-9 ]//g" )
%>
<input type=text name=textfield
Value="<% echo -n "$FORM_textfield" | tr az AZ %>" cols=20>




Druckt ein Formular. Wenn der Client Text in das Formular eingibt, wird das CGI neu geladen (definiert
by $SCRIPT_NAME) und das Textfeld wird bereinigt, um Web-Angriffe zu verhindern, dann wird das
Das Formular wird mit dem vom Benutzer eingegebenen Text erneut angezeigt. Der Text wird in Großbuchstaben geschrieben.

Uploading a Reichen Sie das
#!/usr/local/bin/haserl --upload-limit=4096 --upload-dir=/ Tmp
Inhaltstyp: Text/html


" method=POST enctype="multipart/form-data" >



<% if test -n "$HASERL_uploadfile_path"; dann %>

Sie haben eine Datei namens <% echo -n $FORM_uploadfile_name %> hochgeladen, und es war
. temporär auf dem Server als gespeichert. Die
Datei war <% cat $HASERL_uploadfile_path | wc -c %> Byte lang.
<% rm -f $HASERL_uploadfile_path %> Keine Sorge, die Datei wurde gerade gelöscht
vom Webserver.
<% sonst %>
Sie haben noch keine Datei hochgeladen.
<% fi %>



Zeigt ein Formular an, das das Hochladen von Dateien ermöglicht. Dies wird erreicht, indem die
--upload-limit und durch Einstellen des Formulars enctyp zu mehrteilige/Formulardaten. Wenn die
Client sendet eine Datei, dann werden einige Informationen zur Datei gedruckt und dann
gelöscht. Andernfalls steht im Formular, dass der Kunde keine Datei hochgeladen hat.

RFC-2616 Konformität
#!/usr/local/bin/haserl
<% echo -en "Inhaltstyp: Text/html\r\n\r\n" %>

realisieren kannst...


Um die HTTP-Spezifikation vollständig zu erfüllen, sollten Header mit beendet werden
CR+LF, anstatt nur die normale Unix-LF-Zeilenterminierung. Die obige Syntax kann
verwendet werden, um RFC 2616-konforme Header zu erstellen.

UMGEBUNG


Zusätzlich zu den vom Webserver geerbten Umgebungsvariablen gibt es folgende
Umgebungsvariablen werden immer beim Start definiert:

HASERLVER
haserl version - ein Informations-Tag.

SESSION-ID
Ein hexadezimales Tag, das für die Lebensdauer des CGI eindeutig ist (es wird generiert, wenn die
cgi startet; und ändert sich nicht, bis eine weitere POST- oder GET-Abfrage generiert wird.)

HASERL_ACCEPT_ALL
Wenn die --alle akzeptieren Flagge wurde gesetzt, -1, Sonst 0.

HASERL_SHELL
Der Name des Shell-Haserl, in dem Sub-Shell-Befehle ausgeführt werden.

HASERL_UPLOAD_DIR
Das Verzeichnis, das haserl verwendet, um hochgeladene Dateien zu speichern.

HASERL_UPLOAD_LIMIT
Die Anzahl der KB, die vom Client an den Server gesendet werden dürfen.

Diese Variablen können innerhalb des Skripts geändert oder überschrieben werden, obwohl die Variablen
beginnend mit "HASERL_" dienen nur zur Information und haben keinen Einfluss auf das laufende Skript.

SICHERHEIT FUNKTIONEN


Es gibt viel Literatur über die Gefahren bei der Verwendung von Shell zum Programmieren von CGI-Skripten.
haserl enthält einige Schutzmaßnahmen, um dieses Risiko zu mindern.

Umwelt Variablen
Der Code zum Auffüllen der Umgebungsvariablen liegt außerhalb des Geltungsbereichs der Unter-
Hülse. Es analysiert die Zeichen? und &, daher ist es für einen Kunden schwieriger, dies zu tun
"Injektions"-Attacken. Als Beispiel, foo.cgi?a=test;cat / etc / passwd könnte dazu führen, dass
einer Variablen wird der Wert zugewiesen Test und dann die Ergebnisse des Laufens Katze
/ etc / passwd an den Kunden gesendet wird. Haserl wird der Variablen das komplette zuweisen
Wert: testen;Katze / etc / passwd

Es ist sicher, diese "gefährliche" Variable in Shell-Skripten zu verwenden, indem Sie sie in einschließen
Zitate; obwohl die Validierung für alle Eingabefelder durchgeführt werden sollte.

Privileg Abwurf
Bei Installation als suid-Skript, haserl setzt seine uid/gid auf die des Besitzers von
das Skript. Dies kann verwendet werden, um eine Reihe von CGI-Skripten mit verschiedenen
Privileg. Wenn die haserl Binär ist nicht suid installiert, dann werden die CGI-Skripte
mit der uid/gid des Webservers ausführen.

Ablehnen Befehl Linie Parameter gegeben on URL
Wenn die URL kein uncodiertes "=" enthält, gibt die CGI-Spezifikation die Optionen an
als Befehlszeilenparameter für das Programm verwendet werden. Zum Beispiel nach
zur CGI-Spezifikation: http://192.168.0.1/test.cgi?--upload-limit%3d2000&foo%3dbar
Sollte zusätzlich zur Einstellung "Foo=bar" das Upload-Limit auf 2000KB setzen. Beschützen
gegen Kunden, die ihre eigenen Uploads ermöglichen, haserl lehnt alle Befehlszeilenoptionen ab
jenseits von argv[2]. Bei Aufruf als #! script, der interpreter ist argv[0], all
Befehlszeilenoptionen, die in der #! line werden zu argv[1] zusammengefasst, und die
Der Skriptname ist argv[2].

MOON


Wenn mit lua-Unterstützung kompiliert, --shell=lua wird stattdessen lua als Skriptsprache aktivieren
der Bash-Shell. Die Umgebungsvariablen (SCRIPT_NAME, SERVER_NAME usw.) werden in
die ENV-Tabelle, und die Formularvariablen werden in der FORM-Tabelle platziert. Zum Beispiel die
Das obige selbstreferenzierende Formular kann wie folgt geschrieben werden:

#!/usr/local/bin/haserl --shell=lua
Inhaltstyp: Text/html


Musterformular
" method="GET">
<% # Führen Sie eine grundlegende Validierung von FORM_textfield durch
# Um allgemeine Webangriffe zu verhindern
FORM.textfield=string.gsub(FORM.textfield, "[^%a%d]", "")
%>
<input type=text name=textfield
Value="<% io.write (string.upper(FORM.textfield)) %>" cols=20>




Der Operator <%= ist syntaktischer Zucker für io.schreiben (tostring( realisieren kannst... )) Also zum Beispiel die
Value= Die obige Zeile könnte geschrieben werden: Wert="<%= string.upper(FORM.Textfeld) %>" spalten=20>

Haserl Lua-Skripte können die Funktion verwenden haserl.loadfile(Dateinamen) ein Ziel bearbeiten
Skript als Haserl (lua) Skript. Die Funktion gibt einen Typ von "Funktion" zurück.

Zum Beispiel,

bar.lsp
<% io.write ("Hallo Welt" ) %>

Ihre Nachricht ist <%= gvar %>

-- Ende der Include-Datei --

foo.haserl
#!/usr/local/bin/haserl --shell=lua
<% m = haserl.loadfile("bar.lsp")
gvar = "Als m() ausführen"
m ()

gvar = "Laden und Ausführen in einem Schritt"
haserl.loadfile("bar.lsp")()
%>

Laufen foo wird herstellen:

Hallo Welt
Ihre Nachricht ist Ausführen als m()
-- Ende der Include-Datei --
Hallo Welt
Ihre Nachricht ist Laden und Ausführen in einem Schritt
-- Ende der Include-Datei --

Diese Funktion ermöglicht verschachtelte Haserl-Serverseiten - Seitenausschnitte
die vom haserl-tokenizer verarbeitet werden.

LUAC


The Luac "shell" ist ein vorkompilierter Lua-Chunk, also interaktives Bearbeiten und Testen von Skripten
Ist nicht möglich. Haserl kann jedoch nur mit luac-Unterstützung kompiliert werden, und dies ermöglicht
lua-Unterstützung auch in einer Umgebung mit kleinem Speicher. Alle oben aufgeführten haserl lua-Funktionen sind
noch verfügbar. (Wenn luac die einzige in haserl eingebaute Shell ist, ist die haserl.loadfile
deaktiviert, da der Haserl-Parser nicht einkompiliert ist.)

Hier ist ein Beispiel für ein triviales Skript, das in ein luac-cgi-Skript umgewandelt wurde:

Angesichts der Datei test.lua:
drucken ("Content-Type: text/plain0)
print ("Ihre UUID für diesen Lauf ist: " .. ENV.SESSIONID)

Es kann mit luac kompiliert werden:
luac -o test.luac -s test.lua

Und dann der Haserl-Header hinzugefügt:
echo '#!/usr/bin/haserl --shell=luac' | Katze - test.luac >luac.cgi

Alternativ ist es möglich, eine komplette Website mit der Standard-lua-Shell zu entwickeln,
und dann haserl selbst die Skripte für den luac-Compiler als Teil von a . vorverarbeiten lassen
Build-Prozess. Verwenden Sie dazu --shell=lua und entwickeln Sie die Website. Wenn es fertig ist zu bauen
der Laufzeitumgebung, fügen Sie die --debug-Zeile zu Ihren lua-Skripten hinzu und führen Sie sie aus
die Ergebnisse in .lua-Quelldateien. Zum Beispiel:

Angesichts des Haserl-Skripts test.cgi:
#!/usr/bin/haserl --shell=lua --debug
Content-Type: text / plain

Ihre UUID für diesen Lauf ist <%= ENV.SESSIONID %>

Vorkompilieren, kompilieren und den Haserl luac-Header hinzufügen:
./test.cgi > test.lua
luac -s -o test.luac test.lua
echo '#!/usr/bin/haserl --shell=luac' | Katze - test.luac >luac.cgi

Verwenden Sie haserl online mit den onworks.net-Diensten


Ad


Ad