EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

haserl – Online in der Cloud

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

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

PROGRAMM:

NAME/FUNKTION


haserl – Ein CGI-Skriptprogramm für eingebettete Umgebungen

ZUSAMMENFASSUNG


#!/usr/bin/haserl [--shell=Pfadangabe] [--upload-dir=dirspez] [--upload-handler=Handler]
[--upload-limit=begrenzen] [--akzeptiere alle] [--accept-none] [--still] [--debuggen]

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

BESCHREIBUNG


Haserl ist ein kleiner CGI-Wrapper, der CGI-Programmierung im „PHP“-Stil ermöglicht, aber UNIX verwendet
Bash-ähnliche Shell oder Lua als Programmiersprache. Es ist sehr klein und kann daher verwendet werden
in eingebetteten Umgebungen oder dort, wo etwas wie PHP zu groß ist.

Es vereint drei Funktionen in einer kleinen CGI-Engine:

Es analysiert POST- und GET-Anfragen und platziert Formularelemente als Name=Wert-Paare in der
Umgebung, in der das CGI-Skript verwendet werden soll. Das ähnelt in etwa dem 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
wie das Schreiben PHP Skripte.

Es kann optional installiert werden, um seine Berechtigungen auf den Eigentümer des Skripts zu übertragen.
Geben Sie ihm einige der Sicherheitsfunktionen von suexec or cgiwrapper.

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 --accept-all
-n --accept-none
-d --debug
-s, --shell
-S, --silent
-U, --upload-dir
-u, --upload-limit
-H, --upload-handler

OPTIONAL


--alle akzeptieren
Das Programm akzeptiert POST-Daten normalerweise nur, wenn REQUEST_METHOD POST ist und
Akzeptiert nur Daten zu den URL-Daten, wenn REQUEST_METHOD GET ist. Diese Option
Ermöglicht die Annahme von POST- und URL-Daten unabhängig von der REQUEST_METHOD.
Wenn diese Option gesetzt ist, hat REQUEST_METHOD Vorrang (z. B. wenn die Methode
ist POST, FORM_Variablen werden aus COOKIE-Daten, GET-Daten und POST-Daten entnommen
dieser Befehl. Wenn die Methode GET ist, werden FORM_Variablen aus COOKIE-Daten, POST, entnommen
Daten und GET-Daten.) Standardmäßig werden nicht alle Eingabemethoden akzeptiert, sondern nur die
COOKIE-Daten und die REQUEST_METHOD.

--accept-none
Wenn angegeben, analysiert haserl die Standardeingabe vor der Verarbeitung nicht als http-Inhalt
das Drehbuch. 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 Skript aus, das ausgeführt werden soll. Wenn
Ist die Umgebungsvariable „REQUEST_METHOD“ gesetzt, werden die Daten mitgesendet
Nur-Text-Inhaltstyp. Andernfalls wird das Shell-Skript wörtlich gedruckt.

--Schale=Pfadangabe
Geben Sie eine alternative Bash-ähnliche Shell an, die verwendet werden soll. Standardmäßig ist „/ 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". Unbedingt tun
Setzen Sie die Optionszeichenfolge in Anführungszeichen, um etwaige Sonderzeichen zu schützen.

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

Eine Alternative ist „luac“. Dadurch werden die Haserl- und Lua-Parser deaktiviert.
und es wird davon ausgegangen, dass das Skript ein vorkompilierter Lua-Block ist. Sehen LUAC unten für mehr
Informationen.

--Leise
Haserl gibt normalerweise eine Informationsmeldung zu Fehlerbedingungen aus. Das
unterdrückt die Fehlermeldung, sodass die Verwendung von Haserl nicht angekündigt wird.

--upload-dir=dirspez
Standardmäßig ist „/ Tmp". Alle hochgeladenen Dateien werden dabei mit einem temporären Dateinamen erstellt
Verzeichnis HASERL_xxx_path enthält den Namen der temporären Datei. FORM_xxx_name
enthält den ursprünglichen Namen der Datei, wie vom Client angegeben.

