EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

haproxy-lua – Online in der Cloud

Führen Sie haproxy-lua 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 haproxy-lua, 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


haproxy-lua – haproxy-lua-Dokumentation

HAPROXY MOON LAUFEN KONTEXTE


Der in HAProxy ausgeführte Lua-Code kann in zwei Hauptmodi verarbeitet werden. Der erste ist der
Initialisierung Modus, und das zweite ist das Laufzeit Modus.

· Im Initialisierung Modus, können wir DNS-Lösungen durchführen, aber wir können keine Socket-I/O durchführen.
In diesem Initialisierungsmodus blockierte HAProxy immer noch während der Ausführung von Lua


· Im Laufzeit Modus, können wir keine DNS-Lösungen durchführen, aber wir können Sockets verwenden. Der
Die Ausführung des Lua-Codes erfolgt im Multiplex mit der Anforderungsverarbeitung, also dem Lua-Code
Scheint blockiert zu werden, aber das ist nicht der Fall.

Der Lua-Code wird in eine oder mehrere Dateien geladen. Diese Dateien enthalten den Hauptcode und die Hauptfunktionen.
Lua hat 6 Ausführungskontexte.

1. Die Lua-Datei Körper Kontext. Es wird beim Laden der Lua-Datei im ausgeführt
HAProxy [global] Abschnitt mit der Richtlinie lua-load. Es wird bei der Initialisierung ausgeführt
Modus. Dieser Abschnitt dient zum Konfigurieren von Lua-Bindungen in HAProxy.

2. Die Lua init Kontext. Es handelt sich um eine Lua-Funktion, die direkt nach dem HAProxy ausgeführt wird
Konfigurationsanalyse. Die Ausführung erfolgt im Initialisierungsmodus. In diesem Zusammenhang die
Die HAProxy-Umgebung ist bereits initialisiert. Es ist nützlich, die Konfiguration zu überprüfen, oder
Initialisieren von Socket-Verbindungen oder Aufgaben. Diese Funktionen werden im Hauptteil deklariert
Zusammenhang mit der Lua-Funktion core.register_init(). Der Prototyp der Funktion ist a
einfache Funktion ohne Rückgabewert und ohne Parameter, etwa so: Funktion fcn().

3. Die Lua Auftrag Kontext. Es handelt sich um eine Lua-Funktion, die nach dem Start des HAProxy ausgeführt wird
Scheduler und direkt nach der Deklaration der Aufgabe mit der Lua-Funktion
core.register_task(). Dieser Kontext kann gleichzeitig mit der Verkehrsverarbeitung erfolgen. Es ist
im Laufzeitmodus ausgeführt. Der Prototyp der Funktion ist eine einfache Funktion ohne
Rückgabewert und ohne Parameter, etwa so: Funktion fcn().

4. Das Aktion Kontext. Es handelt sich um eine Lua-Funktion, die bedingt ausgeführt wird. Diese Aktionen sind
registriert durch die Lua-Richtlinien "core.register_action()". Der Prototyp der Lua
Die aufgerufene Funktion ist eine Funktion, die nichts zurückgibt und ein Objekt von annimmt
Klasse TXN als Eintrag. Funktion fcn(txn).

5. Das Beispielabruf Kontext. Diese Funktion verwendet ein TXN-Objekt als Eingabeargument und
gibt einen String zurück. Diese Funktionstypen können keine Sperrfunktion ausführen. Sie
sind nützlich, um einige der ursprünglichen HAProxy-Beispielabrufe zusammenzufassen und das Ergebnis zurückzugeben.
Der Prototyp der Funktion ist Funktion Schnur fcn(txn). Diese Funktionen können sein
mit der Lua-Funktion registriert core.register_fetches(). Jeder deklarierte Sample-Abruf ist
mit der vorangestellten Zeichenfolge „lua.“

HINWEIS: Möglicherweise kann diese Funktion die erforderlichen Daten im Original nicht finden
HAProxy ruft Stichproben ab. In diesem Fall kann das Ergebnis nicht zurückgegeben werden. Dieser Fall liegt noch nicht vor
unterstützt

6. Das Konverter Kontext. Es handelt sich um eine Lua-Funktion, die einen String als Eingabe akzeptiert und zurückgibt
eine weitere Zeichenfolge als Ausgabe. Diese Art von Funktion ist zustandslos, auf sie kann nicht zugegriffen werden
jeden Kontext. Sie üben keine Sperrfunktion aus. Der Aufrufprototyp ist Funktion
Schnur fcn(string). Diese Funktion kann mit der Lua-Funktion registriert werden
core.register_converters(). Jedem deklarierten Konverter wird die Zeichenfolge „lua.“ vorangestellt.

HAPROXY MOON HALLO WELT


HAProxy-Konfigurationsdatei (hello_world.conf):

globale
lua-load hello_world.lua

Hören Sie sich den Proxy an
127.0.0.1:10001 binden
tcp-request inspect-delay 1s
TCP-Anforderungsinhaltsnutzungsdienst lua.hello_world

HAProxy Lua-Datei (hello_world.lua):

core.register_service("hello_world", "tcp", function(applet)
applet:send("Hallo Welt\n")
Ende)

So starten Sie HAProxy zum Testen dieser Konfiguration:

./haproxy -f hello_world.conf

Auf einem anderen Terminal können Sie mit Telnet testen:

#:~ Telnet 127.0.0.1 10001
Hallo Welt

Klasse Kern()
Die Klasse „Kern“ enthält alle HAProxy-Kernfunktionen. Diese Funktionen sind nützlich
für die Steuerung des Ausführungsflusses, die Registrierung von Hooks und die Manipulation globaler Karten
oder ACL, ...

Die „Kern“-Klasse wird grundsätzlich mit HAProxy bereitgestellt. NEIN erfordern Linie ist erforderlich
nutzt diese Funktion.

Die Klasse „Kern“ ist statisch, es ist nicht möglich, ein neues Objekt dieses Typs zu erstellen.

core.emerg

Rücksendungen
ganze Zahl

Dieses Attribut ist eine Ganzzahl, es enthält den Wert des Loglevels „Emergency“.
(0).

core.alert

Rücksendungen
ganze Zahl

Dieses Attribut ist eine Ganzzahl, es enthält den Wert des Loglevels „alert“ (1).

core.crit

Rücksendungen
ganze Zahl

Dieses Attribut ist eine Ganzzahl, es enthält den Wert des Loglevels „critical“ (2).

core.err

Rücksendungen
ganze Zahl

Dieses Attribut ist eine Ganzzahl, es enthält den Wert des Loglevels „error“ (3).

Kernwarnung

Rücksendungen
ganze Zahl

Dieses Attribut ist eine Ganzzahl, es enthält den Wert des Loglevels „Warnung“ (4).

core.notice

Rücksendungen
ganze Zahl

Dieses Attribut ist eine Ganzzahl, es enthält den Wert des Loglevels „notice“ (5).

core.info

Rücksendungen
ganze Zahl

Dieses Attribut ist eine Ganzzahl, es enthält den Wert des Loglevels „info“ (6).

core.debug

Rücksendungen
ganze Zahl

Dieses Attribut ist eine Ganzzahl, es enthält den Wert des Loglevels „debug“ (7).

core.log(loglevel, Nachricht)
Kontext: Körper, Init, Aufgabe, Aktion, Beispielabruf, Konverter

Diese Funktion sendet ein Protokoll. Das Protokoll wird entsprechend dem HAProxy gesendet
Konfigurationsdatei, auf dem Standard-Syslog-Server, falls dieser konfiguriert ist, und auf dem
stderr, wenn es erlaubt ist.

Argumente

· loglevel (ganze Zahl) – Ist die Protokollebene, die der Nachricht zugeordnet ist. es ist ein
Zahl zwischen 0 und 7.

· msg (Schnur) – Der Protokollinhalt.

See core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (Definitionen der Protokollebene)

See code.Debug

See core.Info

See core.Warnung

See core.Alert

core.Debug(Nachricht)
Kontext: Körper, Init, Aufgabe, Aktion, Beispielabruf, Konverter

