EngelsFransSpaans

Ad


OnWorks-favicon

haproxy-lua - Online in de cloud

Voer haproxy-lua uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdracht haproxy-lua die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


haproxy-lua - haproxy-lua Documentatie

HAPROXY LUA RUNNING CONTEXTEN


De Lua-code die in HAProxy wordt uitgevoerd, kan in 2 hoofdmodi worden verwerkt. De eerste is de
initialisatie mode, en de tweede is de runtime mode.

· In de initialisatie mode, kunnen we DNS-oplossingen uitvoeren, maar we kunnen geen socket-I/O uitvoeren.
In deze initialisatiemodus blokkeerde HAProxy nog steeds tijdens de uitvoering van de Lua
programma.

· In de runtime mode, kunnen we geen DNS-oplossingen uitvoeren, maar we kunnen wel sockets gebruiken. De
uitvoering van de Lua-code wordt gemultiplext met de verwerking van verzoeken, dus de Lua-code
Het lijkt erop dat er sprake is van een blokkade, maar dat is niet het geval.

De Lua-code wordt in een of meer bestanden geladen. Deze bestanden bevatten hoofdcode en functies.
Lua heeft 6 uitvoeringscontext.

1. Het Lua-bestand lichaam verband. Het wordt uitgevoerd tijdens het laden van het Lua-bestand in het
HAProxy [globaal] sectie met de richtlijn lua-belasting. Het wordt uitgevoerd tijdens de initialisatie
modus. Deze sectie wordt gebruikt voor het configureren van Lua-bindingen in HAProxy.

2. De Lua init verband. Het is een Lua-functie die vlak na de HAProxy wordt uitgevoerd
configuratie parseren. De uitvoering bevindt zich in de initialisatiemodus. In dit kader de
HAProxy-omgeving is al geïnitialiseerd. Het is handig om de configuratie te controleren, of
initialiseren van socketverbindingen of taken. Deze functies worden in het lichaam aangegeven
context met de Lua-functie kern.register_init(). Het prototype van de functie is a
eenvoudige functie zonder retourwaarde en zonder parameters, zoals deze: functie fcn().

3. De Lua taak verband. Het is een Lua-functie die wordt uitgevoerd na het starten van de HAProxy
planner, en net na het declareren van de taak met de Lua-functie
kern.register_taak(). Deze context kan gelijktijdig plaatsvinden met de verkeersverwerking. Het is
uitgevoerd in runtime-modus. Het prototype van de functie is een eenvoudige functie zonder
retourwaarde en zonder parameters, zoals deze: functie fcn().

4. De actie verband. Het is een Lua-functie die voorwaardelijk wordt uitgevoerd. Deze acties zijn
geregistreerd door de Lua-richtlijnen "kern.register_action()". Het prototype van de Lua
genaamd functie is een functie die niets retourneert en waar een object van nodig is
klasse TXN als invoer. functie fcn(txn).

5. De monster ophalen verband. Deze functie neemt een TXN-object als invoerargument en
retourneert een tekenreeks. Dit soort functies kunnen geen enkele blokkeerfunctie uitvoeren. Zij
zijn handig om enkele originele HAProxy-voorbeeldophaalbewerkingen samen te voegen en het resultaat te retourneren.
Het prototype van de functie is functie snaar fcn(txn). Deze functies kunnen zijn
geregistreerd bij de Lua-functie core.register_fetch(). Elke gedeclareerde sample-fetch is
voorafgegaan door de tekenreeks "lua.".

NOTITIE: Het is mogelijk dat deze functie de vereiste gegevens niet in het origineel kan vinden
HAProxy haalt monsters op, in dit geval kan het het resultaat niet retourneren. Deze zaak is dat nog niet
ondersteund

6. De omvormer verband. Het is een Lua-functie die een string als invoer neemt en retourneert
nog een string als uitvoer. Dit soort functies zijn stateless, het heeft geen toegang tot
welke context dan ook. Ze voeren geen enkele blokkeerfunctie uit. Het oproepprototype is functie
snaar fcn(tekenreeks). Deze functie kan worden geregistreerd met de Lua-functie
core.register_converters(). Elke gedeclareerde converter wordt voorafgegaan door de tekenreeks "lua.".

HAPROXY LUA HALLO WORLD


HAProxy-configuratiebestand (hallo_wereld.conf):

globaal
lua-load hello_world.lua

luister proxy
binden 127.0.0.1:10001
tcp-verzoek inspectie-vertraging 1s
tcp-request inhoud gebruiksservice lua.hello_world

HAProxy Lua-bestand (hallo_wereld.lua):

core.register_service("hello_world", "tcp", functie(applet)
applet:send("hallo wereld\n")
einde)

Zo start u HAProxy voor het testen van deze configuratie:

./haproxy -f hallo_wereld.conf

Op een andere terminal kunt u testen met telnet:

#:~ telnet 127.0.0.1 10001
hallo wereld

klasse kern()
De klasse "core" bevat alle kernfuncties van HAProxy. Deze functies zijn nuttig
voor het controleren van de uitvoeringsstroom, het registreren van hooks, het manipuleren van globale kaarten
of ACL, ...

De klasse "core" wordt in principe geleverd met HAProxy. Nee vereisen lijn is vereist
maakt gebruik van deze functie.

De klasse "core" is statisch, het is niet mogelijk om een ​​nieuw object van dit type te maken.

kern.emerg

Retourneren
geheel getal

Dit attribuut is een geheel getal en bevat de waarde van het logniveau "emergency"
(0).

kern.alert

Retourneren
geheel getal

Dit attribuut is een geheel getal en bevat de waarde van het logniveau "alert" (1).

kernkritiek

Retourneren
geheel getal

Dit attribuut is een geheel getal, het bevat de waarde van het logniveau "kritiek" (2).

kern.err

Retourneren
geheel getal

Dit attribuut is een geheel getal en bevat de waarde van het logniveau "error" (3).

kern.waarschuwing

Retourneren
geheel getal

Dit attribuut is een geheel getal en bevat de waarde van het logniveau "waarschuwing" (4).

kern.opmerking

Retourneren
geheel getal

Dit attribuut is een geheel getal en bevat de waarde van het logniveau "notice" (5).

kern.info

Retourneren
geheel getal

Dit attribuut is een geheel getal en bevat de waarde van het logniveau "info" (6).

core.debug

Retourneren
geheel getal

Dit attribuut is een geheel getal en bevat de waarde van het logniveau "debug" (7).

core.log(logniveau, bericht)
verband: body, init, taak, actie, monster ophalen, converter

Deze functie verzendt een log. Het log wordt verzonden, conform de HAProxy
configuratiebestand, op de standaard syslog-server als deze is geconfigureerd en op de
stderr als het mag.

argumenten

· loglevel (geheel getal) -- Is het logniveau gekoppeld aan het bericht. Het is een
getal tussen 0 en 7.

· msg (snaar) -- De loginhoud.

Bekijk core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (logniveaudefinities)

Bekijk code.Debug

Bekijk kern.Info

Bekijk kern.Waarschuwing

Bekijk kern.Waarschuwing

kern.Debug(bericht)
verband: body, init, taak, actie, monster ophalen, converter

argumenten

· msg (snaar) -- De loginhoud.

Bekijk inloggen

Doet hetzelfde werk als:

functie Debug(bericht)
core.log(core.debug, bericht)
einde