--upload-handler=Pfadangabe
Wenn angegeben, werden Datei-Uploads von diesem Handler verarbeitet und nicht in ihn geschrieben
temporäre Dateien. Die vollständige Pfadangabe muss angegeben werden (der PATH wird nicht durchsucht) und
Dem Upload-Handler wird ein Befehlszeilenparameter übergeben: Der Name des FIFO auf
an welches die Upload-Datei gesendet wird. Zusätzlich kann der Hundeführer 3 erhalten
Umgebungsvariablen: INHALTSTYP, DATEINAME und NAME/FUNKTION. Diese spiegeln den MIME wider
Content-Disposition-Header für den Inhalt. Haserl wird für jeden den Handler abzweigen
hochgeladene Datei und sendet den Inhalt der Upload-Datei an den angegebenen FIFO.
Haserl blockiert dann, bis der Handler beendet wird. Diese Methode ist für Experten
nur.

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

Überblick OF OPERATION


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

If haserl Wenn suid root installiert ist, wird uid/gid auf den Besitzer des Skripts gesetzt.

Die Umgebung wird gescannt HTTP_COOKIE, die möglicherweise vom Internet festgelegt wurde
Server. Wenn es vorhanden ist, werden die analysierten Inhalte in der lokalen Umgebung platziert.

Die Umgebung wird gescannt REQUEST_METHOD, die vom Webserver festgelegt wurde.
Basierend auf der Anforderungsmethode wird die Standardeingabe gelesen und analysiert. Das analysierte
Inhalte werden in der lokalen Umgebung platziert.

Das Skript ist tokenisiert und wird analysiert 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 mit einem Trailing an die STDIN der Sub-Shell gesendet wunsch Befehl.

Wenn die Sub-Shell beendet wird, wird die haserl Der Interpreter führt die endgültige Bereinigung durch und
endet dann.

KLIENT SIDE SPEISUNG


Das haserl Der Interpreter dekodiert die über die Umgebungsvariable HTTP_COOKIE gesendeten Daten und
B. die GET- oder POST-Methode vom Client, und speichern Sie sie als Umgebungsvariablen, die dies können
kann über haserl aufgerufen 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.

Für die HTTP_COOKIE-Methode werden Variablen auch 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 in der Form %xx gesendete Daten in die Zeichen übersetzt, die sie enthalten
darstellen, und Variablen werden auch mit dem Präfix ( BESTELLE_) hinzugefügt. Zum Beispiel, wenn
QUERY_STRING enthält „foo=bar“, die Umgebungsvariable GET_foo=Bar.

Für die POST-Methode werden Variablen auch mit dem Präfix ( jetzt lesen_) hinzugefügt. Für
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 dem Internet hochgeladen werden
Client verwendet .

HINWEIS Wenn eine Datei auf den Webserver hochgeladen wird, wird sie dort gespeichert Upload-Verzeichnis
Verzeichnis. FORM_variable_name= enthält den Namen der hochgeladenen Datei (als
vom Kunden vorgegeben.) HASERL_variable_path= enthält den Namen der Datei in
Upload-Verzeichnis das den hochgeladenen Inhalt enthält. Um böswillige Clients davon abzuhalten
Auffüllen Upload-Verzeichnis Auf Ihrem Webserver sind Datei-Uploads nur dann zulässig, wenn die
--upload-limit Mit der Option wird angegeben, 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 kopieren, verschieben oder irgendwo im Skript umbenennen.

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