Argumente

· msg (Schnur) – Der Protokollinhalt.

See Log

Erfüllt die gleiche Aufgabe wie:

Funktion Debuggen(Nachricht)
core.log(core.debug, msg)
Ende

core.Info(Nachricht)
Kontext: Körper, Init, Aufgabe, Aktion, Beispielabruf, Konverter

Argumente

· msg (Schnur) – Der Protokollinhalt.

See Log

Funktion Info(Nachricht)
core.log(core.info, msg)
Ende

core.Warnung(Nachricht)
Kontext: Körper, Init, Aufgabe, Aktion, Beispielabruf, Konverter

Argumente

· msg (Schnur) – Der Protokollinhalt.

See Log

Funktion Warnung(Nachricht)
core.log(core.warning, msg)
Ende

core.Alert(Nachricht)
Kontext: Körper, Init, Aufgabe, Aktion, Beispielabruf, Konverter

Argumente

· msg (Schnur) – Der Protokollinhalt.

See Log

Funktion Aufmerksam(Nachricht)
core.log(core.alert, msg)
Ende

core.add_acl(Dateiname, Schlüssel)
Kontext: init, Aufgabe, Aktion, Beispielabruf, Konverter

Fügen Sie die ACL hinzu Schlüssel in der ACL-Liste, auf die die Datei verweist Dateinamen.

Argumente

· Dateinamen (Schnur) – der Dateiname, der auf die ACL-Einträge verweist.

· Schlüssel (Schnur) – der Schlüssel, der hinzugefügt wird.

core.del_acl(Dateiname, Schlüssel)
Kontext: init, Aufgabe, Aktion, Beispielabruf, Konverter

Löschen Sie den ACL-Eintrag, auf den der Schlüssel verweist Schlüssel in der Liste der ACLs, auf die verwiesen wird
Dateinamen.

Argumente

· Dateinamen (Schnur) – der Dateiname, der auf die ACL-Einträge verweist.

· Schlüssel (Schnur) – der Schlüssel, der gelöscht wird.

core.del_map(Dateiname, Schlüssel)
Kontext: init, Aufgabe, Aktion, Beispielabruf, Konverter

Löschen Sie den mit dem angegebenen Schlüssel indizierten Karteneintrag in der Liste der referenzierten Karten
durch seinen Dateinamen.

Argumente

· Dateinamen (Schnur) – der Dateiname, der auf die Karteneinträge verweist.

· Schlüssel (Schnur) – der Schlüssel, der gelöscht wird.

core.msleep(Millisekunden)
Kontext: Körper, Init, Aufgabe, Aktion

Das core.msleep() stoppt die Lua-Ausführung innerhalb der angegebenen Millisekunden.

Argumente

· Millisekunden (ganze Zahl) – die erforderlichen Millisekunden.

core.register_action(name, Aktionen, Funktion)
Kontext: Körper

Registrieren Sie eine als Aktion ausgeführte Lua-Funktion. Alle registrierten Aktionen können verwendet werden
in HAProxy mit dem Präfix „lua.“ Eine Aktion erhält eine TXN-Objektklasse als Eingabe.

Argumente

· Name (Schnur) – ist der Name des Konverters.

· Aktionen (Tabelle) – ist eine Zeichenfolgentabelle, die die HAProxy-Aktionen beschreibt, die ausgeführt werden
Ich möchte mich registrieren. Die erwarteten Aktionen sind „tcp-req“, „tcp-res“,
„http-req“ oder „http-res“.

· Funkt (Funktion) – ist die Lua-Funktion, die als Konverter fungiert.

Der Prototyp der als Argument verwendeten Lua-Funktion ist:

Funktion(txn)

·

txn (TXN Klasse): fehlen uns die Worte. is a TXN Objekt benutzt für manipulieren
aktuelle Anfrage oder TCP-Stream.

Hier ein Beispiel für die Aktionsregistrierung. Die Aktion sendet einfach ein „Hallo Welt“ in die
Protokolle.

core.register_action("hello-world", { "tcp-req", "http-req" }, function(txn)
txn:Info("Hallo Welt")
Ende)
Dieser Beispielcode wird in der HAproxy-Konfiguration wie folgt verwendet:

Frontend tcp_frt
Modus TCP
TCP-Anfrageinhalt lua.hello-world

Frontend http_frt
Modus http
http-Anfrage lua.hello-world

core.register_converters(name, Funktion)
Kontext: Körper

Registrieren Sie eine als Konverter ausgeführte Lua-Funktion. Alle registrierten Konverter können sein
Wird in HAProxy mit dem Präfix „lua“ verwendet. Ein Konverter erhält einen String als Eingabe und
Gibt einen String als Ausgabe zurück. Die registrierte Funktion kann bis zu 9 Werte annehmen
Parameter. Alle Werte sind Zeichenfolgen.

Argumente

· Name (Schnur) – ist der Name des Konverters.

· Funkt (Funktion) – ist die Lua-Funktion, die als Konverter fungiert.

Der Prototyp der als Argument verwendeten Lua-Funktion ist:

Funktion(str, [p1 [, p2 [, ... [, p5]]]])

· str (Schnur): Dies ist der Eingabewert, der automatisch in eine Zeichenfolge konvertiert wird.

· p1 .. p5 (Schnur): Dies ist eine Liste der im Haroxy deklarierten String-Argumente
Konfigurationsdatei. Die Anzahl der Argumente überschreitet nicht 5. Die Reihenfolge und die
Die Art dieser wird üblicherweise vom Entwickler ausgewählt.

core.register_fetches(name, Funktion)
Kontext: Körper

Registrieren Sie eine Lua-Funktion, die als Beispielabruf ausgeführt wird. Alle registrierten Beispielabrufe
kann in HAProxy mit dem Präfix „lua.“ verwendet werden. Ein Lua-Beispielabruf gibt eine Zeichenfolge zurück
als Ausgabe. Die registrierte Funktion kann bis zu 9 Werte als Parameter annehmen. All die
value sind Zeichenfolgen.

Argumente

· Name (Schnur) – ist der Name des Konverters.

· Funkt (Funktion) – ist die Lua-Funktion, die aufgerufen wird, um als Beispielabruf zu arbeiten.

Der Prototyp der als Argument verwendeten Lua-Funktion ist:

String-Funktion(txn, [p1 [, p2 [, ... [, p5]]]])

· txn (TXN Klasse): Dies ist das txn-Objekt, das der aktuellen Anfrage zugeordnet ist.

· p1 .. p5 (Schnur): Dies ist eine Liste der im Haroxy deklarierten String-Argumente
Konfigurationsdatei. Die Anzahl der Argumente überschreitet nicht 5. Die Reihenfolge und die
Die Art dieser wird üblicherweise vom Entwickler ausgewählt.

· Rücksendungen: Eine Zeichenfolge, die einige Daten enthält, oder Null, wenn der Wert jetzt nicht zurückgegeben werden kann.

Lua-Beispielcode:

core.register_fetches("Hallo", Funktion(txn)
„Hallo“ zurückgeben
Ende)
HAProxy-Beispielkonfiguration:

Frontend-Beispiel
HTTP-Request-Umleitungsstandort /%[lua.hello]

core.register_service(name, Modus Funktion)
Kontext: Körper

Registrieren Sie eine als Dienst ausgeführte Lua-Funktion. Der gesamte registrierte Dienst kann sein
Wird in HAProxy mit dem Präfix „lua“ verwendet. Ein Dienst erhält eine Objektklasse als Eingabe
entsprechend dem erforderlichen Modus.

Argumente

· Name (Schnur) – ist der Name des Konverters.

· Modus (Schnur) – ist eine Zeichenfolge, die den erforderlichen Modus beschreibt. Nur 'tcp' bzw
'http' sind erlaubt.

· Funkt (Funktion) – ist die Lua-Funktion, die als Konverter fungiert.

Der Prototyp der als Argument verwendeten Lua-Funktion ist:

Funktion (Applet)