kern.Info(bericht)
verband: body, init, taak, actie, monster ophalen, converter

argumenten

· msg (snaar) -- De loginhoud.

Bekijk inloggen

functie Info(bericht)
core.log(core.info, bericht)
einde

kern.Waarschuwing(bericht)
verband: body, init, taak, actie, monster ophalen, converter

argumenten

· msg (snaar) -- De loginhoud.

Bekijk inloggen

functie waarschuwing(bericht)
core.log(core.waarschuwing, bericht)
einde

kern.Waarschuwing(bericht)
verband: body, init, taak, actie, monster ophalen, converter

argumenten

· msg (snaar) -- De loginhoud.

Bekijk inloggen

functie Alarm(bericht)
core.log(core.alert, bericht)
einde

core.add_acl(bestandsnaam, key)
verband: init, taak, actie, monster ophalen, converter

Voeg de ACL toe sleutel in de ACL-lijst waarnaar het bestand verwijst bestandsnaam.

argumenten

· bestandsnaam (snaar) -- de bestandsnaam die verwijst naar de ACL-vermeldingen.

· sleutel (snaar) -- de sleutel die wordt toegevoegd.

core.del_acl(bestandsnaam, key)
verband: init, taak, actie, monster ophalen, converter

Verwijder de ACL-vermelding waarnaar door de sleutel wordt verwezen sleutel in de lijst met ACL's waarnaar wordt verwezen
bestandsnaam.

argumenten

· bestandsnaam (snaar) -- de bestandsnaam die verwijst naar de ACL-vermeldingen.

· sleutel (snaar) -- de sleutel die zal worden verwijderd.

core.del_map(bestandsnaam, key)
verband: init, taak, actie, monster ophalen, converter

Verwijder het kaartitem dat is geïndexeerd met de opgegeven sleutel in de lijst met kaarten waarnaar wordt verwezen
op basis van zijn bestandsnaam.

argumenten

· bestandsnaam (snaar) -- de bestandsnaam die verwijst naar de kaartitems.

· sleutel (snaar) -- de sleutel die zal worden verwijderd.

kern.msleep(milliseconden)
verband: lichaam, init, taak, actie

De kern.msleep() stopt de Lua-uitvoering tussen gespecificeerde milliseconden.

argumenten

· milliseconden (geheel getal) -- de vereiste milliseconden.

core.register_action(naam, acties, functie)
verband: lichaam

Registreer een uitgevoerde Lua-functie als actie. Alle geregistreerde acties kunnen worden gebruikt
in HAProxy met het voorvoegsel "lua.". Een actie krijgt een TXN-objectklasse als invoer.

argumenten

· naam (snaar) -- is de naam van de converter.

· acties (tafel) -- is een tabel met tekenreeksen die de HAProxy-acties beschrijft who
wilt registreren. De verwachte acties zijn 'tcp-req', 'tcp-res',
'http-req' of 'http-res'.

· func (functie) -- is de Lua-functie die wordt aangeroepen om als converter te werken.

Het prototype van de Lua-functie die als argument wordt gebruikt, is:

functie(txn)

·

bedankt (TXN klasse): dit is a TXN object gebruikt For manipuleren de
huidig ​​verzoek of TCP-stream.

Hier een voorbeeld van actieregistratie. de actie stuurt gewoon een 'Hallo wereld' in de
logs.

core.register_action("hello-world", { "tcp-req", "http-req" }, function(txn)
txn:Info("Hallo wereld")
einde)
Deze voorbeeldcode wordt als volgt gebruikt in de HAproxy-configuratie:

frontend tcp_frt
modus tcp
tcp-request inhoud lua.hello-world

frontend http_frt
modus http
http-verzoek lua.hello-world

core.register_converters(naam, functie)
verband: lichaam

Registreer een Lua-functie die als converter wordt uitgevoerd. Alle geregistreerde converters kunnen dat zijn
gebruikt in HAProxy met het voorvoegsel "lua.". Een converter krijgt een string als invoer en
retourneer een string als uitvoer. De geregistreerde functie kan maximaal 9 waarden aannemen
parameter. Alle waarden zijn tekenreeksen.

argumenten

· naam (snaar) -- is de naam van de converter.

· func (functie) -- is de Lua-functie die wordt aangeroepen om als converter te werken.

Het prototype van de Lua-functie die als argument wordt gebruikt, is:

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

· str (snaar): dit is de invoerwaarde die automatisch wordt omgezet in string.

· p1 .. p5 (snaar): dit is een lijst met stringargumenten die zijn gedeclareerd in de haroxy
configuratiebestand. Het aantal argumenten is niet groter dan 5. De volgorde en de
De aard hiervan wordt gewoonlijk door de ontwikkelaar gekozen.

core.register_fetches(naam, functie)
verband: lichaam

Registreer een Lua-functie die wordt uitgevoerd als het ophalen van monsters. Alle geregistreerde monsterophaalacties
kan in HAProxy worden gebruikt met het voorvoegsel "lua.". Een Lua-voorbeeld haalt een string terug
als uitvoer. De geregistreerde functie kan maximaal 9 waarden als parameter aannemen. Al de
waarde zijn tekenreeksen.

argumenten

· naam (snaar) -- is de naam van de converter.

· func (functie) -- is de Lua-functie die wordt aangeroepen om te werken als voorbeeldophaalactie.

Het prototype van de Lua-functie die als argument wordt gebruikt, is:

tekenreeksfunctie(txn, [p1 [, p2 [, ... [, p5]]]])

· bedankt (TXN klasse): dit is het txn-object dat is gekoppeld aan het huidige verzoek.

· p1 .. p5 (snaar): dit is een lijst met stringargumenten die zijn gedeclareerd in de haroxy
configuratiebestand. Het aantal argumenten is niet groter dan 5. De volgorde en de
De aard hiervan wordt gewoonlijk door de ontwikkelaar gekozen.

· Retourneren: Een tekenreeks die bepaalde gegevens bevat, niet nul als de waarde nu niet kan worden geretourneerd.

lua voorbeeldcode:

core.register_fetches("hallo", functie(txn)
retourneer "hallo"
einde)
HAProxy voorbeeldconfiguratie:

frontend voorbeeld
http-verzoek omleidingslocatie /%[lua.hello]

core.register_service(naam, mode, functie)
verband: lichaam

Registreer een Lua-functie die als service wordt uitgevoerd. Alle geregistreerde diensten kunnen zijn
gebruikt in HAProxy met het voorvoegsel "lua.". Een service krijgt een objectklasse als invoer
volgens de vereiste modus.

argumenten

· naam (snaar) -- is de naam van de converter.

· mode (snaar) -- is een tekenreeks die de vereiste modus beschrijft. Alleen 'tcp' of
'http' zijn toegestaan.

· func (functie) -- is de Lua-functie die wordt aangeroepen om als converter te werken.

Het prototype van de Lua-functie die als argument wordt gebruikt, is:

functie(applet)

· applet applet zal een ... zijn AppletTCP klasse of AppletHTTP klasse. Het hangt af van het type
van geregistreerde applet. Een applet geregistreerd met de 'http'-waarde voor het mode
parameter krijgt een AppletHTTP klasse. Indien de mode waarde is 'tcp', de applet zal dat doen
krijgt een AppletTCP klasse.