Wenn der Client Daten sendet beide dann durch POST- und GET-Methoden haserl wird nur die analysieren
Daten, die mit dem übereinstimmen REQUEST_METHOD Vom Webserver festgelegte Variable, es sei denn, die
akzeptiere alle Option wurde eingestellt. Zum Beispiel ein Formular, das über die POST-Methode aufgerufen wird, aber über eine
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 analysiert.
Cookie-Daten werden analysiert Bevor die GET- oder POST-Daten, also im Falle von zwei Variablen der
Wenn Sie denselben Namen haben, ü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 festgelegt, in der Variablen verarbeitet werden.
HTTP_COOKIE wird immer zuerst verarbeitet, gefolgt von REQUEST_METHOD. Wenn die alles akzeptieren
Wenn die Option gesetzt wurde, 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 festzulegen. 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 Instanz gesendet
einer ist gerettet. Um alle Kopien beizubehalten (z. B. bei Mehrfachauswahl), fügen Sie 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


Die folgenden Sprachstrukturen werden von erkannt haserl.

RENNE
<% [Shell-Skript] %>

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

eNTHALTEN
<%in pathspec %>

Fügen Sie eine weitere Datei wörtlich in dieses Skript ein. Die Datei ist im Skript enthalten
wird zunächst analysiert.

EVAL
<%= Ausdruck %>

Gibt den Shell-Ausdruck aus. Syntaktischer Zucker für „echo expr“.

WIE
<%# Kommentar %>

Kommentarblock. Alles in einem Kommentarblock wird nicht analysiert. 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
Machen Sie sich vor der Verwendung mit der grundlegenden Web-Scripting-Sicherheit vertraut haserl (oder irgendein Skript
Sprache) in einer Produktionsumgebung.

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

<%# Dies ist ein Beispiel-Skript „env“ %>
<% env %>

Druckt die Ergebnisse der env Befehl als Mime-Dokument vom Typ „Text/Plain“. 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 die Schale definiert Funktionen.
#!/usr/local/bin/haserl
Inhaltstyp: Text/HTML

<% # Definieren Sie eine Benutzerfunktion
table_element() {
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 unten stehende Formular
#!/usr/local/bin/haserl
Inhaltstyp: Text/HTML


Musterformular
" method="GET">
<% # Führen Sie eine grundlegende Validierung von FORM_textfield durch
# Um häufige 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 Webangriffe zu verhindern
Das Formular wird erneut mit dem vom Benutzer eingegebenen Text 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 mit dem Namen <% echo -n $FORM_uploadfile_name %> hochgeladen, und das war es auch
. vorübergehend auf dem Server gespeichert als . Der
Datei war <% cat $HASERL_uploadfile_path | wc -c %> Bytes 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 durch die Verwendung von erreicht
--upload-limit und durch Festlegen des Formulars enctyp zu mehrteilige/Formulardaten. Besitzt das
Der Client sendet eine Datei, dann werden einige Informationen zur Datei gedruckt und dann
gelöscht. Andernfalls wird im Formular angegeben, dass der Kunde keine Datei hochgeladen hat.

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

...


Um der HTTP-Spezifikation vollständig zu entsprechen, sollten Header mit abgeschlossen werden
CR+LF, statt nur der normalen Unix-LF-Leitungsterminierung. Die obige Syntax kann
zur Erstellung von RFC 2616-konformen Headern verwendet werden.


Zusätzlich zu den vom Webserver geerbten Umgebungsvariablen Folgendes
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 das
CGI startet; und ändert sich erst, wenn eine weitere POST- oder GET-Abfrage generiert wird.)

HASERL_ACCEPT_ALL
Besitzt das --alle akzeptieren Flagge wurde gesetzt, -1, Sonst 0.

HASERL_SHELL
Der Name der Shell, in der Haserl mit der Ausführung von Sub-Shell-Befehlen begonnen hat.

HASERL_UPLOAD_DIR
Das Verzeichnis, in dem Haserl die hochgeladenen Dateien speichert.

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
Beginnend mit „HASERL_“ dienen nur Informationszwecken und haben keinen Einfluss auf das laufende Skript.

SICHERHEIT MERKMALE


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