· Applet Applet wird ein AppletTCP Klasse oder eine AppletHTTP Klasse. Es kommt auf den Typ an
des registrierten Applets. Ein Applet, das mit dem Wert „http“ für registriert ist Modus
Parameter erhält einen AppletHTTP Klasse. Wenn der Modus Wenn der Wert „tcp“ ist, wird das Applet dies tun
bekommt ein AppletTCP Klasse.

Warnung: Applets vom Typ „http“ können nicht von „tcp-“ aufgerufen werden.' Regelsätze. Nur 'http-'
Regelsätze sind autorisiert, das bedeutet, dass es nicht möglich ist, ein HTTP-Applet von einem aufzurufen
Proxy im TCP-Modus. Applets vom Typ „tcp“ können von überall aufgerufen werden.

Hier ein Beispiel für die Serviceregistrierung. Der Dienst sendet einfach ein „Hallo Welt“ als
http-Antwort.

core.register_service("hello-world", "http", function(applet)
lokale Antwort = „Hallo Welt!“
Applet:set_status(200)
applet:add_header("content-length", string.len(response))
applet:add_header("content-type", "text/plain")
applet:start_response()
Applet:senden(Antwort)
Ende)
Dieser Beispielcode wird in der HAproxy-Konfiguration wie folgt verwendet:

Frontend-Beispiel
http-request use-service lua.hello-world

core.register_init(func)
Kontext: Körper

Registrieren Sie eine Funktion, die nach der Konfigurationsanalyse ausgeführt wird. Dies ist nützlich für
Überprüfen Sie alle Parameter.

Argumente

· Funkt (Funktion) – ist die Lua-Funktion, die aufgerufen wird, um als Initialisierer zu fungieren.

Der Prototyp der als Argument verwendeten Lua-Funktion ist:

Funktion()
Es werden keine Eingaben benötigt und es wird keine Ausgabe erwartet.

core.register_task(func)
Kontext: Körper, Init, Aufgabe, Aktion, Beispielabruf, Konverter

Registrieren Sie sich und starten Sie eine unabhängige Aufgabe. Die Aufgabe wird gestartet, wenn der HAProxy main
Der Planer startet. Diese Art von Aufgaben können beispielsweise zur Ausführung komplexer Aufgaben ausgeführt werden
Gesundheitschecks.

Argumente

· Funkt (Funktion) – ist die Lua-Funktion, die aufgerufen wird, um als Initialisierer zu fungieren.

Der Prototyp der als Argument verwendeten Lua-Funktion ist:

Funktion()
Es werden keine Eingaben benötigt und es wird keine Ausgabe erwartet.

core.set_nice(nett)
Kontext: Aufgabe, Aktion, Beispielabruf, Konverter

Ändern Sie das Format der aktuellen Aufgabe oder aktuellen Sitzung.

Argumente

· schön (ganze Zahl) – der schöne Wert, er muss zwischen -1024 und 1024 liegen.

core.set_map(Dateiname, Schlüssel, Wert)
Kontext: init, Aufgabe, Aktion, Beispielabruf, Konverter

Wert einstellen Wert dem Schlüssel zugeordnet Schlüssel in der Karte, auf die verwiesen wird Dateinamen.

Argumente

· Dateinamen (Schnur) – die Kartenreferenz

· Schlüssel (Schnur) – der Schlüssel zum Festlegen oder Ersetzen

· Wert (Schnur) – der zugehörige Wert

core.sleep(int Sekunden)
Kontext: Körper, Init, Aufgabe, Aktion

Das core.sleep() Funktionen stoppen die Lua-Ausführung zwischen angegebenen Sekunden.

Argumente

· Sekunden (ganze Zahl) – die erforderlichen Sekunden.

core.tcp()
Kontext: init, Aufgabe, Aktion

Diese Funktion gibt ein neues Objekt von a zurück Buchse Klasse.

Rücksendungen
A Buchse Klasse Objekt.

core.done(data)
Kontext: Körper, Init, Aufgabe, Aktion, Beispielabruf, Konverter

Argumente

· technische Daten (jedem) – Gibt einige Daten für den Anrufer zurück. Es ist nützlich mit
Sample-Abrufe und Sample-Konverter.

Stoppt sofort die aktuelle Lua-Ausführung und kehrt möglicherweise zum Aufrufer zurück
ein Beispielabruf, ein Konverter oder eine Aktion und gibt den angegebenen Wert zurück (ignoriert).
für Aktionen). Es wird verwendet, wenn der LUA-Prozess seine Arbeit beendet hat und etwas geben möchte
Geben Sie die Steuerung an HAProxy zurück, ohne den verbleibenden Code auszuführen. Es kann als angesehen werden
eine mehrstufige „Rückkehr“.

core.yield()
Kontext: Aufgabe, Aktion, Beispielabruf, Konverter

Geben Sie dem HAProxy-Planer die Hand zurück. Es wird bei der LUA-Verarbeitung verwendet
verbraucht viel Bearbeitungszeit.

Klasse Fetches()
Diese Klasse enthält viele interne HAProxy-Beispielabrufe. Siehe HAProxy
Weitere Informationen zu ihrer Verwendung finden Sie in der Dokumentation „configuration.txt“. sie sind
die Kapitel 7.3.2 bis 7.3.6.

Warnung Einige Beispielabrufe sind in bestimmten Kontexten nicht verfügbar. Diese Einschränkungen
werden in dieser Dokumentation angegeben, wenn sie nützlich sind.

See TXN.f

See TXN.sf

Abrufe sind nützlich für:

· Systemzeit abrufen,

· Umgebungsvariable abrufen,

· Zufallszahlen erhalten,

· Bekannter Backend-Status wie die Anzahl der Benutzer in der Warteschlange oder die Anzahl der
Verbindungen hergestellt,

· Client-Informationen wie IP-Quelle oder -Ziel,

· Umgang mit Stocktabellen,

· Etablierte SSL-Informationen,

· HTTP-Informationen wie Header oder Methode.

Funktion action(txn)
-- Quell-IP abrufen
lokaler clientip = txn.f:src()
Ende

Klasse Konverter()
Diese Klasse enthält viele interne HAProxy-Beispielkonverter. Siehe HAProxy
Weitere Informationen zu ihrer Verwendung finden Sie in der Dokumentation „configuration.txt“. Es ist das
Kapitel 7.3.1.

See TXN.c

See TXN.sc

Konverter bieten eine zustandsbehaftete Transformation. Sie sind nützlich für:

· Eingaben in Base64 konvertieren,

· Anwenden von Hash auf die Eingabezeichenfolge (djb2, crc32, sdbm, wt6),

· Datum formatieren,

· JSON-Escape,

· Extrahieren der bevorzugten Sprache durch Vergleichen zweier Listen,

· zu unteren oder oberen Zeichen wechseln,

· Umgang mit Stick-Tischen.

Klasse Kanal()
HAProxy nutzt zwei Puffer für die Verarbeitung der Anfragen. Der erste wird verwendet
mit den Anforderungsdaten (vom Client zum Server) und der zweite wird für verwendet
die Antwortdaten (vom Server zum Client).

Jeder Puffer enthält zwei Arten von Daten. Der erste Typ ist das Warten auf eingehende Daten
für eine Bearbeitung. Der zweite Teil sind die ausgehenden Daten, die bereits verarbeitet wurden. Normalerweise,
Die eingehenden Daten werden verarbeitet, nachdem sie als ausgehende Daten markiert wurden, und schließlich werden sie verarbeitet
gesendet wird. Die folgenden Funktionen bieten Tools zum Bearbeiten dieser Daten in einem
Puffer.

Das folgende Diagramm zeigt, wo die Kanalklassenfunktionen angewendet werden.

Warnung: Es ist nicht möglich, aus der Antwort in der Anforderungsaktion zu lesen, und das ist auch der Fall
Das Lesen des Anforderungskanals in der Antwortaktion ist nicht möglich.
[Bild]

Channel.dup(Kanal)
Diese Funktion gibt eine Zeichenfolge zurück, die den gesamten Puffer enthält. Die Daten sind es nicht
aus dem Puffer entfernen und kann später erneut verarbeitet werden.

Wenn der Puffer keine weiteren Daten empfangen kann, wird ein „Null“-Wert zurückgegeben.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

Rücksendungen
eine Zeichenfolge, die alle verfügbaren Daten enthält, oder Null.

Channel.get(channel)
Diese Funktion gibt eine Zeichenfolge zurück, die den gesamten Puffer enthält. Die Daten werden verbraucht
aus dem Puffer.

Wenn der Puffer keine weiteren Daten empfangen kann, wird ein „Null“-Wert zurückgegeben.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

Rücksendungen
eine Zeichenfolge, die alle verfügbaren Daten enthält, oder Null.

Channel.getline(channel)
Diese Funktion gibt eine Zeichenfolge zurück, die die erste Zeile des Puffers enthält. Die Daten
wird verbraucht. Wenn die zurückgegebenen Daten kein abschließendes „n“ enthalten, wird davon ausgegangen, dass dies der Fall ist
die letzten verfügbaren Daten im Puffer.

Wenn der Puffer keine weiteren Daten empfangen kann, wird ein „Null“-Wert zurückgegeben.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

Rücksendungen
eine Zeichenfolge, die die verfügbare Zeile oder Null enthält.

Channel.set(channel, Schnur)
Diese Funktion ersetzt den Inhalt des Puffers durch die Zeichenfolge. Die Funktion kehrt zurück
die kopierte Länge, andernfalls wird -1 zurückgegeben.

Die mit dieser Funktion eingestellten Datensätze werden nicht versendet. Sie warten auf das Ende von HAProxy
Verarbeitung, sodass der Puffer voll sein kann.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

· Schnur (Schnur) – Die Daten, die gesendet werden.

Rücksendungen
eine ganze Zahl, die die Anzahl der kopierten Bytes enthält, oder -1.

Channel.append(channel, Schnur)
Diese Funktion hängt das String-Argument an den Inhalt des Puffers an. Die Funktion
gibt die kopierte Länge zurück, andernfalls wird -1 zurückgegeben.

Die mit dieser Funktion eingestellten Datensätze werden nicht versendet. Sie warten auf das Ende von HAProxy
Verarbeitung, sodass der Puffer voll sein kann.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

· Schnur (Schnur) – Die Daten, die gesendet werden.

Rücksendungen
eine ganze Zahl, die die Anzahl der kopierten Bytes enthält, oder -1.

Channel.send(channel, Schnur)
Diese Funktion erforderte das sofortige Senden der Daten. Es sei denn, die Verbindung besteht
Schließen, der Puffer wird regelmäßig geleert und die gesamte Zeichenfolge kann gesendet werden.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

· Schnur (Schnur) – Die Daten, die gesendet werden.

Rücksendungen
eine ganze Zahl, die die Anzahl der kopierten Bytes enthält, oder -1.

Channel.get_in_length(channel)
Diese Funktion gibt die Länge des Eingabeteils des Puffers zurück.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

Rücksendungen
eine ganze Zahl, die die Menge der verfügbaren Bytes enthält.

Channel.get_out_length(channel)
Diese Funktion gibt die Länge des Ausgabeteils des Puffers zurück.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

Rücksendungen
eine ganze Zahl, die die Menge der verfügbaren Bytes enthält.

Channel.forward(channel, int)
Diese Funktion überträgt Bytes vom Eingabeteil des Puffers zum Ausgabeteil.

Argumente

· Kanal (class_channel) – Der manipulierte Kanal.

· int (ganze Zahl) – Die Datenmenge, die weitergeleitet wird.

Klasse HTTP()
Diese Klasse enthält alle HTTP-Manipulationsfunktionen.

HTTP.req_get_headers(http)
Gibt ein Array zurück, das alle Anforderungsheader enthält.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

Rücksendungen
Array von Headern.

See HTTP.res_get_headers()

Dies ist die Form des zurückgegebenen Arrays:

HTTP:req_get_headers()[' '][ ] = " "

local hdr = HTTP:req_get_headers()
hdr["host"][0] = "www.test.com"
hdr["accept"][0] = "audio/basic q=1"
hdr["accept"][1] = "audio/*, q=0.2"
hdr["accept"][2] = "*/*, q=0.1"

HTTP.res_get_headers(http)
Gibt ein Array zurück, das alle Antwortheader enthält.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

Rücksendungen
Array von Headern.

See HTTP.req_get_headers()

Dies ist die Form des zurückgegebenen Arrays:

HTTP:res_get_headers()[' '][ ] = " "

local hdr = HTTP:req_get_headers()
hdr["host"][0] = "www.test.com"
hdr["accept"][0] = "audio/basic q=1"
hdr["accept"][1] = "audio/*, q=0.2"
hdr["accept"][2] = "*.*, q=0.1"

HTTP.req_add_header(http, Name, Wert)
Fügt der Anfrage ein HTTP-Header-Feld hinzu, dessen Name in „name“ und angegeben ist
dessen Wert in „value“ definiert ist.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

· Wert (Schnur) – Der Header-Wert.

See HTTP.res_add_header()

HTTP.res_add_header(http, Name, Wert)
fügt der Antwort ein HTTP-Header-Feld hinzu, dessen Name in „name“ und angegeben ist
dessen Wert in „value“ definiert ist.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

· Wert (Schnur) – Der Header-Wert.

See HTTP.req_add_header()

HTTP.req_del_header(http, Name)
Entfernt alle HTTP-Header-Felder in der Anfrage, deren Name in „name“ angegeben ist.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

See HTTP.res_del_header()

HTTP.res_del_header(http, Name)
Entfernt alle HTTP-Header-Felder in der Antwort, deren Name in „name“ angegeben ist.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

See HTTP.req_del_header()

HTTP.req_set_header(http, Name, Wert)
Diese Variable ersetzt alle Vorkommen aller Header „Name“ durch nur einen, der Folgendes enthält
der Wert".

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

· Wert (Schnur) – Der Header-Wert.

See HTTP.res_set_header()

Diese Funktion erledigt die gleiche Arbeit wie der folgende Code:

Funktion fcn(txn)
TXN.http:req_del_header("header")
TXN.http:req_add_header("header", "value")
Ende

HTTP.res_set_header(http, Name, Wert)
Diese Variable ersetzt alle Vorkommen aller Header „Name“ durch nur einen, der Folgendes enthält
der Wert".

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

· Wert (Schnur) – Der Header-Wert.

See HTTP.req_rep_header()

HTTP.req_rep_header(http, Name, Regex, ersetzen)
Entspricht dem regulären Ausdruck in allen Vorkommen des Header-Felds „Name“.
zu „regex“ und ersetzt sie durch das „replace“-Argument. Der Wiederbeschaffungswert
kann Rückverweise wie 1, 2, ... enthalten. Diese Funktion arbeitet mit der Anfrage.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

· Regex (Schnur) – Der reguläre Ausdruck für die Übereinstimmung.

· ersetzen (Schnur) – Der Wiederbeschaffungswert.

See HTTP.res_rep_header()

HTTP.res_rep_header(http, Name, Regex, Schnur)
Entspricht dem regulären Ausdruck in allen Vorkommen des Header-Felds „Name“.
zu „regex“ und ersetzt sie durch das „replace“-Argument. Der Wiederbeschaffungswert
kann Rückverweise wie 1, 2, ... enthalten. Diese Funktion arbeitet mit der Anfrage.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

· Regex (Schnur) – Der reguläre Ausdruck für die Übereinstimmung.

· ersetzen (Schnur) – Der Wiederbeschaffungswert.

See HTTP.req_replace_header()

HTTP.req_replace_value(http, Name, Regex, ersetzen)
Funktioniert wie „HTTP.req_replace_header()“, außer dass es mit der Regex übereinstimmt
Jeder durch Kommas getrennte Wert des Header-Felds „Name“ anstelle des gesamten
Header.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

· Regex (Schnur) – Der reguläre Ausdruck für die Übereinstimmung.

· ersetzen (Schnur) – Der Wiederbeschaffungswert.

See HTTP.req_replace_header()

See HTTP.res_replace_value()

HTTP.res_replace_value(http, Name, Regex, ersetzen)
Funktioniert wie „HTTP.res_replace_header()“, außer dass es mit dem regulären Ausdruck übereinstimmt
Jeder durch Kommas getrennte Wert des Header-Felds „Name“ anstelle des gesamten
Header.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Name (Schnur) – Der Header-Name.

· Regex (Schnur) – Der reguläre Ausdruck für die Übereinstimmung.

· ersetzen (Schnur) – Der Wiederbeschaffungswert.

See HTTP.res_replace_header()

See HTTP.req_replace_value()

HTTP.req_set_method(http, Methode)
Schreibt die Anforderungsmethode mit dem Parameter „method“ neu.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Methode (Schnur) – Die neue Methode.

HTTP.req_set_path(http, Pfad)
Schreibt den Anforderungspfad mit dem Parameter „path“ neu.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Weg (Schnur) – Der neue Weg.

HTTP.req_set_query(http, Anfrage)
Schreibt die Abfragezeichenfolge der Anfrage neu, die nach dem ersten Fragezeichen erscheint
("?") mit dem Parameter "query".

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· query (Schnur) – Die neue Abfrage.

HTTP.req_set_uri(http, uri)
Schreibt den Anforderungs-URI mit dem Parameter „uri“ um.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· uri (Schnur) – Die neue URI.

HTTP.res_set_status(http, Status)
Schreibt den Antwortstatuscode mit dem Parameter „code“ um. Beachten Sie, dass der Grund
wird automatisch an den neuen Code angepasst.

Argumente

· http (class_http) – Das zugehörige http-Objekt.

· Status (ganze Zahl) – Der neue Antwortstatuscode.

Klasse TXN()
Die txn-Klasse enthält alle Funktionen relativ zur http- oder tcp-Transaktion
(Beachten Sie, dass ein TCP-Stream dasselbe ist wie eine TCP-Transaktion, jedoch eine HTTP-Transaktion
ist nicht dasselbe wie ein TCP-Stream).

Die Verwendung dieser Klasse ermöglicht es, Daten aus den Anfragen abzurufen, zu ändern und
weiterleiten.

Alle von dieser Klasse bereitgestellten Funktionen sind im Kontext verfügbar
Beispielabrufe und Aktionen.

TXN.c

Rücksendungen
An Umwandler Klasse.

Dieses Attribut enthält ein Konverter-Klassenobjekt.

TXN.sc

Rücksendungen
An Umwandler Klasse.

Dieses Attribut enthält ein Konverter-Klassenobjekt. Die Funktionen dieses Objekts
gibt immer einen String zurück.

TXN.f

Rücksendungen
An Holt Klasse.

Dieses Attribut enthält ein Fetches-Klassenobjekt.

TXN.sf

Rücksendungen
An Holt Klasse.

Dieses Attribut enthält ein Fetches-Klassenobjekt. Die Funktionen dieses Objekts
gibt immer einen String zurück.

TXN.req

Rücksendungen
An Kanal Klasse.

Dieses Attribut enthält ein Kanalklassenobjekt für den Anforderungspuffer.

TXN.res

Rücksendungen
An Kanal Klasse.

Dieses Attribut enthält ein Kanalklassenobjekt für den Antwortpuffer.

TXN.http

Rücksendungen
An HTTP Klasse.

Dieses Attribut enthält ein HTTP-Klassenobjekt. Es ist nur verfügbar, wenn der Proxy vorhanden ist
der „Modus http“ aktiviert.

TXN.log(TXN, Loglevel, Nachricht)
Diese Funktion sendet ein Protokoll. Das Protokoll wird entsprechend dem HAProxy gesendet
Konfigurationsdatei, auf dem Standard-Syslog-Server, falls dieser konfiguriert ist, und auf dem
stderr, wenn es erlaubt ist.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· loglevel (ganze Zahl) – Ist die Protokollebene, die der Nachricht zugeordnet ist. es ist ein
Zahl zwischen 0 und 7.

· msg (Schnur) – Der Protokollinhalt.

See core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (Definitionen der Protokollebene)

See TXN.deflog

See TXN.Debug

See TXN.Info

See TXN.Warnung

See TXN.Alarm

TXN.deflog(TXN, Nachricht)
Sendet eine Protokollzeile mit dem Standardprotokolllevel für den Proxy, der dem zugeordnet ist
Transaktion.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· msg (Schnur) – Der Protokollinhalt.

See TXN.log

TXN.Debug(txn, Nachricht)

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· msg (Schnur) – Der Protokollinhalt.

See TXN.log

Erfüllt die gleiche Aufgabe wie:

Funktion Debug(txn, msg)
TXN.log(txn, core.debug, msg)
Ende

TXN.Info(txn, Nachricht)

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· msg (Schnur) – Der Protokollinhalt.

See TXN.log

Funktion Debug(txn, msg)
TXN.log(txn, core.info, msg)
Ende

TXN.Warning(txn, Nachricht)

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· msg (Schnur) – Der Protokollinhalt.

See TXN.log

Funktion Debug(txn, msg)
TXN.log(txn, core.warning, msg)
Ende

TXN.Alert(txn, Nachricht)

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· msg (Schnur) – Der Protokollinhalt.

See TXN.log

Funktion Debug(txn, msg)
TXN.log(txn, core.alert, msg)
Ende

TXN.get_priv(txn)
Gibt die in der aktuellen Transaktion gespeicherten Lua-Daten zurück (mit TXN.set_priv())
Funktion. Wenn keine Daten gespeichert sind, wird ein Nullwert zurückgegeben.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

Rücksendungen
Die zuvor gespeicherten undurchsichtigen Daten oder Null, wenn nichts verfügbar ist.

TXN.set_priv(txn, Daten)
Speichern Sie alle Daten in der aktuellen HAProxy-Transaktion. Diese Aktion ersetzt die alte
gespeicherte Daten.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· technische Daten (undurchsichtig) – Die Daten, die in der Transaktion gespeichert werden.

TXN.set_var(TXN, Es gibt, Wert)
Konvertiert einen Lua-Typ in einen HAProxy-Typ und speichert ihn in einer Variablen .

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· jung (Schnur) – Der Variablenname entsprechend der HAProxy-Variable
Syntax.

· Wert (undurchsichtig) – Die Daten, die in der Variablen gespeichert sind.

TXN.get_var(TXN, var)
Gibt im Variablenkonverter gespeicherte Daten im Lua-Typ zurück.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· jung (Schnur) – Der Variablenname entsprechend der HAProxy-Variable
Syntax.

TXN.get_headers(txn)
Diese Funktion gibt ein Array von Headern zurück.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

Rücksendungen
ein Array von Headern.

TXN.done(txn)
Diese Funktion beendet die Verarbeitung der Transaktion und der zugehörigen Sitzung.
Es kann verwendet werden, wenn ein kritischer Fehler erkannt wird oder um die Verarbeitung danach abzubrechen
Einige Daten wurden an den Client zurückgegeben (z. B. eine Umleitung).

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

TXN.set_loglevel(txn, Loglevel)
Wird verwendet, um die Protokollebene der aktuellen Anfrage zu ändern. Der „Loglevel“ muss ein sein
Ganzzahl zwischen 0 und 7.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· loglevel (ganze Zahl) – Die erforderliche Protokollebene. Diese Variable kann eine von sein

See Kern.

TXN.set_tos(txn, tos)
Wird verwendet, um den TOS- oder DSCP-Feldwert von Paketen festzulegen, die an den Client gesendet werden
Wert, der in „tos“ auf Plattformen übergeben wird, die dies unterstützen.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· tos (ganze Zahl) – Das neue TOS OS DSCP.

TXN.set_mark(txn, Kennzeichen)
Wird verwendet, um die Netfilter-Markierung für alle an den Client gesendeten Pakete auf den Wert zu setzen
in „Mark“ auf Plattformen weitergegeben, die es unterstützen.

Argumente

· txn (class_txn) – Das Klassen-TXN-Objekt, das die Daten enthält.

· Kennzeichen (ganze Zahl) – Der Markierungswert.

Klasse Steckdose()
Diese Klasse muss mit der Lua Socket-Klasse kompatibel sein. Nur der „Kunde“
Funktionen stehen zur Verfügung. Weitere Informationen finden Sie in der Lua-Socket-Dokumentation:

http://w3.impa.br/~diego/software/luasocket/tcp.html

Socket.close(socket)
Schließt ein TCP-Objekt. Der vom Objekt verwendete interne Socket ist geschlossen und der lokale
Die Adresse, an die das Objekt gebunden wurde, wird anderen Anwendungen zur Verfügung gestellt. NEIN
Weitere Operationen (mit Ausnahme weiterer Aufrufe der Methode close) sind auf a zulässig
geschlossener Sockel.

Argumente

· Buchse (class_socket) – Ist der manipulierte Socket.

Hinweis: Es ist wichtig, alle verwendeten Steckdosen zu schließen, sobald sie nicht benötigt werden, da in
Bei vielen Systemen verwendet jeder Socket einen Dateideskriptor, der auf das System beschränkt ist
Ressourcen. Im Müll gesammelte Objekte werden vor der Zerstörung automatisch geschlossen.
though.

Socket.connect(Buchse, Adresse[, Hafen])
Versucht, ein Socket-Objekt mit einem Remote-Host zu verbinden.

Im Fehlerfall gibt die Methode nil zurück, gefolgt von einer Zeichenfolge, die den Fehler beschreibt.
Im Erfolgsfall gibt die Methode 1 zurück.

Argumente

· Buchse (class_socket) – Ist der manipulierte Socket.

· Adresse (Schnur) – kann eine IP-Adresse oder ein Hostname sein. Siehe unten für
mehr Informationen.

· port (ganze Zahl) – muss eine Ganzzahl im Bereich [1..64K] sein.

Rücksendungen
1 oder Null.

Eine Adressfelderweiterung ermöglicht die Verwendung der connect()-Funktion zum Herstellen einer Verbindung
anderer Stream als TCP. Die Syntax, die eine einfache IPv4- oder IPv6-Adresse enthält, ist die
grundsätzlich erwartetes Format. Dieses Format erfordert den Port.

Ein anderes akzeptiertes Format ist ein Socket-Pfad wie „/socket/path“, der die Verbindung ermöglicht
an eine Steckdose. Abstrakte Namespaces werden mit dem Präfix „abns@“ und finaly unterstützt
ein filedescriotr kann mit dem Präfix „fd@“ übergeben werden. Das Präfix „ipv4@“, „ipv6@“
und „unix@“ werden ebenfalls unterstützt. Der Port kann im String übergeben werden. Die Syntax
„127.0.0.1:1234“ ist gültig. in diesem Fall der Parameter port wird ignoriert.

Socket.connect_ssl(socket, Adresse, Port)
Gleiches Verhalten wie die Funktion socket:connect, verwendet jedoch SSL.

Argumente

· Buchse (class_socket) – Ist der manipulierte Socket.

Rücksendungen
1 oder Null.

Socket.getpeername(socket)
Gibt Informationen über die Remote-Seite eines verbundenen Clientobjekts zurück.

Gibt eine Zeichenfolge mit der IP-Adresse des Peers zurück, gefolgt von der Portnummer
Peer, den der Peer für die Verbindung verwendet. Im Fehlerfall gibt die Methode Null zurück.

Argumente

· Buchse (class_socket) – Ist der manipulierte Socket.

Rücksendungen
eine Zeichenfolge, die die Serverinformationen enthält.

Socket.getsockname(socket)
Gibt die dem Objekt zugeordneten lokalen Adressinformationen zurück.

Die Methode gibt einen String mit der lokalen IP-Adresse und eine Nummer mit dem Port zurück. In
Im Fehlerfall gibt die Methode Null zurück.

Argumente

· Buchse (class_socket) – Ist der manipulierte Socket.

Rücksendungen
eine Zeichenfolge, die die Clientinformationen enthält.

Socket.receive(socket[, Muster[, Präfix]])
Liest Daten von einem Clientobjekt gemäß dem angegebenen Lesemuster. Muster
Befolgen Sie das Lua-Datei-E/A-Format und den Leistungsunterschied zwischen allen
Muster sind vernachlässigbar.

Argumente

· Buchse (class_socket) – Ist der manipulierte Socket.

· Anleitungen (Zeichenfolge|Ganzzahl) – Beschreiben Sie, was erforderlich ist (siehe unten).

· Präfix (Schnur) – Eine Zeichenfolge, die den zurückgegebenen Daten vorangestellt wird.

Rücksendungen
eine Zeichenfolge, die die erforderlichen Daten enthält, oder Null.

Das Muster kann eines der folgenden sein:

·

`*a`: liest für Buchse bis Verbindung is geschlossen. Nein
Es wird eine End-of-Line-Übersetzung durchgeführt.

·

`*l`: liest a Linie of Text für Steckdose. Das Linie is beendet by a
LF-Zeichen (ASCII 10), optional mit vorangestelltem CR-Zeichen (ASCII 13).
Die Zeichen CR und LF sind nicht in der zurückgegebenen Zeile enthalten. In der Tat,
Alle CR-Zeichen werden vom Muster ignoriert. Dies ist das Standardmuster.

·

Nummer: Ursachen Methode zu lesen a angegeben Anzahl of Bytes für
Steckdose. Präfix ist eine optionale Zeichenfolge, die am Anfang verkettet wird
aller empfangenen Daten vor der Rücksendung.

· leer: Wenn das Muster leer bleibt, ist die Standardoption *l.

Bei Erfolg gibt die Methode das empfangene Muster zurück. Im Fehlerfall wird die
Die Methode gibt „nil“ zurück, gefolgt von einer Fehlermeldung, bei der es sich um die Zeichenfolge „closed“ in handeln kann
Fall wurde die Verbindung geschlossen, bevor die Übertragung abgeschlossen war oder die Zeichenfolge
'timeout' für den Fall, dass es während des Vorgangs zu einem Timeout kam. Auch nach dem Fehler
Nachricht gibt die Funktion das Teilergebnis der Übertragung zurück.

Wichtiger Hinweis: Diese Funktion wurde stark geändert. Früher wurden mehrere unterstützt
Muster (aber ich habe diese Funktion noch nie gesehen) und jetzt funktioniert sie nicht mehr.
Früher wurden Teilergebnisse auf die gleiche Weise zurückgegeben wie erfolgreiche Ergebnisse. Das
Die letzte Funktion verstieß gegen die Idee, dass alle Funktionen im Fehlerfall Null zurückgeben sollten. Daher
es wurde auch geändert.

Socket.send(Socket, Daten[, Start[, Ende]])
Sendet Daten über ein Clientobjekt.

Argumente

· Buchse (class_socket) – Ist der manipulierte Socket.

· technische Daten (Schnur) – Die Daten, die gesendet werden.

· Anfang (ganze Zahl) – Die Startposition im Puffer der Daten, die verwendet werden sollen
gesendet werden.

· Ende (ganze Zahl) – Die Endposition im Puffer der Daten, die gespeichert werden sollen
gesendet.

Rücksendungen
siehe unten.

Daten sind die zu sendende Zeichenfolge. Die optionalen Argumente i und j funktionieren genauso wie die
Standard-String.sub-Lua-Funktion, um die Auswahl eines zu sendenden Teilstrings zu ermöglichen.

Bei Erfolg gibt die Methode den Index des letzten Bytes innerhalb von [Start, Ende] zurück.
das wurde verschickt. Beachten Sie, dass dies effektiv der Fall ist, wenn start 1 ist oder nicht vorhanden ist
Gesamtzahl der gesendeten Bytes. Im Fehlerfall gibt die Methode Null zurück, gefolgt von
eine Fehlermeldung, gefolgt vom Index des letzten Bytes innerhalb von [Start, Ende].
wurde gesendet. Möglicherweise möchten Sie es ab dem darauffolgenden Byte noch einmal versuchen. Der Fehler
Die Nachricht kann „geschlossen“ werden, falls die Verbindung vor der Übertragung geschlossen wurde
abgeschlossen wurde, oder die Zeichenfolge „timeout“, falls während des Vorgangs ein Timeout aufgetreten ist
Erfassung sind.

Hinweis: Die Ausgabe wird nicht gepuffert. Bei kleinen Zeichenfolgen ist es immer besser, sie zu verketten
sie in Lua (mit dem '..'-Operator) und senden Sie das Ergebnis stattdessen in einem Aufruf
Rufen Sie die Methode mehrmals auf.

Socket.setoption(socket, Möglichkeit[, Wert])
Dieser Cal wurde nur aus Kompatibilitätsgründen implementiert und bewirkt nichts.

Socket.settimeout(socket, Wert[, Modus])
Ändert die Timeout-Werte für das Objekt. Alle E/A-Vorgänge blockieren. Das
Das bedeutet, dass jeder Aufruf der Methoden „send“, „receive“ und „accept“ auf unbestimmte Zeit blockiert.
bis der Vorgang abgeschlossen ist. Die settimeout-Methode definiert ein Limit für den Betrag
Zeit, die die I/O-Methoden blockieren können. Wenn eine Timeout-Zeit abgelaufen ist, wird die betroffene
Methoden geben auf und schlagen mit einem Fehlercode fehl.

Die Wartezeit wird als Wertparameter in Sekunden angegeben.

Die Timeout-Modi sind nicht implementiert, das einzige einstellbare Timeout ist die Inaktivität
Zeit, die auf den Abschluss des internen Puffers zum Senden oder Empfangen von Daten wartet.

Argumente

· Buchse (class_socket) – Ist der manipulierte Socket.

· Wert (ganze Zahl) – Der Timeout-Wert.

Klasse Karte()
Diese Klasse ermöglicht die Suche in HAProxy-Karten. Die deklarierten Karten können sein
während der Laufzeit über den HAProxy-Management-Socket geändert.

default = "usa"

- Karte erstellen und laden
geo = Map.new("geo.map", Map.ip);

– Erstellen Sie einen neuen Abruf, der das Benutzerland zurückgibt
core.register_fetches("country", function(txn)
lokale Quelle;
lokale Lok;

src = txn.f:fhdr("x-forwarded-for");
if (src == nil) then
src = txn.f:src()
if (src == nil) then
Standardwert zurückgeben;
Ende
Ende

-- Suche durchführen
loc = geo:lookup(src);

if (loc == nil) then
Standardwert zurückgeben;
Ende

Rückkehrlok;
Ende);

Map.int
Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Map.ip Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Kartenstr
Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Karte.beg
Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Karte.sub
Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Map.dir
Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Map.dom
Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Kartenende
Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Map.reg
Siehe die HAProxy-Datei „configuration.txt“, Kapitel „Verwenden von ACLs und Abrufen von Beispielen“.
und Unterkapitel „ACL-Grundlagen“, um diese Mustervergleichsmethode zu verstehen.

Map.new(Datei, Methode)
Erstellt und lädt eine Karte.

Argumente

· Datei (Schnur) – Ist die Datei, die die Karte enthält.

· Methode (ganze Zahl) – Ist die Methode zum Vergleichen von Kartenmustern. Siehe die Attribute
der Map-Klasse.

Rücksendungen
ein Klassen-Map-Objekt.

See Die Kartenattribute.

Map.lookup(map, Str)
Führen Sie eine Suche in einer Karte durch.

Argumente

· Karte (class_map) – Ist das Klassen-Map-Objekt.

· str (Schnur) – Ist die Zeichenfolge, die als Schlüssel verwendet wird.

Rücksendungen
eine Zeichenfolge, die das Ergebnis enthält, oder Null, wenn keine Übereinstimmung vorliegt.

Map.slookup(map, Str)
Führen Sie eine Suche in einer Karte durch.

Argumente

· Karte (class_map) – Ist das Klassen-Map-Objekt.

· str (Schnur) – Ist die Zeichenfolge, die als Schlüssel verwendet wird.

Rücksendungen
eine Zeichenfolge, die das Ergebnis enthält, oder eine leere Zeichenfolge, wenn keine Übereinstimmung vorliegt.

Klasse AppletHTTP()
Diese Klasse wird mit Applets verwendet, die den „http“-Modus erfordern. Das http-Applet kann
bei der registriert sein core.register_service() Funktion. Sie werden verwendet für
Verarbeiten einer http-Anfrage wie ein Server hinter HAProxy.

Dies ist ein Hallo-Welt-Beispielcode:

core.register_service("hello-world", "http", function(applet)
lokale Antwort = „Hallo Welt!“
Applet:set_status(200)
applet:add_header("content-length", string.len(response))
applet:add_header("content-type", "text/plain")
applet:start_response()
Applet:senden(Antwort)
Ende)

AppletHTTP.c

Rücksendungen
A Umwandler Klasse

Dieses Attribut enthält ein Konverter-Klassenobjekt.

AppletHTTP.sc

Rücksendungen
A Umwandler Klasse

Dieses Attribut enthält ein Konverter-Klassenobjekt. Die Funktionen dieses Objekts
gibt immer einen String zurück.

AppletHTTP.f

Rücksendungen
A Holt Klasse

Dieses Attribut enthält ein Fetches-Klassenobjekt. Beachten Sie, dass die Applet-Ausführung
Der Ort kann nicht auf eine gültige HAProxy-Kern-HTTP-Transaktion zugreifen, daher einige Beispiele
Fehler im Zusammenhang mit den HTTP-abhängigen Werten (hdr, path, ...) sind nicht verfügbar.

AppletHTTP.sf

Rücksendungen
A Holt Klasse

Dieses Attribut enthält ein Fetches-Klassenobjekt. Die Funktionen dieses Objekts
gibt immer einen String zurück. Beachten Sie, dass der Applet-Ausführungsort nicht auf a zugreifen kann
gültige HAProxy-Kern-HTTP-Transaktion, daher einige Beispielfehler im Zusammenhang mit HTTP
Abhängige Werte (HDR, Pfad, ...) sind nicht verfügbar.

AppletHTTP.method

Rücksendungen
Schnur

Die Attributmethode gibt einen String zurück, der die HTTP-Methode enthält.

AppletHTTP.version

Rücksendungen
Schnur

Die Attributversion gibt eine Zeichenfolge zurück, die die HTTP-Anforderungsversion enthält.

AppletHTTP.path

Rücksendungen
Schnur

Der Attributpfad gibt eine Zeichenfolge zurück, die den HTTP-Anforderungspfad enthält.

AppletHTTP.qs

Rücksendungen
Schnur

Das Attribut qs gibt eine Zeichenfolge zurück, die die HTTP-Anforderungsabfragezeichenfolge enthält.

AppletHTTP.length

Rücksendungen
ganze Zahl

Die Attributlänge gibt eine Ganzzahl zurück, die die Länge des HTTP-Körpers enthält.

AppletHTTP.headers

Rücksendungen
Array

Das Attribut headers gibt ein Array zurück, das die HTTP-Header enthält. Der Header
Namen werden immer in Kleinbuchstaben geschrieben. Da der Headername mehr als sein kann
Einmal in jeder Anfrage wird der Wert mit 0 als erstem Indexwert indiziert. Das Array
Habe dieses Formular:

AppletHTTP.headers[' '][ ] = " "

AppletHTTP.headers["host"][0] = "www.test.com"
AppletHTTP.headers["accept"][0] = "audio/basic q=1"
AppletHTTP.headers["accept"][1] = "audio/*, q=0.2"
AppletHTTP.headers["accept"][2] = "*/*, q=0.1"

AppletHTTP.headers
Enthält ein Array mit allen Anforderungsheadern.

AppletHTTP.set_status(applet, Code)
Diese Funktion legt den HTTP-Statuscode für die Antwort fest. Der zulässige Code stammt von
100 zu 599.

Argumente

· Applet (class_AppletHTTP) -- Ein AppletHTTP Klasse

· Code (ganze Zahl) – der an den Client zurückgegebene Statuscode.

AppletHTTP.add_header(applet, Name, Wert)
Diese Funktion fügt der Antwort einen Header hinzu. Doppelte Header werden nicht ausgeblendet.
Der spezielle Header Inhaltslänge wird zur Bestimmung der Antwortlänge verwendet. Wenn es
existiert nicht, a Übertragungskodierung: zerkleinert gesetzt ist, und alle Schreibvorgänge aus der Funktion
AppletHTTP:send() ein Brocken werden.

Argumente

· Applet (class_AppletHTTP) -- Ein AppletHTTP Klasse

· Name (Schnur) – der Header-Name

· Wert (Schnur) – der Header-Wert

AppletHTTP.start_response(applet)
Diese Funktion zeigt der HTTP-Engine an, dass sie die Daten verarbeiten und senden kann
Antwortheader. Nach diesem Aufruf können wir der Antwort keine Header mehr hinzufügen. Wir
kann das nicht benutzen AppletHTTP:send() Funktion, wenn die AppletHTTP:start_response() ist nicht
namens.

Argumente

· Applet (class_AppletHTTP) -- Ein AppletHTTP Klasse

AppletHTTP.getline(Applet)
Diese Funktion gibt einen String zurück, der eine Zeile aus dem http-Body enthält. Wenn die Daten
Die zurückgegebenen Daten enthalten kein abschließendes „\n“. Es wird davon ausgegangen, dass es sich um die letzten verfügbaren Daten handelt
vor dem Ende des Streams.

Argumente

· Applet (class_AppletHTTP) -- Ein AppletHTTP Klasse

Rücksendungen
ein Faden. Der String kann leer sein, wenn wir das Ende des Streams erreichen.

AppletHTTP.receive(applet[, Größe])
Liest Daten aus dem HTTP-Body entsprechend dem angegebenen Lesevorgang Größe. Wenn der Größe is
fehlt, versucht die Funktion, den gesamten Inhalt des Streams bis zum Ende zu lesen. Wenn
Größe größer als der http-Body ist, gibt es die verfügbare Datenmenge zurück.

Argumente

· Applet (class_AppletHTTP) -- Ein AppletHTTP Klasse

· Größe (ganze Zahl) – die erforderliche Lesegröße.

Rücksendungen
Geben Sie immer einen String zurück. Der String kann leer sein, wenn die Verbindung geschlossen ist.

AppletHTTP.send(applet, Nachricht)
Senden Sie die Nachricht msg im http-Anfragetext.

Argumente

· Applet (class_AppletHTTP) -- Ein AppletHTTP Klasse

· msg (Schnur) – die zu sendende Nachricht.

Klasse AppletTCP()
Diese Klasse wird mit Applets verwendet, die den „TCP“-Modus erfordern. Das TCP-Applet kann sein
bei der registriert core.register_service() Funktion. Sie dienen der Verarbeitung
ein TCP-Stream wie ein Server hinter HAProxy.

AppletTCP.c

Rücksendungen
A Umwandler Klasse

Dieses Attribut enthält ein Konverter-Klassenobjekt.

AppletTCP.sc

Rücksendungen
A Umwandler Klasse

Dieses Attribut enthält ein Konverter-Klassenobjekt. Die Funktionen dieses Objekts
gibt immer einen String zurück.

AppletTCP.f

Rücksendungen
A Holt Klasse

Dieses Attribut enthält ein Fetches-Klassenobjekt.

AppletTCP.sf

Rücksendungen
A Holt Klasse

Dieses Attribut enthält ein Fetches-Klassenobjekt.

AppletTCP.getline(Applet)
Diese Funktion gibt einen String zurück, der eine Zeile aus dem Stream enthält. Wenn die Daten
Die zurückgegebenen Daten enthalten kein abschließendes „\n“. Es wird davon ausgegangen, dass es sich um die letzten verfügbaren Daten handelt
vor dem Ende des Streams.

Argumente

· Applet (class_AppletTCP) -- Ein AppletTCP Klasse

Rücksendungen
ein Faden. Der String kann leer sein, wenn wir das Ende des Streams erreichen.

AppletTCP.receive(applet[, Größe])
Liest Daten aus dem TCP-Stream entsprechend dem angegebenen Lesevorgang Größe. Wenn der Größe
fehlt, versucht die Funktion, den gesamten Inhalt des Streams bis zum Ende zu lesen.

Argumente

· Applet (class_AppletTCP) -- Ein AppletTCP Klasse

· Größe (ganze Zahl) – die erforderliche Lesegröße.

Rücksendungen
Geben Sie immer einen String zurück. Der String kann leer sein, wenn die Verbindung geschlossen ist.

AppletTCP.send(appletmsg)
Senden Sie die Nachricht im Stream.

Argumente

· Applet (class_AppletTCP) -- Ein AppletTCP Klasse

· msg (Schnur) – die zu sendende Nachricht.

Viele nützliche Lua-Bibliotheken finden Sie hier:

· https://lua-toolbox.com/

Redis-Zugriff:

· https://github.com/nrk/redis-lua

Dies ist ein Beispiel für die Verwendung der Redis-Bibliothek mit HAProxy. Beachten Sie, dass jeder Anruf
einer Funktion dieser Bibliothek kann einen Fehler auslösen, wenn die Socket-Verbindung fehlschlägt.

- Laden Sie die Redis-Bibliothek
local redis = require("redis");

Funktion do_something(txn)

-- Neuen TCP-Socket erstellen und verbinden
lokales TCP = core.tcp();
TCP:settimeout(1);
tcp:connect("127.0.0.1", 6379);

– Verwenden Sie die Redis-Bibliothek mit diesem neuen Socket
lokaler Client = redis.connect({socket=tcp});
client:ping();

Ende

OpenSSL:

· http://mkottman.github.io/luacrypto/index.html

· https://github.com/brunoos/luasec/wiki

Verwenden Sie haproxy-lua online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

  • 1
    SCHLUCK
    SCHLUCK
    SWIG ist ein Softwareentwicklungstool
    das verbindet in C geschriebene Programme und
    C++ mit einer Vielzahl von High-Level
    Programmiersprachen. SWIG wird mit verwendet
    anders...
    SWIG herunterladen
  • 2
    WooCommerce Nextjs Reaktionsthema
    WooCommerce Nextjs Reaktionsthema
    Reagieren Sie mit dem WooCommerce-Theme, das mit erstellt wurde
    Als nächstes JS, Webpack, Babel, Node und
    Express mit GraphQL und Apollo
    Klient. WooCommerce-Shop in React(
    enthält: Produkte...
    Laden Sie WooCommerce Nextjs React Theme herunter
  • 3
    archlabs_repo
    archlabs_repo
    Paket-Repo für ArchLabs Dies ist eine
    Anwendung, die auch abgerufen werden kann
    für
    https://sourceforge.net/projects/archlabs-repo/.
    Es wurde in OnWorks gehostet in...
    Laden Sie archlabs_repo herunter
  • 4
    Zephyr-Projekt
    Zephyr-Projekt
    Das Zephyr Project ist eine neue Generation
    Echtzeitbetriebssystem (RTOS), das
    unterstützt mehrere Hardware
    Architekturen. Es basiert auf einer
    Kernel mit kleinem Fußabdruck ...
    Laden Sie das Zephyr-Projekt herunter
  • 5
    SCons
    SCons
    SCons ist ein Software-Konstruktionstool
    das ist eine überlegene Alternative zum
    klassisches "Make"-Build-Tool, das
    wir alle kennen und lieben. SCons ist
    implementiert ein...
    Laden Sie SCons herunter
  • 6
    PSInt
    PSInt
    PSeInt ist ein Pseudocode-Interpreter für
    spanischsprachige Programmierstudenten.
    Sein Hauptzweck ist es, ein Werkzeug für
    Grundlegendes lernen und verstehen
    Konzept...
    PSeInt herunterladen
  • Mehr »

Linux-Befehle

Ad