waarschuwing: Applets van het type 'http' kunnen niet worden aangeroepen vanuit 'tcp-' regelsets. Alleen de 'http-'
regelsets zijn geautoriseerd, dit betekent dat het niet mogelijk is om een ​​HTTP-applet aan te roepen vanuit een
proxy in TCP-modus. Applets van het type 'tcp' kunnen overal vandaan worden aangeroepen.

Hier een voorbeeld van serviceregistratie. de service stuurt gewoon een 'Hallo wereld' als een
http-antwoord.

core.register_service("hello-world", "http", function(applet)
lokaal antwoord = "Hallo wereld!"
applet:set_status(200)
applet:add_header("inhoud-lengte", string.len(antwoord))
applet:add_header("inhoudstype", "tekst/plain")
applet:start_response()
applet:verzenden(antwoord)
einde)
Deze voorbeeldcode wordt als volgt gebruikt in de HAproxy-configuratie:

frontend voorbeeld
http-verzoek gebruik-service lua.hello-world

kern.register_init(func)
verband: lichaam

Registreer een functie die wordt uitgevoerd na het parseren van de configuratie. Dit is handig om
controleer eventuele parameters.

argumenten

· func (functie) - is de Lua-functie die wordt aangeroepen om als initialisator te werken.

Het prototype van de Lua-functie die als argument wordt gebruikt, is:

functie()
Er is geen input voor nodig en er wordt ook geen output verwacht.

kern.register_taak(func)
verband: body, init, taak, actie, monster ophalen, converter

Registreer en start een onafhankelijke taak. De taak wordt gestart wanneer de HAProxy main
planner start. Dit type taken kan bijvoorbeeld worden uitgevoerd om complex uit te voeren
gezondheidchecks.

argumenten

· func (functie) - is de Lua-functie die wordt aangeroepen om als initialisator te werken.

Het prototype van de Lua-functie die als argument wordt gebruikt, is:

functie()
Er is geen input voor nodig en er wordt ook geen output verwacht.

core.set_nice(leuk)
verband: taak, actie, monster ophalen, converter

Verander het karakter van de huidige taak of huidige sessie.

argumenten

· mooi (geheel getal) -- de mooie waarde, deze moet tussen -1024 en 1024 liggen.

core.set_map(bestandsnaam, key, waarde)
verband: init, taak, actie, monster ophalen, converter

stel de waarde in waarde gekoppeld aan de sleutel sleutel op de kaart waarnaar wordt verwezen door bestandsnaam.

argumenten

· bestandsnaam (snaar) -- de kaartreferentie

· sleutel (snaar) -- de sleutel die moet worden ingesteld of vervangen

· waarde (snaar) -- de bijbehorende waarde

kern.slaap(int seconden)
verband: lichaam, init, taak, actie

De kern.slaap() functies stoppen de Lua-uitvoering tussen gespecificeerde seconden.

argumenten

· seconden (geheel getal) -- de vereiste seconden.

kern.tcp()
verband: init, taak, actie

Deze functie retourneert een nieuw object van a stopcontact klasse.

Retourneren
A Stopcontact klasse voorwerp.

core.done(gegevens)
verband: body, init, taak, actie, monster ophalen, converter

argumenten

· gegevens (elke) -- Retourneer enkele gegevens voor de beller. Het is handig bij
sample-ophaalacties en sample-converters.

Stopt onmiddellijk de huidige Lua-uitvoering en keert terug naar de beller die mogelijk is
een voorbeeldophaalactie, een converter of een actie en retourneert de opgegeven waarde (genegeerd
voor acties). Het wordt gebruikt wanneer het LUA-proces zijn werk heeft afgerond en wil geven
stuur de besturing terug naar HAProxy zonder de resterende code uit te voeren. Het kan gezien worden als
een "terugkeer" op meerdere niveaus.

kern.opbrengst()
verband: taak, actie, monster ophalen, converter

Geef de hand terug bij de HAProxy-planner. Het wordt gebruikt bij de LUA-verwerking
kost veel verwerkingstijd.

klasse Ophalen()
Deze klasse bevat veel interne HAProxy-voorbeeldophaalacties. Zie de HAProxy
"configuration.txt" documentatie voor meer informatie over haar gebruik. zij zijn
de hoofdstukken 7.3.2 tot en met 7.3.6.

waarschuwing sommige voorbeeldophaalacties zijn in een bepaalde context niet beschikbaar. Deze beperkingen
worden in deze documentatie gespecificeerd wanneer ze nuttig zijn.

Bekijk TXN.f

Bekijk TXN.sf

Ophalen is handig voor:

· krijg systeemtijd,

· krijg omgevingsvariabele,

· krijg willekeurige getallen,

· bekende backend-status zoals het aantal gebruikers in de wachtrij of het aantal
verbindingen tot stand gebracht,

· klantinformatie zoals IP-bron of -bestemming,

· omgaan met stoktafels,

· Vastgestelde SSL-informatie,

· HTTP-informatie zoals headers of methode.

functie actie(txn)
-- Bron-IP ophalen
lokale clientip = txn.f:src()
einde

klasse Converters()
Deze klasse bevat veel interne HAProxy-monsterconverters. Zie de HAProxy
documentatie "configuration.txt" voor meer informatie over haar gebruik. Het is de
hoofdstuk 7.3.1.

Bekijk TXN.c

Bekijk TXN.sc

Converters bieden statefull-transformatie. Ze zijn nuttig voor:

· invoer converteren naar base64,

· hash toepassen op invoerreeks (djb2, crc32, sdbm, wt6),

· formaat datum,

· json-ontsnapping,

· voorkeurstaal extraheren door twee lijsten te vergelijken,

· ga naar lagere of hogere tekens,

· omgaan met stoktafels.

klasse Kanaal()
HAProxy gebruikt twee buffers voor de verwerking van de verzoeken. De eerste wordt gebruikt
met de verzoekgegevens (van de client naar de server) en de tweede wordt gebruikt
de responsgegevens (van de server naar de client).

Elke buffer bevat twee soorten gegevens. Het eerste type is het wachten op binnenkomende gegevens
voor een verwerking. Het tweede deel zijn de uitgaande gegevens die al zijn verwerkt. Gebruikelijk,
de binnenkomende gegevens worden verwerkt, nadat deze zijn getagd als uitgaande gegevens, en ten slotte
is verstuurd. De volgende functies bieden hulpmiddelen voor het manipuleren van deze gegevens in een
buffer.

Het volgende diagram laat zien waar de kanaalklassefunctie wordt toegepast.

waarschuwing: Het is niet mogelijk om uit het antwoord in de verzoekactie te lezen, en dat is het ook
niet mogelijk om te lezen voor het verzoekkanaal in reactieactie.
[foto]

Kanaal.dup(kanaal)
Deze functie retourneert een tekenreeks die de gehele buffer bevat. De gegevens zijn dat niet
uit de buffer verwijderen en later opnieuw verwerken.

Als de buffer niet meer gegevens kan ontvangen, wordt een 'nul'-waarde geretourneerd.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

Retourneren
een string met alle beschikbare gegevens of nul.

Kanaal.get(kanaal)
Deze functie retourneert een tekenreeks die de gehele buffer bevat. De gegevens worden verbruikt
uit de buffer.

Als de buffer niet meer gegevens kan ontvangen, wordt een 'nul'-waarde geretourneerd.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

Retourneren
een string met alle beschikbare gegevens of nul.

Kanaal.getline(kanaal)
Deze functie retourneert een tekenreeks die de eerste regel van de buffer bevat. De data
wordt verbruikt. Als de geretourneerde gegevens geen laatste 'n' bevatten, wordt ervan uitgegaan dat het zo is
de laatst beschikbare gegevens in de buffer.

Als de buffer niet meer gegevens kan ontvangen, wordt een 'nul'-waarde geretourneerd.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

Retourneren
een string die de beschikbare regel bevat of nul.

Kanaal.set(kanaal, draad)
Deze functie vervangt de inhoud van de buffer door de string. De functie keert terug
de gekopieerde lengte, anders retourneert het -1.

De dataset met deze functie wordt niet verzonden. Ze wachten op het einde van HAProxy
verwerken, zodat de buffer vol kan zijn.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

· snaar (snaar) -- De gegevens die worden verzonden.

Retourneren
een geheel getal dat het aantal gekopieerde bytes bevat, of -1.

Kanaal.toevoegen(kanaal, draad)
Deze functie voegt het stringargument toe aan de inhoud van de buffer. De functie
retourneert de gekopieerde lengte, anders retourneert het -1.

De dataset met deze functie wordt niet verzonden. Ze wachten op het einde van HAProxy
verwerken, zodat de buffer vol kan zijn.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

· snaar (snaar) -- De gegevens die worden verzonden.

Retourneren
een geheel getal dat het aantal gekopieerde bytes bevat, of -1.

Kanaal.verzenden(kanaal, draad)
Deze functie vereiste onmiddellijke verzending van de gegevens. Tenzij er sprake is van een verbinding
sluiten, de buffer wordt regelmatig leeggemaakt en alle strings kunnen worden verzonden.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

· snaar (snaar) -- De gegevens die worden verzonden.

Retourneren
een geheel getal dat het aantal gekopieerde bytes bevat, of -1.

Kanaal.get_in_length(kanaal)
Deze functie retourneert de lengte van het invoergedeelte van de buffer.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

Retourneren
een geheel getal dat het aantal beschikbare bytes bevat.

Kanaal.get_out_length(kanaal)
Deze functie retourneert de lengte van het uitvoergedeelte van de buffer.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

Retourneren
een geheel getal dat het aantal beschikbare bytes bevat.

Kanaal.forward(kanaal, int)
Deze functie brengt bytes over van het invoergedeelte van de buffer naar het uitvoergedeelte.

argumenten

· kanaal (klasse_kanaal) -- Het gemanipuleerde kanaal.

· int (geheel getal) -- De hoeveelheid gegevens die wordt doorgestuurd.

klasse HTTP()
Deze klasse bevat alle HTTP-manipulatiefuncties.

HTTP.req_get_headers(http)
Retourneert een array met alle verzoekheaders.

argumenten

· http (class_http) -- Het gerelateerde http-object.

Retourneren
reeks kopteksten.

Bekijk HTTP.res_get_headers()

Dit is de vorm van de geretourneerde array:

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

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

HTTP.res_get_headers(http)
Retourneert een array met alle antwoordheaders.

argumenten

· http (class_http) -- Het gerelateerde http-object.

Retourneren
reeks kopteksten.

Bekijk HTTP.req_get_headers()

Dit is de vorm van de geretourneerde array:

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

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

HTTP.req_add_header(http, naam, waarde)
Voegt een HTTP-headerveld toe aan de aanvraag waarvan de naam is opgegeven in "name" en
waarvan de waarde is gedefinieerd in "waarde".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

· waarde (snaar) -- De headerwaarde.

Bekijk HTTP.res_add_header()

HTTP.res_add_header(http, naam, waarde)
voegt een HTTP-headerveld toe aan het antwoord waarvan de naam is opgegeven in "name" en
waarvan de waarde is gedefinieerd in "waarde".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

· waarde (snaar) -- De headerwaarde.

Bekijk HTTP.req_add_header()

HTTP.req_del_header(http, naam)
Verwijdert alle HTTP-headervelden in de aanvraag waarvan de naam is opgegeven in "name".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

Bekijk HTTP.res_del_header()

HTTP.res_del_header(http, naam)
Verwijdert alle HTTP-headervelden in het antwoord waarvan de naam is opgegeven in "name".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

Bekijk HTTP.req_del_header()

HTTP.req_set_header(http, naam, waarde)
Deze variabele vervangt alle voorkomens van alle headers "naam", door slechts één bevattende
de waarde".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

· waarde (snaar) -- De headerwaarde.

Bekijk HTTP.res_set_header()

Deze functie doet hetzelfde werk als de volgende code:

functie fcn(txn)
TXN.http:req_del_header("header")
TXN.http:req_add_header("header", "waarde")
einde

HTTP.res_set_header(http, naam, waarde)
Deze variabele vervangt alle voorkomens van alle headers "naam", door slechts één bevattende
de waarde".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

· waarde (snaar) -- De headerwaarde.

Bekijk HTTP.req_rep_header()

HTTP.req_rep_header(http, naam, regex, vervangen)
Komt overeen met de reguliere expressie in alle voorkomens van koptekstveld "naam".
naar "regex", en vervangt ze door het argument "replace". De vervangingswaarde
kan terugverwijzingen bevatten zoals 1, 2, ... Deze functie werkt met het verzoek.

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

· regex (snaar) -- De reguliere expressie van de overeenkomst.

· vervangen (snaar) -- De vervangingswaarde.

Bekijk HTTP.res_rep_header()

HTTP.res_rep_header(http, naam, regex, draad)
Komt overeen met de reguliere expressie in alle voorkomens van koptekstveld "naam".
naar "regex", en vervangt ze door het argument "replace". De vervangingswaarde
kan terugverwijzingen bevatten zoals 1, 2, ... Deze functie werkt met het verzoek.

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

· regex (snaar) -- De reguliere expressie van de overeenkomst.

· vervangen (snaar) -- De vervangingswaarde.

Bekijk HTTP.req_replace_header()

HTTP.req_replace_value(http, naam, regex, vervangen)
Werkt als "HTTP.req_replace_header()", behalve dat het overeenkomt met de regex
elke door komma's gescheiden waarde van het kopveld "name" in plaats van de gehele
header.

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

· regex (snaar) -- De reguliere expressie van de overeenkomst.

· vervangen (snaar) -- De vervangingswaarde.

Bekijk HTTP.req_replace_header()

Bekijk HTTP.res_replace_value()

HTTP.res_replace_value(http, naam, regex, vervangen)
Werkt als "HTTP.res_replace_header()" behalve dat het overeenkomt met de regex
elke door komma's gescheiden waarde van het kopveld "name" in plaats van de gehele
header.

argumenten

· http (class_http) -- Het gerelateerde http-object.

· naam (snaar) -- De headernaam.

· regex (snaar) -- De reguliere expressie van de overeenkomst.

· vervangen (snaar) -- De vervangingswaarde.

Bekijk HTTP.res_replace_header()

Bekijk HTTP.req_replace_value()

HTTP.req_set_method(http, methode)
Herschrijft de verzoekmethode met de parameter "methode".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· methode (snaar) -- De nieuwe methode.

HTTP.req_set_path(http, path)
Herschrijft het aanvraagpad met de parameter "path".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· pad (snaar) -- Het nieuwe pad.

HTTP.req_set_query(http, vraag)
Herschrijft de queryreeks van het verzoek die na het eerste vraagteken verschijnt
("?") met de parameter "query".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· vraag (snaar) -- De nieuwe zoekopdracht.

HTTP.req_set_uri(http, uri)
Herschrijft de aanvraag-URI met de parameter "uri".

argumenten

· http (class_http) -- Het gerelateerde http-object.

· Links (snaar) -- De nieuwe uri.

HTTP.res_set_status(http, toestand)
Herschrijft de antwoordstatuscode met de parameter "code". Merk op dat de reden
wordt automatisch aangepast aan de nieuwe code.

argumenten

· http (class_http) -- Het gerelateerde http-object.

· toestand (geheel getal) -- De nieuwe antwoordstatuscode.

klasse TXN()
De klasse txn bevat alle functies die betrekking hebben op de http- of tcp-transactie
(Let op: een TCP-stream is hetzelfde als een TCP-transactie, maar dan een HTTP-transactie
is niet hetzelfde als een TCP-stream).

Het gebruik van deze klasse maakt het mogelijk om gegevens uit de verzoeken op te halen, deze te wijzigen en
doorsturen.

Alle functies van deze klasse zijn beschikbaar in de context
monster-ophaalacties en acties.

TXN.c

Retourneren
An Converters klasse.

Dit attribuut bevat een klasseobject Converters.

TXN.sc

Retourneren
An Converters klasse.

Dit attribuut bevat een klasseobject Converters. De functies van dit object
retourneert altijd een string.

TXN.f

Retourneren
An Ophaalt klasse.

Dit attribuut bevat een klasseobject Fetches.

TXN.sf

Retourneren
An Ophaalt klasse.

Dit attribuut bevat een klasseobject Fetches. De functies van dit object
retourneert altijd een string.

TXN.verzoek

Retourneren
An Kanaal klasse.

Dit attribuut bevat een kanaalklasseobject voor de verzoekbuffer.

TXN.res

Retourneren
An Kanaal klasse.

Dit attribuut bevat een kanaalklasseobject voor de antwoordbuffer.

TXN.http

Retourneren
An HTTP klasse.

Dit attribuut bevat een HTTP-klasseobject. Het is alleen beschikbaar als de proxy dit heeft gedaan
de "mode http" ingeschakeld.

TXN.log(TXN, Log niveau, bericht)
Deze functie verzendt een log. Het log wordt verzonden, conform de HAProxy
configuratiebestand, op de standaard syslog-server als deze is geconfigureerd en op de
stderr als het mag.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· loglevel (geheel getal) -- Is het logniveau gekoppeld aan het bericht. Het is een
getal tussen 0 en 7.

· msg (snaar) -- De loginhoud.

Bekijk core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (logniveaudefinities)

Bekijk TXN.deflog

Bekijk TXN.Debug

Bekijk TXN.Info

Bekijk TXN.Waarschuwing

Bekijk TXN.Waarschuwing

TXN.deflog(TXN, bericht)
Stuurt een logregel met het standaardlogniveau voor de proxy die is gekoppeld aan de
transactie.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· msg (snaar) -- De loginhoud.

Bekijk TXN.log

TXN.Debug(txn, bericht)

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· msg (snaar) -- De loginhoud.

Bekijk TXN.log

Doet hetzelfde werk als:

functie Debug(txn, bericht)
TXN.log(txn, core.debug, bericht)
einde

TXN.Info(txn, bericht)

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· msg (snaar) -- De loginhoud.

Bekijk TXN.log

functie Debug(txn, bericht)
TXN.log(txn, core.info, bericht)
einde

TXN.Waarschuwing(txn, bericht)

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· msg (snaar) -- De loginhoud.

Bekijk TXN.log

functie Debug(txn, bericht)
TXN.log(txn, kern.waarschuwing, bericht)
einde

TXN.Waarschuwing(txn, bericht)

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· msg (snaar) -- De loginhoud.

Bekijk TXN.log

functie Debug(txn, bericht)
TXN.log(txn, core.alert, bericht)
einde

TXN.get_priv(txn)
Retourneer Lua-gegevens die zijn opgeslagen in de huidige transactie (met de TXN.set_priv())
functie. Als er geen gegevens zijn opgeslagen, retourneert het een nulwaarde.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

Retourneren
de ondoorzichtige gegevens die eerder zijn opgeslagen, of nul als er niets beschikbaar is.

TXN.set_priv(txn, gegevens)
Sla alle gegevens op in de huidige HAProxy-transactie. Deze actie vervangt de oude
opgeslagen informatie.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· gegevens (ondoorzichtig) -- De gegevens die in de transactie zijn opgeslagen.

TXN.set_var(TXN, er is, waarde)
Converteert een Lua-type naar een HAProxy-type en slaat het op in een variabele .

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· var (snaar) -- De variabelenaam overeenkomstig de HAProxy-variabele
syntaxis.

· waarde (ondoorzichtig) -- De gegevens die in de variabele zijn opgeslagen.

TXN.get_var(TXN, var)
Retourneert gegevens die zijn opgeslagen in de variabele converter in Lua-type.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· var (snaar) -- De variabelenaam overeenkomstig de HAProxy-variabele
syntaxis.

TXN.get_headers(txn)
Deze functie retourneert een array met headers.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

Retourneren
een reeks kopteksten.

TXN.klaar(txn)
Deze functie beëindigt de verwerking van de transactie en de bijbehorende sessie.
Het kan worden gebruikt wanneer een kritieke fout wordt gedetecteerd of om de verwerking daarna te beëindigen
sommige gegevens zijn teruggestuurd naar de client (bijvoorbeeld: een omleiding).

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

TXN.set_logniveau(txn, Log niveau)
Wordt gebruikt om het logniveau van het huidige verzoek te wijzigen. Het "logniveau" moet een
geheel getal tussen 0 en 7.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· loglevel (geheel getal) -- Het vereiste logniveau. Deze variabele kan een van zijn

Bekijk kern.

TXN.set_tos(txn, tos)
Wordt gebruikt om de TOS- of DSCP-veldwaarde in te stellen van pakketten die naar de client worden verzonden
waarde doorgegeven in "tos" op platforms die dit ondersteunen.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· tos (geheel getal) -- De nieuwe TOS van DSCP.

TXN.set_mark(txn, markering)
Wordt gebruikt om de Netfilter MARK op alle pakketten die naar de client worden verzonden, op de waarde in te stellen
doorgegeven in "mark" op platforms die dit ondersteunen.

argumenten

· bedankt (class_txn) -- Het klasse txn-object dat de gegevens bevat.

· Mark (geheel getal) -- De markwaarde.

klasse Stopcontact()
Deze klasse moet compatibel zijn met de Lua Socket-klasse. Alleen de 'klant'
functies zijn beschikbaar. Zie de Lua Socket-documentatie:

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

Stekkerdoosdicht(stopcontact)
Sluit een TCP-object. De interne socket die door het object wordt gebruikt, is gesloten en de lokale
adres waaraan het object was gebonden, wordt beschikbaar gemaakt voor andere toepassingen. Nee
verdere bewerkingen (behalve verdere aanroepen van de close-methode) zijn toegestaan ​​op a
gesloten stopcontact.

argumenten

· stopcontact (klasse_socket) -- Is de gemanipuleerde Socket.

Opmerking: Het is belangrijk om alle gebruikte stopcontacten te sluiten zodra ze niet meer nodig zijn
Bij veel systemen gebruikt elke socket een bestandsdescriptor, wat een beperkt systeem is
bronnen. Afvalinzamelingsobjecten worden automatisch gesloten voordat ze worden vernietigd,
dat wel.

Socket.connect(contactdoos, adres[, haven])
Pogingen om een ​​socketobject te verbinden met een externe host.

In geval van een fout retourneert de methode nul, gevolgd door een tekenreeks die de fout beschrijft.
Bij succes retourneert de methode 1.

argumenten

· stopcontact (klasse_socket) -- Is de gemanipuleerde Socket.

· adres (snaar) -- kan een IP-adres of een hostnaam zijn. Zie hieronder voor
meer informatie.

· port (geheel getal) -- moet een geheel getal zijn in het bereik [1..64K].

Retourneren
1 of nul.

een adresveldextensie maakt het mogelijk om de connect()-functie te gebruiken om verbinding mee te maken
andere stream dan TCP. De syntaxis die een simpleipv4- of ipv6-adres bevat, is de
eigenlijk verwacht formaat. Voor dit formaat is de poort vereist.

Een ander geaccepteerd formaat is een socketpad zoals "/socket/path", waarmee verbinding kan worden gemaakt
naar een stopcontact. abstracte naamruimten worden ondersteund met het voorvoegsel "abns@", en tenslotte
een filedescriotr kan worden doorgegeven met het voorvoegsel "fd@". Het voorvoegsel "ipv4@", "ipv6@"
en "unix@" worden ook ondersteund. De poort kan in de string worden doorgegeven. De syntaxis
"127.0.0.1:1234" is geldig. in dit geval de parameter port wordt genegeerd.

Socket.connect_ssl(socket, adres, poort)
Hetzelfde gedrag als de functie socket:connect, maar gebruikt SSL.

argumenten

· stopcontact (klasse_socket) -- Is de gemanipuleerde Socket.

Retourneren
1 of nul.

Socket.getpeernaam(socket)
Retourneert informatie over de externe kant van een verbonden clientobject.

Retourneert een tekenreeks met het IP-adres van de peer, gevolgd door het poortnummer dat
peer gebruikt voor de verbinding. In geval van een fout retourneert de methode nul.

argumenten

· stopcontact (klasse_socket) -- Is de gemanipuleerde Socket.

Retourneren
een string die de serverinformatie bevat.

Socket.getsocknaam(socket)
Retourneert de lokale adresgegevens die aan het object zijn gekoppeld.

De methode retourneert een string met lokaal IP-adres en een nummer met de poort. In
In geval van een fout retourneert de methode nul.

argumenten

· stopcontact (klasse_socket) -- Is de gemanipuleerde Socket.

Retourneren
een string die de klantinformatie bevat.

Socket.ontvangen(socket[, patroon[, voorvoegsel]])
Leest gegevens van een clientobject, volgens het opgegeven leespatroon. Patronen
volg het Lua-bestand I/O-formaat en het verschil in prestaties tussen alle
patronen zijn verwaarloosbaar.

argumenten

· stopcontact (klasse_socket) -- Is de gemanipuleerde Socket.

· patroon (string|geheel getal) -- Beschrijf wat er nodig is (zie hieronder).

· voorvoegsel (snaar) -- Een tekenreeks die het voorvoegsel zal zijn van de geretourneerde gegevens.

Retourneren
een string met de vereiste gegevens of nul.

Patroon kan een van de volgende zijn:

·

`*een`: leest oppompen van de stopcontact tot de versterken is Gesloten. Nee
end-of-line vertaling wordt uitgevoerd;

·

`*l`: leest a lijn of tekst oppompen van de Stopcontact. De lijn is beëindigd by a
LF-teken (ASCII 10), eventueel voorafgegaan door een CR-teken (ASCII 13).
De CR- en LF-tekens zijn niet opgenomen in de geretourneerde regel. In werkelijkheid,
alle CR-tekens worden door het patroon genegeerd. Dit is het standaardpatroon.

·

aantal: oorzaken de methode naar dit artikel lezen a gespecificeerd aantal of bytes oppompen van de
Stopcontact. Prefix is ​​een optionele tekenreeks die aan het begin moet worden samengevoegd
van alle ontvangen gegevens voordat deze worden geretourneerd.

· leeg: Als het patroon leeg wordt gelaten, is dit de standaardoptie *l.

Als dit lukt, retourneert de methode het ontvangen patroon. In geval van een fout, de
methode retourneert nul gevolgd door een foutmelding die de tekenreeks 'ingesloten' kan zijn
geval de verbinding werd gesloten voordat de transmissie of de string was voltooid
'time-out' voor het geval er een time-out was tijdens de bewerking. Ook na de fout
bericht retourneert de functie het gedeeltelijke resultaat van de verzending.

Belangrijke opmerking: deze functie is ingrijpend gewijzigd. Vroeger ondersteunde het meerdere
patronen (maar ik heb deze functie nog nooit gebruikt zien worden) en nu niet meer.
Gedeeltelijke resultaten werden vroeger op dezelfde manier geretourneerd als succesvolle resultaten. Dit
laatste kenmerk was in strijd met het idee dat alle functies bij een fout nul zouden moeten opleveren. Dus
het werd ook veranderd.

Socket.send(socket, gegevens[, begin[, einde]])
Verzendt gegevens via een clientobject.

argumenten

· stopcontact (klasse_socket) -- Is de gemanipuleerde Socket.

· gegevens (snaar) -- De gegevens die worden verzonden.

· begin (geheel getal) -- De startpositie in de buffer van de gegevens die dat wel zullen doen
worden verzonden.

· einde (geheel getal) -- De eindpositie in de buffer van de gegevens die zullen worden
verzonden.

Retourneren
zie hieronder.

Gegevens zijn de tekenreeks die moet worden verzonden. De optionele argumenten i en j werken precies zoals de
standaard string.sub Lua-functie om de selectie van een te verzenden substring mogelijk te maken.

Als dit lukt, retourneert de methode de index van de laatste byte binnen [start, end]
dat is verzonden. Merk op dat, als start 1 of afwezig is, dit in feite de
totaal aantal verzonden bytes. In geval van een fout retourneert de methode nul, gevolgd door
een foutmelding, gevolgd door de index van de laatste byte binnen [start, end] that
is verzonden. Misschien wilt u het opnieuw proberen vanaf de byte die daarop volgt. De fout
bericht kan worden 'gesloten' in het geval dat de verbinding werd verbroken vóór de verzending
is voltooid of de tekenreeks 'time-out' voor het geval er een time-out heeft plaatsgevonden tijdens de
operatie.

Opmerking: de uitvoer wordt niet gebufferd. Voor kleine strings is het altijd beter om aaneen te schakelen
ze in Lua (met de '..' operator) en stuur het resultaat in één oproep in plaats van
de methode meerdere keren aanroepen.

Socket.setoptie(socket, keuze[, waarde])
Deze cal is zojuist geïmplementeerd voor compatibiliteit en doet niets.

Socket.settimeout(socket, waarde[, modus])
Wijzigt de time-outwaarden voor het object. Alle I/O-bewerkingen blokkeren. Dat
is dat elke aanroep naar de methoden verzenden, ontvangen en accepteren voor onbepaalde tijd wordt geblokkeerd,
totdat de bewerking is voltooid. De settimeout-methode definieert een limiet voor het bedrag
van de tijd die de I/O-methoden kunnen blokkeren. Wanneer een time-outtijd is verstreken, wordt de getroffen
methoden geven het op en mislukken met een foutcode.

De hoeveelheid tijd die moet worden gewacht, wordt opgegeven als de waardeparameter in seconden.

De time-outmodi zijn door bot geïmplementeerd, de enige instelbare time-out is de inactiviteit
tijd die wacht op het voltooien van het verzenden van de interne buffer of wachten op het ontvangen van gegevens.

argumenten

· stopcontact (klasse_socket) -- Is de gemanipuleerde Socket.

· waarde (geheel getal) -- De time-outwaarde.

klasse Kaart()
Deze klasse maakt het mogelijk om wat op te zoeken in HAProxy-kaarten. De aangegeven kaarten kunnen dat zijn
gewijzigd tijdens de looptijd via de HAProxy-beheersocket.

standaard = "VS"

-- Kaart maken en laden
geo = Map.new("geo.map", Map.ip);

-- Maak een nieuwe ophaalactie die het land van de gebruiker retourneert
core.register_fetches("land", functie(txn)
lokale src;
lokale loc;

src = txn.f:fhdr("x-doorgestuurd-voor");
als (src == nul) dan
src = txn.f:src()
als (src == nul) dan
standaard retourneren;
einde
einde

-- Voer een zoekopdracht uit
loc = geo: opzoeken(src);

als (loc == nul) dan
standaard retourneren;
einde

retour loc;
einde);

Kaart.int
Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaart.ip Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaart.str
Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaart.beg
Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaart.sub
Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaart.dir
Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaartdom
Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaart.einde
Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaart.reg
Zie het HAProxy configuratie.txt bestand, hoofdstuk "ACL's gebruiken en voorbeelden ophalen"
en subhoofdstuk "ACL-basisprincipes" om deze patroonmatchingsmethode te begrijpen.

Kaart.nieuw(bestand, methode)
Maakt en laadt een kaart.

argumenten

· filet (snaar) -- Is het bestand dat de kaart bevat.

· methode (geheel getal) -- Is de methode voor het matchen van kaartpatronen. Zie de attributen
van de kaartklasse.

Retourneren
een klasse Map-object.

Bekijk De kaartkenmerken.

Kaart opzoeken(kaart, str)
Voer een zoekopdracht uit op een kaart.

argumenten

· kaart (klasse_kaart) -- Is het klasse Map-object.

· str (snaar) -- Is de tekenreeks die als sleutel wordt gebruikt.

Retourneren
een string met het resultaat of nul als er geen overeenkomst is.

Map.slookup(kaart, str)
Voer een zoekopdracht uit op een kaart.

argumenten

· kaart (klasse_kaart) -- Is het klasse Map-object.

· str (snaar) -- Is de tekenreeks die als sleutel wordt gebruikt.

Retourneren
een string met het resultaat of een lege string als er geen overeenkomst is.

klasse AppletHTTP()
Deze klasse wordt gebruikt met applets waarvoor de 'http'-modus vereist is. De http-applet kan dat wel
ingeschreven zijn bij de kern.register_service() functie. Ze worden gebruikt voor
het verwerken van een http-verzoek zoals een server achter HAProxy.

Dit is een hallo wereld voorbeeldcode:

core.register_service("hello-world", "http", function(applet)
lokaal antwoord = "Hallo wereld!"
applet:set_status(200)
applet:add_header("inhoud-lengte", string.len(antwoord))
applet:add_header("inhoudstype", "tekst/plain")
applet:start_response()
applet:verzenden(antwoord)
einde)

AppletHTTP.c

Retourneren
A Converters klasse

Dit attribuut bevat een klasseobject Converters.

AppletHTTP.sc

Retourneren
A Converters klasse

Dit attribuut bevat een klasseobject Converters. De functies van dit object
retourneert altijd een string.

AppletHTTP.f

Retourneren
A Ophaalt klasse

Dit attribuut bevat een klasseobject Fetches. Merk op dat de applet-uitvoering
plaats heeft geen toegang tot een geldige HAProxy core HTTP-transactie, dus een voorbeeld
fecthes gerelateerd aan de HTTP-afhankelijke waarden (hdr, pad, ...) zijn niet beschikbaar.

AppletHTTP.sf

Retourneren
A Ophaalt klasse

Dit attribuut bevat een klasseobject Fetches. De functies van dit object
retourneert altijd een string. Houd er rekening mee dat de plaats van uitvoering van de applet geen toegang heeft tot a
geldige HAProxy core HTTP-transactie, dus enkele voorbeeldfouten gerelateerd aan HTTP
afhankelijke waarden (hdr, pad, ...) zijn niet beschikbaar.

AppletHTTP.methode

Retourneren
snaar

De attribuutmethode retourneert een tekenreeks die de HTTP-methode bevat.

AppletHTTP.versie

Retourneren
snaar

De attribuutversie retourneert een tekenreeks die de HTTP-verzoekversie bevat.

AppletHTTP.pad

Retourneren
snaar

Het attribuutpad retourneert een tekenreeks die het HTTP-verzoekpad bevat.

AppletHTTP.qs

Retourneren
snaar

Het attribuut qs retourneert een string die de HTTP-verzoekquerystring bevat.

AppletHTTP.lengte

Retourneren
geheel getal

De attribuutlengte retourneert een geheel getal dat de lengte van de HTTP-body bevat.

AppletHTTP.headers

Retourneren
reeks

De attribuutheaders retourneren een array met de HTTP-headers. De kop
namen zijn altijd in kleine letters. Omdat de headernaam meer dan
eenmaal bij elk verzoek wordt de waarde geïndexeerd met 0 als eerste indexwaarde. De array
heb dit formulier:

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

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

AppletHTTP.headers
Bevat een array met alle verzoekheaders.

AppletHTTP.set_status(applet, code)
Met deze functie wordt de HTTP-statuscode voor het antwoord ingesteld. De toegestane code komt uit
100 te 599.

argumenten

· applet (class_AppletHTTP) -- Een AppletHTTP klasse

· code (geheel getal) -- de statuscode wordt teruggestuurd naar de client.

AppletHTTP.add_header(applet, naam, waarde)
Deze functie voegt een header toe aan het antwoord. Gedupliceerde kopteksten worden niet samengevouwen.
De speciale kop Inhoud lengte wordt gebruikt om de responslengte te bepalen. Als het
niet bestaat, een overdracht-codering: in stukken gesneden is ingesteld, en al het schrijfwerk van de functie
AppletHTTP:verzenden() een stuk worden.

argumenten

· applet (class_AppletHTTP) -- Een AppletHTTP klasse

· naam (snaar) -- de headernaam

· waarde (snaar) -- de headerwaarde

AppletHTTP.start_response(applet)
Deze functie geeft aan de HTTP-engine aan dat deze het
antwoordkoppen. Nadat dit is aangeroepen, kunnen we geen headers aan het antwoord toevoegen; Wij
kan de. niet gebruiken AppletHTTP:verzenden() functioneren als de AppletHTTP:start_response() is niet
gebeld.

argumenten

· applet (class_AppletHTTP) -- Een AppletHTTP klasse

AppletHTTP.getline(applet)
Deze functie retourneert een string met één regel uit de http-body. Als de gegevens
geretourneerd bevat geen definitieve '\n', er wordt aangenomen dat dit de laatst beschikbare gegevens zijn
vóór het einde van de stroom.

argumenten

· applet (class_AppletHTTP) -- Een AppletHTTP klasse

Retourneren
Een touwtje. De string kan leeg zijn als we het einde van de stream bereiken.

AppletHTTP.ontvangen(applet[, maat])
Leest gegevens van de HTTP-body, volgens de opgegeven leeswaarde grootte. Indien de grootte is
ontbreekt, probeert de functie alle inhoud van de stream tot het einde te lezen. Als
de grootte groter is dan de http-body, retourneert het de hoeveelheid beschikbare gegevens.

argumenten

· applet (class_AppletHTTP) -- Een AppletHTTP klasse

· grootte (geheel getal) -- de vereiste leesgrootte.

Retourneren
retourneer altijd een string, de string kan leeg zijn als de verbinding gesloten is.

AppletHTTP.send(applet, bericht)
Verzend het bericht msg op de http-aanvraagtekst.

argumenten

· applet (class_AppletHTTP) -- Een AppletHTTP klasse

· msg (snaar) -- het bericht dat moet worden verzonden.

klasse AppletTCP()
Deze klasse wordt gebruikt met applets waarvoor de 'tcp'-modus vereist is. De TCP-applet kan dat zijn
geregistreerd bij de kern.register_service() functie. Ze worden gebruikt voor verwerking
een TCP-stream zoals een server achter HAProxy.

AppletTCP.c

Retourneren
A Converters klasse

Dit attribuut bevat een klasseobject Converters.

AppletTCP.sc

Retourneren
A Converters klasse

Dit attribuut bevat een klasseobject Converters. De functies van dit object
retourneert altijd een string.

AppletTCP.f

Retourneren
A Ophaalt klasse

Dit attribuut bevat een klasseobject Fetches.

AppletTCP.sf

Retourneren
A Ophaalt klasse

Dit attribuut bevat een klasseobject Fetches.

AppletTCP.getline(applet)
Deze functie retourneert een tekenreeks die één regel uit de stream bevat. Als de gegevens
geretourneerd bevat geen definitieve '\n', er wordt aangenomen dat dit de laatst beschikbare gegevens zijn
vóór het einde van de stroom.

argumenten

· applet (class_AppletTCP) -- Een AppletTCP klasse

Retourneren
Een touwtje. De string kan leeg zijn als we het einde van de stream bereiken.

AppletTCP.ontvang(applet[, maat])
Leest gegevens uit de TCP-stream, volgens de opgegeven leeswaarde grootte. Indien de grootte
ontbreekt, probeert de functie alle inhoud van de stream tot het einde te lezen.

argumenten

· applet (class_AppletTCP) -- Een AppletTCP klasse

· grootte (geheel getal) -- de vereiste leesgrootte.

Retourneren
retourneer altijd een string, de string kan leeg zijn als de verbinding gesloten is.

AppletTCP.send(appletmsg)
Verzend het bericht via de stream.

argumenten

· applet (class_AppletTCP) -- Een AppletTCP klasse

· msg (snaar) -- het bericht dat moet worden verzonden.

Veel nuttige lua-bibliotheken zijn hier te vinden:

· https://lua-toolbox.com/

Redis-toegang:

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

Dit is een voorbeeld over het gebruik van de Redis-bibliotheek met HAProxy. Houd er rekening mee dat elke oproep
van elke functie van deze bibliotheek kan een fout veroorzaken als de socketverbinding mislukt.

-- laad de redis-bibliotheek
lokale redis = vereisen("redis");

functie doe_iets(txn)

-- maak en sluit een nieuwe TCP-socket aan
lokale tcp = kern.tcp();
tcp:time-out instellen(1);
tcp:connect("127.0.0.1", 6379);

-- gebruik de redis-bibliotheek met deze nieuwe socket
lokale client = redis.connect({socket=tcp});
klant:ping();

einde

OpenSSL:

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

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

Gebruik haproxy-lua online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

  • 1
    SLOK
    SLOK
    SWIG is een tool voor softwareontwikkeling
    dat programma's verbindt die zijn geschreven in C en
    C ++ met een verscheidenheid aan high-level
    programmeertalen. SWIG wordt gebruikt met
    verschillend...
    SWIG downloaden
  • 2
    WooCommerce Nextjs React-thema
    WooCommerce Nextjs React-thema
    Reageer WooCommerce-thema, gebouwd met
    Volgende JS, Webpack, Babel, Node en
    Express, met behulp van GraphQL en Apollo
    Cliënt. WooCommerce Store in React(
    bevat: Producten...
    Download het WooCommerce Nextjs React-thema
  • 3
    archlabs_repo
    archlabs_repo
    Pakketrepo voor ArchLabs Dit is een
    toepassing die ook kan worden opgehaald
    oppompen van
    https://sourceforge.net/projects/archlabs-repo/.
    Het is gehost in OnWorks in...
    Archlabs_repo downloaden
  • 4
    Zephyr-project
    Zephyr-project
    Het Zephyr Project is een nieuwe generatie
    real-time besturingssysteem (RTOS) dat
    ondersteunt meerdere hardware
    architecturen. Het is gebaseerd op een
    kernel met kleine voetafdruk ...
    Zephyr-project downloaden
  • 5
    SConen
    SConen
    SCons is een softwareconstructietool
    dat is een superieur alternatief voor de
    klassieke "Make" build-tool die
    we kennen en houden allemaal van. SCons is
    implementeerde een...
    SCons downloaden
  • 6
    PSeInt
    PSeInt
    PSeInt is een pseudo-code-interpreter voor
    Spaanstalige programmeerstudenten.
    Het belangrijkste doel is om een ​​hulpmiddel te zijn voor:
    de basis leren en begrijpen
    concept...
    PSeInt downloaden
  • Meer "

Linux-commando's

  • 1
    7z
    7z
    7z - Een bestandsarchiveringstool met de hoogste
    compressieverhouding ...
    Loop 7z
  • 2
    7za
    7za
    7za - Een bestandsarchiveringstool met de hoogste
    compressieverhouding ...
    Loop 7za
  • 3
    griezelig
    griezelig
    CREEPY - Een geolocatie-informatie
    aggregator BESCHRIJVING: griezelig is een
    applicatie waarmee u kunt verzamelen
    geolocatie gerelateerde informatie over
    gebruikers van ...
    Loop griezelig
  • 4
    cricket-compileren
    cricket-compileren
    cricket - Een programma om de
    verzameling en weergave van tijdreeksen
    gegevens ...
    Voer cricket-compilatie uit
  • 5
    g-wrap-config
    g-wrap-config
    g-wrap-config - script om te krijgen
    informatie over de geïnstalleerde versie
    van G-wrap ...
    Voer g-wrap-config uit
  • 6
    g.toegangsgras
    g.toegangsgras
    g.access - Beheert de toegang tot de
    huidige kaartenset voor andere gebruikers op de
    systeem. Als er geen optie wordt gegeven, drukt u af
    huidige status. KEYWORDS: algemeen, kaart
    management, pr...
    Voer g.accessgrass uit
  • Meer "

Ad