Arbeitsumfeld Variablen
Der Code zum Füllen der Umgebungsvariablen liegt außerhalb des Geltungsbereichs des Sub-
Hülse. Es analysiert die Charaktere? und &, daher ist es für einen Kunden schwieriger, dies zu tun
„Injektions“-Angriffe. 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 weist der Variablen die Vollständigkeit zu
Wert: Test;Katze / etc / passwd

Es ist sicher, diese „gefährliche“ Variable in Shell-Skripten zu verwenden, indem man sie einschließt
Zitate; Allerdings sollte die Validierung für alle Eingabefelder erfolgen.

Privileg Abwurf
Bei Installation als Suid-Skript, haserl setzt seine UID/GID auf die des Besitzers von
das Drehbuch. Dies kann verwendet werden, um eine Reihe von CGI-Skripten mit verschiedenen Funktionen zu erstellen
Privileg. Wenn die haserl Binärdatei nicht suid installiert ist, werden die CGI-Skripte dies tun
mit der UID/GID des Webservers ausführen.

Ablehnen Befehl Linie Parameter gegeben on URL
Wenn die URL kein unverschlüsseltes „=" enthält, sind die Optionen in der CGI-Spezifikation angegeben
sollen als Befehlszeilenparameter für das Programm verwendet werden. Beispielsweise gem
zur CGI-Spezifikation: http://192.168.0.1/test.cgi?--upload-limit%3d2000&foo%3dbar
Zusätzlich zur Einstellung „Foo=bar“ sollte das Upload-Limit auf 2000 KB festgelegt werden. Beschützen
gegen Kunden, die ihre eigenen Uploads ermöglichen, haserl lehnt alle Befehlszeilenoptionen ab
jenseits von argv[2]. Bei Aufruf als #! Skript, der Interpreter ist argv[0], alle
Befehlszeilenoptionen, die im #! aufgeführt sind Zeile 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 platziert
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 häufige 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.write (tostring( ... )) Also zum Beispiel die
Value= Zeile oben könnte geschrieben werden: Wert="<%= string.upper(FORM.textfield) %>" cols=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 „Funktion“ zurück.

Zum Beispiel,

bar.lsp
<% io.write ("Hello World" ) %>

Ihre Nachricht lautet <%= 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 = „In einem Schritt laden und ausführen“
haserl.loadfile("bar.lsp")()
%>

Laufen foo wird herstellen:

Hallo Welt
Ihre Nachricht lautet „Als m() ausführen“
-- Ende der Include-Datei --
Hallo Welt
Ihre Nachricht lautet „In einem Schritt laden und ausführen“.
-- Ende der Include-Datei --

Diese Funktion ermöglicht verschachtelte Haserl-Serverseiten – Seitenausschnitte
die vom Haserl-Tokenizer verarbeitet werden.

LUAC


Das 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, was dies zulässt
Lua-Unterstützung auch in einer kleinen Speicherumgebung. Alle oben aufgeführten Haserl-Lua-Funktionen sind
noch verfügbar. (Wenn luac die einzige in haserl integrierte Shell ist, ist dies die Datei haserl.load
deaktiviert, da der Haserl-Parser nicht einkompiliert ist.)

Hier ist ein Beispiel für ein triviales Skript, konvertiert in ein Luac-CGI-Skript:

Angesichts der Datei test.lua:
print ("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 wurde der Haserl-Header hinzugefügt:
echo '#!/usr/bin/haserl --shell=luac' | cat - test.luac >luac.cgi

Alternativ ist es möglich, eine komplette Website mit der Standard-Lua-Shell zu entwickeln.
und lassen Sie dann Haserl selbst die Skripte für den Luac-Compiler als Teil von a vorverarbeiten
Build-Prozess. Verwenden Sie dazu --shell=lua und entwickeln Sie die Website. Wenn Sie zum Bauen bereit sind
Fügen Sie in der Laufzeitumgebung die Zeile „--debug“ 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' | cat - test.luac >luac.cgi

Nutzen Sie Haserl online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad