Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

haproxy-lua - Online w chmurze

Uruchom haproxy-lua w bezpłatnym dostawcy hostingu OnWorks w systemie Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

To jest polecenie haproxy-lua, które można uruchomić w bezpłatnym dostawcy hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


haproxy-lua - haproxy-lua Dokumentacja

HAPROKSY LUA BIEGANIE KONTEKST


Kod Lua wykonany w HAProxy może być przetwarzany w 2 głównych trybach. Pierwszym z nich jest
inicjalizacja tryb, a drugi to Czas tryb.

· W inicjalizacja tryb, możemy wykonywać rozwiązania DNS, ale nie możemy wykonywać operacji wejścia/wyjścia gniazda.
W tym trybie inicjalizacji HAProxy nadal jest blokowany podczas wykonywania Lua
program.

· W Czas tryb, nie możemy wykonywać rozwiązań DNS, ale możemy używać gniazd. The
wykonanie kodu Lua jest multipleksowane z przetwarzaniem żądań, więc kod Lua
wydaje się, że działa w trybie blokowania, ale tak nie jest.

Kod Lua jest ładowany w jednym lub kilku plikach. Te pliki zawierają główny kod i funkcje.
Lua ma 6 kontekstów wykonawczych.

1. Plik Lua ciało kontekst. Jest wykonywany podczas ładowania pliku Lua w
HAPROXY [światowy] rozdział z dyrektywą ładowanie lua. Jest wykonywany podczas inicjalizacji
tryb. Ta sekcja służy do konfigurowania powiązań Lua w HAProxy.

2. Lua startowych kontekst. Jest to funkcja Lua wykonywana zaraz po HAProxy
parsowanie konfiguracji. Wykonanie jest w trybie inicjalizacji. W tym kontekście
Środowisko HAProxy zostało już zainicjowane. Przydatne jest sprawdzenie konfiguracji lub
inicjowanie połączeń lub zadań gniazd. Funkcje te są zadeklarowane w treści
kontekst z funkcją Lua core.register_init(). Prototypem funkcji jest a
prosta funkcja bez zwracanej wartości i bez parametrów, taka jak ta: funkcjonować fcn().

3. Lua zadanie kontekst. Jest to funkcja Lua wykonywana po uruchomieniu HAProxy
harmonogramu, a zaraz po zadeklarowaniu zadania funkcją Lua
core.register_task(). Kontekst ten może być współbieżny z przetwarzaniem ruchu. To jest
wykonywane w trybie wykonawczym. Prototypem funkcji jest prosta funkcja bez
zwracana wartość i bez parametrów, na przykład: funkcjonować fcn().

4. akcja kontekst. Jest to funkcja Lua wykonywana warunkowo. Te działania są
zarejestrowany przez dyrektywy Lua”core.register_action()”. Prototyp Lua
wywoływana funkcja to funkcja, która niczego nie zwraca i która przyjmuje obiekt
klasa TXN jako wpis. funkcjonować fcn(txn).

5. pobieranie próbek kontekst. Ta funkcja przyjmuje obiekt TXN jako argument wejścia i
zwraca ciąg. Funkcje tego typu nie mogą wykonywać żadnych funkcji blokujących. Oni
są przydatne do agregowania niektórych oryginalnych pobrań próbek HAProxy i zwracania wyniku.
Prototypem funkcji jest funkcjonować ciąg fcn(txn). Funkcje te mogą być
zarejestrowany w funkcji Lua core.register_fetches(). Każde zadeklarowane pobranie próbki jest
poprzedzone ciągiem „lua.”.

UWAGA: Możliwe, że ta funkcja nie znajdzie wymaganych danych w oryginale
W tym przypadku HAProxy pobiera próbki i nie może zwrócić wyniku. Ta sprawa jeszcze nie istnieje
utrzymany

6. przetwornik kontekst. Jest to funkcja Lua, która pobiera ciąg znaków jako dane wejściowe i zwraca je
inny ciąg jako wynik. Funkcje tego typu są bezstanowe i nie można do nich uzyskać dostępu
dowolny kontekst. Nie realizują żadnej funkcji blokującej. Prototyp połączenia to funkcjonować
ciąg fcn(ciąg). Funkcję tę można zarejestrować w funkcji Lua
core.register_converters(). Każdy zadeklarowany konwerter jest poprzedzony ciągiem „lua.”.

HAPROKSY LUA CZEŚĆ ŚWIAT


Plik konfiguracyjny HAProxy (hello_world.conf):

światowy
lua-load hello_world.lua

słuchaj proxy
powiąż 127.0.0.1:10001
żądanie kontroli tcp — opóźnienie 1 s
Usługa użycia treści żądania TCP lua.hello_world

Plik HAProxy Lua (hello_world.lua):

core.register_service("hello_world", "tcp", funkcja(aplet)
aplet:wyślij("witaj, świecie\n")
koniec)

Jak uruchomić HAProxy w celu przetestowania tej konfiguracji:

./haproxy -f hello_world.conf

Na innym terminalu możesz przetestować za pomocą telnetu:

#:~ telnet 127.0.0.1 10001
hello world

klasa rdzeń()
Klasa „core” zawiera wszystkie podstawowe funkcje HAProxy. Te funkcje są przydatne
do kontrolowania przepływu wykonania, rejestrowania haków, manipulowania mapami globalnymi
lub ACL, ...

klasa „core” jest zasadniczo dostarczana z HAProxy. NIE wymagać wymagana jest linia
używa tych funkcji.

Klasa „core” jest statyczna, nie ma możliwości utworzenia nowego obiektu tego typu.

rdzeń.emerg

Returns
liczba całkowita

Atrybut ten jest liczbą całkowitą, zawiera wartość poziomu logowania „awaryjne”
(0).

rdzeń.alarm

Returns
liczba całkowita

Atrybut ten jest liczbą całkowitą, zawiera wartość „alert” poziomu logowania (1).

rdzeń.kryt

Returns
liczba całkowita

Atrybut ten jest liczbą całkowitą, zawiera wartość poziomu logowania „krytyczny” (2).

rdzeń.błąd

Returns
liczba całkowita

Atrybut ten jest liczbą całkowitą, zawiera wartość „błądu” poziomu logowania (3).

rdzeń.ostrzeżenie

Returns
liczba całkowita

Atrybut ten jest liczbą całkowitą, zawiera wartość „ostrzeżenia” poziomu logowania (4).

rdzeń.powiadomienie

Returns
liczba całkowita

Atrybut ten jest liczbą całkowitą, zawiera wartość „notice” poziomu logowania (5).

rdzeń.informacje

Returns
liczba całkowita

Atrybut ten jest liczbą całkowitą, zawiera wartość poziomu logowania „info” (6).

core.debug

Returns
liczba całkowita

Atrybut ten jest liczbą całkowitą, zawiera wartość poziomu logowania „debug” (7).

core.log(poziom logowania, wiadomość)
kontekst: treść, init, zadanie, akcja, pobieranie próbek, konwerter

Ta funkcja wysyła dziennik. Dziennik zostanie wysłany zgodnie z HAProxy
plik konfiguracyjny, na domyślnym serwerze syslog, jeśli jest skonfigurowany, oraz na serwerze
stderr, jeśli jest to dozwolone.

Argumenty

· poziom dziennika (liczba całkowita) -- Czy poziom dziennika jest powiązany z komunikatem. To jest
liczba od 0 do 7.

· msg (ciąg) -- Zawartość dziennika.

See core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (definicje na poziomie dziennika)

See kod. Debuguj

See rdzeń.Informacje

See rdzeń.Ostrzeżenie

See rdzeń.Alarm

core. Debuguj(wiadomość)
kontekst: treść, init, zadanie, akcja, pobieranie próbek, konwerter

Argumenty

· msg (ciąg) -- Zawartość dziennika.

See log

Wykonuje tę samą pracę co:

funkcjonować Debug(wiadomość)
core.log(core.debug, msg)
zakończenia

rdzeń.Informacje(wiadomość)
kontekst: treść, init, zadanie, akcja, pobieranie próbek, konwerter

Argumenty

· msg (ciąg) -- Zawartość dziennika.

See log

funkcjonować Informacia(wiadomość)
core.log(core.info, msg)
zakończenia

rdzeń.Ostrzeżenie(wiadomość)
kontekst: treść, init, zadanie, akcja, pobieranie próbek, konwerter

Argumenty

· msg (ciąg) -- Zawartość dziennika.

See log

funkcjonować ostrzeżenie(wiadomość)
core.log(core.warning, msg)
zakończenia

rdzeń.Alarm(wiadomość)
kontekst: treść, init, zadanie, akcja, pobieranie próbek, konwerter

Argumenty

· msg (ciąg) -- Zawartość dziennika.

See log

funkcjonować Alarm(wiadomość)
core.log(core.alert, msg)
zakończenia

core.add_acl(nazwa pliku, klawisz)
kontekst: init, zadanie, akcja, pobranie próbki, konwerter

Dodaj listę ACL klucz na liście list ACL, do których odwołuje się plik filename.

Argumenty

· filename (ciąg) -- nazwa pliku, która odwołuje się do wpisów ACL.

· klucz (ciąg) -- klucz, który zostanie dodany.

core.del_acl(nazwa pliku, klawisz)
kontekst: init, zadanie, akcja, pobranie próbki, konwerter

Usuń wpis ACL, do którego odwołuje się klucz klucz na liście list ACL, do których odwołuje się
filename.

Argumenty

· filename (ciąg) -- nazwa pliku, która odwołuje się do wpisów ACL.

· klucz (ciąg) -- klucz, który zostanie usunięty.

core.del_map(nazwa pliku, klawisz)
kontekst: init, zadanie, akcja, pobranie próbki, konwerter

Usuń wpis mapy indeksowany określonym kluczem na liście map, do których się odwołuje
według jego nazwy pliku.

Argumenty

· filename (ciąg) -- nazwa pliku, która odwołuje się do wpisów mapy.

· klucz (ciąg) -- klucz, który zostanie usunięty.

rdzeń.msnu(milisekundy)
kontekst: treść, init, zadanie, akcja

Połączenia rdzeń.msleep() zatrzymuje wykonywanie Lua pomiędzy określonymi milisekundami.

Argumenty

· milisekund (liczba całkowita) -- wymagane milisekundy.

core.register_action(nazwa, działania, funkcja)
kontekst: ciało

Zarejestruj funkcję Lua wykonaną jako akcję. Można użyć wszystkich zarejestrowanych akcji
w HAProxy z przedrostkiem „lua.”. Akcja pobiera jako dane wejściowe klasę obiektu TXN.

Argumenty

· Nazwa (ciąg) -- to nazwa konwertera.

· działania (stół) -- jest tabelą ciągów znaków opisującą akcje HAProxy kto
chcesz się zarejestrować. Oczekiwane działania to „tcp-req”, „tcp-res”,
„http-req” lub „http-res”.

· funkcjonować (funkcjonować) -- to funkcja Lua wywoływana do pracy jako konwerter.

Prototyp funkcji Lua użytej jako argument to:

funkcja (txn)

·

txn (TXN klasa): to is a TXN przedmiot używany dla manipulowanie dotychczasowy
bieżące żądanie lub strumień TCP.

Tutaj przykład rejestracji akcji. akcja wystarczy wysłać „Witaj świecie” w
dzienniki.

core.register_action("hello-world", { "tcp-req", "http-req" }, funkcja(txn)
txn:Info("Witaj, świecie")
koniec)
Ten przykładowy kod jest używany w konfiguracji HAproxy w następujący sposób:

interfejs tcp_frt
tryb TCP
treść żądania TCP lua.hello-world

interfejs użytkownika http_frt
tryb http
żądanie http lua.hello-world

core.register_converters(nazwa, funkcja)
kontekst: ciało

Zarejestruj funkcję Lua wykonywaną jako konwerter. Mogą to robić wszyscy zarejestrowani konwerterzy
używany w HAProxy z przedrostkiem „lua.”. Konwerter pobiera ciąg znaków jako dane wejściowe i
zwróć ciąg jako wynik. Zarejestrowana funkcja może przyjmować do 9 wartości
parametr. Wszystkie wartości to ciągi znaków.

Argumenty

· Nazwa (ciąg) -- to nazwa konwertera.

· funkcjonować (funkcjonować) -- to funkcja Lua wywoływana do pracy jako konwerter.

Prototyp funkcji Lua użytej jako argument to:

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

· str (ciąg): jest to wartość wejściowa automatycznie konwertowana na ciąg znaków.

· p1 .. p5 (ciąg): to jest lista argumentów łańcuchowych zadeklarowanych w Haroxy
plik konfiguracyjny. Liczba argumentów nie przekracza 5. Kolejność i
ich charakter jest tradycyjnie wybierany przez programistę.

core.register_fetches(nazwa, funkcja)
kontekst: ciało

Zarejestruj funkcję Lua wykonywaną jako pobieranie próbki. Wszystkie zarejestrowane pobrania próbek
może być używany w HAProxy z przedrostkiem „lua.”. Pobranie próbki Lua zwraca ciąg znaków
jako wyjście. Zarejestrowana funkcja może przyjmować jako parametr maksymalnie 9 wartości. Wszystkie
wartością są ciągi znaków.

Argumenty

· Nazwa (ciąg) -- to nazwa konwertera.

· funkcjonować (funkcjonować) -- to funkcja Lua wywoływana do pobierania próbek.

Prototyp funkcji Lua użytej jako argument to:

funkcja łańcuchowa (txn, [p1 [, p2 [, ... [, p5]]]])

· txn (TXN klasa): jest to obiekt txn powiązany z bieżącym żądaniem.

· p1 .. p5 (ciąg): to jest lista argumentów łańcuchowych zadeklarowanych w Haroxy
plik konfiguracyjny. Liczba argumentów nie przekracza 5. Kolejność i
ich charakter jest tradycyjnie wybierany przez programistę.

· Returns: Ciąg zawierający pewne dane, lub zero, jeśli nie można teraz zwrócić wartości.

przykładowy kod lua:

core.register_fetches("cześć", funkcja(txn)
zwróć „cześć”
koniec)
Przykładowa konfiguracja HAProxy:

przykład frontendu
Lokalizacja przekierowania żądania http /%[lua.hello]

core.register_service(nazwa, tryb, funkcja)
kontekst: ciało

Zarejestruj funkcję Lua wykonywaną jako usługa. Wszystkie zarejestrowane usługi mogą być
używany w HAProxy z przedrostkiem „lua.”. Usługa pobiera klasę obiektu jako dane wejściowe
zgodnie z wymaganym trybem.

Argumenty

· Nazwa (ciąg) -- to nazwa konwertera.

· tryb (ciąg) -- jest ciągiem znaków opisującym wymagany tryb. Tylko „tcp” lub
„http” są dozwolone.

· funkcjonować (funkcjonować) -- to funkcja Lua wywoływana do pracy jako konwerter.

Prototyp funkcji Lua użytej jako argument to:

funkcja (aplet)

· aplet aplet Będzie AppletTCP klasa lub AppletHTTP klasa. To zależy od typu
zarejestrowanego apletu. Aplet zarejestrowany z wartością „http” dla pliku tryb
parametr otrzyma a AppletHTTP klasa, Jeśli tryb wartością jest „tcp”, aplet to zrobi
dostaje AppletTCP klasa.

ostrzeżenie: Aplety typu „http” nie mogą być wywoływane z „tcp-' zestawy reguł. Only dotychczasowy „http-'
zestawy reguł są autoryzowane, oznacza to, że nie jest możliwe wywołanie apletu HTTP z pliku a
proxy w trybie TCP. Aplety typu „tcp” można wywoływać z dowolnego miejsca.

Tutaj przykład rejestracji usługi. usługa po prostu wysyła „Hello world” jako wiadomość
odpowiedź http.

core.register_service("witaj-swiecie", "http", funkcja(aplet)
odpowiedź lokalna = „Witaj, świecie!”
aplet:set_status(200)
aplet:add_header("długość-treści", string.len(odpowiedź))
aplet:add_header("typ-zawartości", "tekst/zwykły")
aplet:start_response()
aplet:wyślij(odpowiedź)
koniec)
Ten przykładowy kod jest używany w konfiguracji HAproxy w następujący sposób:

przykład frontendu
http-żądanie użycia usługi lua.hello-world

core.register_init(funkcja)
kontekst: ciało

Zarejestruj funkcję wykonywaną po analizie konfiguracji. Jest to przydatne
sprawdź dowolne parametry.

Argumenty

· funkcjonować (funkcjonować) -- to funkcja Lua wywołana do działania jako inicjator.

Prototyp funkcji Lua użytej jako argument to:

funkcjonować()
Nie wymaga żadnych danych wejściowych i nie oczekuje się żadnych danych wyjściowych.

core.register_task(funkcja)
kontekst: treść, init, zadanie, akcja, pobieranie próbek, konwerter

Zarejestruj się i rozpocznij samodzielne zadanie. Zadanie jest uruchamiane, gdy plik main.HAProxy
zostanie uruchomiony harmonogram. Na przykład tego typu zadania można wykonać w celu wykonania złożonego
badania zdrowia.

Argumenty

· funkcjonować (funkcjonować) -- to funkcja Lua wywołana do działania jako inicjator.

Prototyp funkcji Lua użytej jako argument to:

funkcjonować()
Nie wymaga żadnych danych wejściowych i nie oczekuje się żadnych danych wyjściowych.

core.set_nice(nice)
kontekst: zadanie, akcja, pobieranie próbek, konwerter

Zmień treść bieżącego zadania lub bieżącej sesji.

Argumenty

· miło (liczba całkowita) -- wartość nice, musi mieścić się w przedziale od -1024 do 1024.

core.set_map(nazwa pliku, klawisz, wartość)
kontekst: init, zadanie, akcja, pobranie próbki, konwerter

ustaw wartość wartość powiązany z kluczem klucz na mapie, do której odwołuje się filename.

Argumenty

· filename (ciąg) -- odniesienie do mapy

· klucz (ciąg) -- klucz do ustawienia lub wymiany

· wartość (ciąg) — powiązana wartość

rdzeń.sleep(int sekundy)
kontekst: treść, init, zadanie, akcja

Połączenia rdzeń.sleep() funkcje zatrzymują wykonywanie Lua pomiędzy określonymi sekundami.

Argumenty

· sekund (liczba całkowita) -- wymagane sekundy.

rdzeń.tcp()
kontekst: inicjacja, zadanie, akcja

Ta funkcja zwraca nowy obiekt a gniazdo class.

Returns
A Gniazdo klasa obiekt.

core.done(dane)
kontekst: treść, init, zadanie, akcja, pobieranie próbek, konwerter

Argumenty

· dane (każdy) -- Zwróć trochę danych dzwoniącemu. Przydaje się
pobieranie próbek i konwertery próbek.

Natychmiast zatrzymuje bieżące wykonanie Lua i powraca do wywołującego, który może być
pobranie próbki, konwerter lub akcja i zwraca określoną wartość (ignorowana
za działania). Jest używany, gdy proces LUA kończy swoją pracę i chce dać
cofnij kontrolę do HAProxy bez wykonywania pozostałego kodu. Można to postrzegać jako
wielopoziomowy „powrót”.

rdzeń.wydajność()
kontekst: zadanie, akcja, pobieranie próbek, konwerter

Oddaj rękę programowi planującemu HAProxy. Jest używany podczas przetwarzania LUA
pochłania dużo czasu przetwarzania.

klasa Pobiera()
Ta klasa zawiera wiele wewnętrznych próbek pobierania HAProxy. Zobacz HAProxy
Dokumentacja „configuration.txt”, aby uzyskać więcej informacji na temat jej użycia. oni są
rozdziały 7.3.2 do 7.3.6.

ostrzeżenie niektóre próbki do pobrania nie są dostępne w niektórych kontekstach. Te ograniczenia
są określone w tej dokumentacji, jeśli są przydatne.

See TXN.f

See TXN.sf

Pobieranie jest przydatne w przypadku:

· uzyskać czas systemowy,

· pobierz zmienną środowiskową,

· uzyskać losowe liczby,

· Znany status backendu, taki jak liczba użytkowników w kolejce lub liczba
nawiązane połączenia,

· informacje o kliencie, takie jak źródło lub miejsce docelowe adresu IP,

· radzić sobie ze stołami kijowymi,

· Ustalone informacje SSL,

· Informacje HTTP, takie jak nagłówki lub metody.

akcja funkcji(txn)
-- Uzyskaj źródłowy adres IP
lokalny adres klienta = txn.f:src()
zakończenia

klasa Konwertery()
Ta klasa zawiera wiele wewnętrznych przykładowych konwerterów HAProxy. Zobacz HAProxy
dokumentacja „configuration.txt”, aby uzyskać więcej informacji na temat jej użytkowania. To jest
rozdział 7.3.1.

See TXN.c

See TXN.sc

Konwertery zapewniają transformację stanową. Są przydatne do:

· konwersja wejścia do base64,

· zastosowanie skrótu na łańcuchu wejściowym (djb2, crc32, sdbm, wt6),

· formatowanie daty,

· ucieczka jsona,

· wyodrębnienie preferowanego języka porównując dwie listy,

· przejdź do znaków dolnych lub górnych,

· Radzenie sobie ze stołami kijowymi.

klasa Kanał()
HAProxy wykorzystuje dwa bufory do przetwarzania żądań. Ten pierwszy jest używany
z danymi żądania (od klienta do serwera), a drugi jest używany
dane odpowiedzi (od serwera do klienta).

Każdy bufor zawiera dwa typy danych. Pierwszy typ to oczekujące dane przychodzące
na przeróbkę. Druga część to już przetworzone dane wychodzące. Zazwyczaj,
dane przychodzące są przetwarzane, po oznaczeniu ich jako dane wychodzące i na końcu
jest wysłany. Poniższe funkcje udostępniają narzędzia do manipulowania tymi danymi w formacie a
bufor.

Poniższy diagram pokazuje, gdzie zastosowano funkcję klasy kanału.

ostrzeżenie: Nie można odczytać odpowiedzi w akcji żądania i tak jest
nie można odczytać dla kanału żądania w akcji odpowiedzi.
[Obrazek]

Kanał.dup(kanał)
Ta funkcja zwraca ciąg znaków zawierający cały bufor. Dane nie
usunąć z bufora i można je później ponownie przetworzyć.

Jeśli bufor nie może przyjąć więcej danych, zwracana jest wartość zerowa.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

Returns
ciąg zawierający wszystkie dostępne dane lub zero.

Kanał.get(kanał)
Ta funkcja zwraca ciąg znaków zawierający cały bufor. Dane są zużywane
z bufora.

Jeśli bufor nie może przyjąć więcej danych, zwracana jest wartość zerowa.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

Returns
ciąg zawierający wszystkie dostępne dane lub zero.

Channel.getline(kanał)
Ta funkcja zwraca ciąg znaków zawierający pierwszą linię bufora. Dane
jest zużywany. Jeśli zwrócone dane nie zawierają końcowego „n”, zakłada się, że jest inaczej
ostatnie dostępne dane w buforze.

Jeśli bufor nie może przyjąć więcej danych, zwracana jest wartość zerowa.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

Returns
ciąg zawierający dostępną linię lub zero.

Kanał.set(kanał, strunowy)
Ta funkcja zastępuje zawartość bufora ciągiem znaków. Funkcja zwraca
skopiowaną długość, w przeciwnym razie zwraca -1.

Zestaw danych z tą funkcją nie jest wysyłany. Czekają na koniec HAProxy
przetwarzania, więc bufor może być pełny.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

· ciąg (ciąg) -- Dane, które zostaną wysłane.

Returns
liczba całkowita zawierająca liczbę skopiowanych bajtów lub -1.

kanał.dołącz(kanał, strunowy)
Ta funkcja dołącza argument string do zawartości bufora. Funkcja
zwraca skopiowaną długość, w przeciwnym razie zwraca -1.

Zestaw danych z tą funkcją nie jest wysyłany. Czekają na koniec HAProxy
przetwarzania, więc bufor może być pełny.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

· ciąg (ciąg) -- Dane, które zostaną wysłane.

Returns
liczba całkowita zawierająca liczbę skopiowanych bajtów lub -1.

Kanał.wyślij(kanał, strunowy)
Funkcja ta wymagała natychmiastowego przesłania danych. Chyba że połączenie jest
blisko, bufor jest regularnie opróżniany i cały ciąg znaków może zostać wysłany.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

· ciąg (ciąg) -- Dane, które zostaną wysłane.

Returns
liczba całkowita zawierająca liczbę skopiowanych bajtów lub -1.

Channel.get_in_length(kanał)
Ta funkcja zwraca długość wejściowej części bufora.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

Returns
liczba całkowita zawierająca ilość dostępnych bajtów.

Channel.get_out_length(kanał)
Ta funkcja zwraca długość wyjściowej części bufora.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

Returns
liczba całkowita zawierająca ilość dostępnych bajtów.

Kanał.do przodu(kanał, int)
Ta funkcja przenosi bajty z części wejściowej bufora do części wyjściowej.

Argumenty

· kanał (kanał_klasy) -- Zmanipulowany kanał.

· int (liczba całkowita) -- Ilość danych, które zostaną przesłane.

klasa HTTP()
Ta klasa zawiera wszystkie funkcje manipulacyjne HTTP.

HTTP.req_get_headers(http)
Zwraca tablicę zawierającą wszystkie nagłówki żądań.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

Returns
tablica nagłówków.

See HTTP.res_get_headers()

To jest postać zwróconej tablicy:

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

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

HTTP.res_get_headers(http)
Zwraca tablicę zawierającą wszystkie nagłówki odpowiedzi.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

Returns
tablica nagłówków.

See HTTP.req_get_headers()

To jest postać zwróconej tablicy:

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

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

HTTP.req_add_header(http, imię, wartość)
Dołącza pole nagłówka HTTP do żądania, którego nazwa jest określona w „name” i
którego wartość jest zdefiniowana w „value”.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

· wartość (ciąg) -- Wartość nagłówka.

See HTTP.res_add_header()

HTTP.res_add_header(http, imię, wartość)
dołącza do odpowiedzi pole nagłówka HTTP, którego nazwa jest określona w „name” i
którego wartość jest zdefiniowana w „value”.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

· wartość (ciąg) -- Wartość nagłówka.

See HTTP.req_add_header()

HTTP.req_del_header(http, imię)
Usuwa wszystkie pola nagłówka HTTP z żądania, którego nazwa jest określona w „name”.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

See HTTP.res_del_header()

HTTP.res_del_header(http, imię)
Usuwa wszystkie pola nagłówka HTTP w odpowiedzi, której nazwa jest określona w "nazwa".

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

See HTTP.req_del_header()

HTTP.req_set_header(http, imię, wartość)
Ta zmienna zastępuje wszystkie wystąpienia wszystkich nagłówków „nazwa” tylko na jednym zawierającym
wartość".

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

· wartość (ciąg) -- Wartość nagłówka.

See HTTP.res_set_header()

Ta funkcja działa tak samo jak poniższy kod:

funkcja fcn(txn)
TXN.http:req_del_header("nagłówek")
TXN.http:req_add_header("nagłówek", "wartość")
zakończenia

HTTP.res_set_header(http, imię, wartość)
Ta zmienna zastępuje wszystkie wystąpienia wszystkich nagłówków „nazwa” tylko na jednym zawierającym
wartość".

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

· wartość (ciąg) -- Wartość nagłówka.

See HTTP.req_rep_header()

HTTP.req_rep_header(http, imię, wyrażenie regularne, zastępować)
Dopasowuje wyrażenie regularne we wszystkich wystąpieniach pola nagłówka „name” zgodnie z
na „regex” i zastępuje je argumentem „zamień”. Wartość zastępcza
może zawierać odniesienia wsteczne, takie jak 1, 2, ... Ta funkcja działa z żądaniem.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

· regex (ciąg) -- Wyrażenie regularne dopasowania.

· obsługi produkcji rolnej, która zastąpiła (ciąg) -- Wartość zastępcza.

See HTTP.res_rep_header()

HTTP.res_rep_header(http, imię, wyrażenie regularne, strunowy)
Dopasowuje wyrażenie regularne we wszystkich wystąpieniach pola nagłówka „name” zgodnie z
na „regex” i zastępuje je argumentem „zamień”. Wartość zastępcza
może zawierać odniesienia wsteczne, takie jak 1, 2, ... Ta funkcja działa z żądaniem.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

· regex (ciąg) -- Wyrażenie regularne dopasowania.

· obsługi produkcji rolnej, która zastąpiła (ciąg) -- Wartość zastępcza.

See HTTP.req_replace_header()

HTTP.req_replace_value(http, imię, wyrażenie regularne, zastępować)
Działa jak „HTTP.req_replace_header()”, z tą różnicą, że dopasowuje wyrażenie regularne
każdą oddzieloną przecinkami wartość pola nagłówka „nazwa” zamiast całości
header.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

· regex (ciąg) -- Wyrażenie regularne dopasowania.

· obsługi produkcji rolnej, która zastąpiła (ciąg) -- Wartość zastępcza.

See HTTP.req_replace_header()

See HTTP.res_replace_value()

HTTP.res_replace_value(http, imię, wyrażenie regularne, zastępować)
Działa jak „HTTP.res_replace_header()”, z tą różnicą, że dopasowuje wyrażenie regularne
każdą oddzieloną przecinkami wartość pola nagłówka „nazwa” zamiast całości
header.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Nazwa (ciąg) -- Nazwa nagłówka.

· regex (ciąg) -- Wyrażenie regularne dopasowania.

· obsługi produkcji rolnej, która zastąpiła (ciąg) -- Wartość zastępcza.

See HTTP.res_replace_header()

See HTTP.req_replace_value()

HTTP.req_set_method(http, metoda)
Przepisuje metodę żądania za pomocą parametru „method”.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· metoda (ciąg) -- Nowa metoda.

HTTP.req_set_path(http, ścieżka)
Ponownie zapisuje ścieżkę żądania z parametrem „ścieżka”.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· ścieżka (ciąg) — Nowa ścieżka.

HTTP.req_set_query(http, zapytanie)
Przepisuje ciąg zapytania żądania, który pojawia się po pierwszym znaku zapytania
(?”) z parametrem „zapytanie”.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· pytanie (ciąg) -- Nowe zapytanie.

HTTP.req_set_uri(http, Uri)
Zapisuje ponownie identyfikator URI żądania za pomocą parametru „uri”.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· Linki (ciąg) -- Nowe uri.

HTTP.res_set_status(http, status)
Zapisuje kod stanu odpowiedzi z parametrem „code”. Zauważ, że powód
jest automatycznie dostosowywany do nowego kodu.

Argumenty

· http (klasa_http) -- Powiązany obiekt http.

· status (liczba całkowita) -- Nowy kod stanu odpowiedzi.

klasa TXN()
Klasa txn zawiera wszystkie funkcje związane z transakcją http lub tcp
(Uwaga: strumień TCP to to samo, co transakcja TCP, ale transakcja HTTP
to nie to samo co strumień TCP).

Użycie tej klasy pozwala na pobieranie danych z żądań, modyfikowanie ich i
Przekaż dalej.

Wszystkie funkcje udostępniane przez tę klasę są dostępne w kontekście
pobieranie próbek i działania.

TXN.c

Returns
An Konwertery klasa.

Ten atrybut zawiera obiekt klasy Converters.

TXN.sc

Returns
An Konwertery klasa.

Ten atrybut zawiera obiekt klasy Converters. Funkcje tego obiektu
zwraca zawsze ciąg znaków.

TXN.f

Returns
An Pobiera klasa.

Ten atrybut zawiera obiekt klasy Fetches.

TXN.sf

Returns
An Pobiera klasa.

Ten atrybut zawiera obiekt klasy Fetches. Funkcje tego obiektu
zwraca zawsze ciąg znaków.

żądanie TXN

Returns
An Kanał klasa.

Ten atrybut zawiera obiekt klasy kanału dla bufora żądań.

TXN.res

Returns
An Kanał klasa.

Ten atrybut zawiera obiekt klasy kanału dla bufora odpowiedzi.

TXN.http

Returns
An HTTP klasa.

Ten atrybut zawiera obiekt klasy HTTP. Jest dostępny tylko wtedy, gdy posiada go serwer proxy
włączony „tryb http”.

TXN.log(TXN, poziom logowania, wiadomość)
Ta funkcja wysyła dziennik. Dziennik zostanie wysłany zgodnie z HAProxy
plik konfiguracyjny, na domyślnym serwerze syslog, jeśli jest skonfigurowany, oraz na serwerze
stderr, jeśli jest to dozwolone.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· poziom dziennika (liczba całkowita) -- Czy poziom dziennika jest powiązany z komunikatem. To jest
liczba od 0 do 7.

· msg (ciąg) -- Zawartość dziennika.

See core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (definicje na poziomie dziennika)

See TXN.deflog

See Debugowanie TXN

See Informacje o TXN

See TXN.Ostrzeżenie

See Alarm TXN

TXN.deflog(TXN, wiadomość)
Wysyła wiersz dziennika z domyślnym poziomem logowania dla serwera proxy powiązanego z
transakcji.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· msg (ciąg) -- Zawartość dziennika.

See TXN.log

TXN.Debug(txn, wiadomość)

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· msg (ciąg) -- Zawartość dziennika.

See TXN.log

Wykonuje tę samą pracę co:

funkcja Debugowanie (txn, msg)
TXN.log(txn, core.debug, msg)
zakończenia

TXN.Info(txn, wiadomość)

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· msg (ciąg) -- Zawartość dziennika.

See TXN.log

funkcja Debugowanie (txn, msg)
TXN.log(txn, core.info, wiadomość)
zakończenia

TXN.Ostrzeżenie(txn, wiadomość)

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· msg (ciąg) -- Zawartość dziennika.

See TXN.log

funkcja Debugowanie (txn, msg)
TXN.log(txn, rdzeń.ostrzeżenie, wiadomość)
zakończenia

TXN.Alert(txn, wiadomość)

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· msg (ciąg) -- Zawartość dziennika.

See TXN.log

funkcja Debugowanie (txn, msg)
TXN.log(txn, core.alert, msg)
zakończenia

TXN.get_priv(txn)
Zwróć dane Lua zapisane w bieżącej transakcji (z rozszerzeniem TXN.set_priv())
funkcjonować. Jeśli nie są przechowywane żadne dane, zwraca wartość zerową.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

Returns
nieprzejrzyste dane zapisane wcześniej lub zero, jeśli nic nie jest dostępne.

TXN.set_priv(txn, dane)
Przechowuj dowolne dane w bieżącej transakcji HAProxy. Ta akcja zastępuje starą
przechowywane dane.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· dane (nieprzezroczysty) -- Dane przechowywane w transakcji.

TXN.set_var(TXN, jest, wartość)
Konwertuje typ Lua na typ HAProxy i zapisuje go w zmiennej .

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· było (ciąg) -- Nazwa zmiennej zgodna ze zmienną HAProxy
składnia.

· wartość (nieprzezroczysty) -- Dane przechowywane w zmiennej.

TXN.get_var(TXN, var)
Zwraca dane zapisane w konwerterze zmiennych typu Lua.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· było (ciąg) -- Nazwa zmiennej zgodna ze zmienną HAProxy
składnia.

TXN.get_headers(txn)
Ta funkcja zwraca tablicę nagłówków.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

Returns
tablica nagłówków.

TXN.gotowe(txn)
Ta funkcja kończy przetwarzanie transakcji i związanej z nią sesji.
Można go użyć w przypadku wykrycia błędu krytycznego lub w celu zakończenia przetwarzania
część danych została zwrócona klientowi (np. przekierowanie).

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

TXN.set_loglevel(txn, poziom logowania)
Służy do zmiany poziomu logowania bieżącego żądania. „Poziom logowania” musi być
liczba całkowita z zakresu od 0 do 7.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· poziom dziennika (liczba całkowita) -- Wymagany poziom rejestrowania. Ta zmienna może być jedną z

See rdzeń.

TXN.set_tos(txn, to)
Służy do ustawienia wartości pola TOS lub DSCP pakietów wysyłanych do klienta
wartość przekazywana w „tos” na platformach, które to obsługują.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· tos (liczba całkowita) -- Nowe TOS OS DSCP.

TXN.set_mark(txn, znak)
Służy do ustawienia Netfilter MARK na wszystkich pakietach wysyłanych do klienta na wartość
przekazywane w „mark” na platformach, które go obsługują.

Argumenty

· txn (klasa_txn) -- Obiekt klasy txn zawierający dane.

· znak (liczba całkowita) -- Wartość znaku.

klasa Gniazdo elektryczne()
Klasa ta musi być kompatybilna z klasą Lua Socket. Tylko „klient”
dostępne są funkcje. Zobacz dokumentację gniazda Lua:

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

Gniazdo.zamknij(gniazdo)
Zamyka obiekt TCP. Gniazdo wewnętrzne wykorzystywane przez obiekt jest zamknięte, a lokalne
adres, z którym obiekt został powiązany, jest udostępniany innym aplikacjom. NIE
dalsze operacje (z wyjątkiem dalszych wywołań metody zamknięcia) są dozwolone na a
zamknięte gniazdo.

Argumenty

· gniazdo (klasa_gniazda) -- Czy zmanipulowany Socket.

Uwaga: Ważne jest, aby zamknąć wszystkie używane gniazdka, gdy nie są potrzebne, ponieważ w
w wielu systemach każde gniazdo używa deskryptora pliku, który jest ograniczony systemowo
zasoby. Zebrane śmieci są automatycznie zamykane przed zniszczeniem,
chociaż.

Socket.connect(gniazdo, adres[, Port])
Próbuje połączyć obiekt gniazda ze zdalnym hostem.

W przypadku błędu metoda zwraca zero, po którym następuje ciąg opisujący błąd.
W przypadku powodzenia metoda zwraca 1.

Argumenty

· gniazdo (klasa_gniazda) -- Czy zmanipulowany Socket.

· adres (ciąg) -- może być adresem IP lub nazwą hosta. Zobacz poniżej
więcej informacji.

· Port (liczba całkowita) -- musi być liczbą całkowitą z zakresu [1..64K].

Returns
1 lub zero.

rozszerzenie pola adresu pozwala na użycie funkcji connect() do połączenia
inny strumień niż TCP. Składnia zawierająca prosty adres IPv4 lub IPv6 to
zasadniczo oczekiwany format. Ten format wymaga portu.

Innym akceptowanym formatem jest ścieżka gniazda, np. „/socket/path”, która umożliwia połączenie
do gniazdka. abstrakcyjne przestrzenie nazw są obsługiwane z przedrostkiem „abns@” i wreszcie
opis pliku można przekazać z przedrostkiem „fd@”. Przedrostek „ipv4@”, „ipv6@”
i „unix@” są również obsługiwane. Port można przekazać w ciągu znaków. Składnia
„127.0.0.1:1234” jest prawidłowy. w tym przypadku parametr Port jest ignorowany.

Socket.connect_ssl(gniazdo, adres, port)
Takie samo zachowanie jak funkcja Socket:connect, ale używa protokołu SSL.

Argumenty

· gniazdo (klasa_gniazda) -- Czy zmanipulowany Socket.

Returns
1 lub zero.

Socket.getpeername(gniazdo)
Zwraca informacje o zdalnej stronie podłączonego obiektu klienta.

Zwraca ciąg znaków zawierający adres IP partnera, po którym następuje numer portu
peer używa do połączenia. W przypadku błędu metoda zwraca zero.

Argumenty

· gniazdo (klasa_gniazda) -- Czy zmanipulowany Socket.

Returns
ciąg zawierający informacje o serwerze.

Socket.getsockname(gniazdo)
Zwraca informacje o adresie lokalnym skojarzonym z obiektem.

Metoda zwraca ciąg znaków z lokalnym adresem IP i liczbą z portem. W
w przypadku błędu metoda zwraca zero.

Argumenty

· gniazdo (klasa_gniazda) -- Czy zmanipulowany Socket.

Returns
ciąg zawierający informacje o kliencie.

Socket.receive(gniazdo[, wzór[, prefiks]])
Odczytuje dane z obiektu klienta zgodnie z określonym wzorcem odczytu. Wzory
postępuj zgodnie z formatem we/wy pliku Lua i różnicą w wydajności między wszystkimi
wzory są znikome.

Argumenty

· gniazdo (klasa_gniazda) -- Czy zmanipulowany Socket.

· wzorzec (ciąg|liczba całkowita) -- Opisz, co jest wymagane (patrz poniżej).

· prefiks (ciąg) -- Ciąg znaków, który będzie poprzedzał zwracane dane.

Returns
ciąg zawierający wymagane dane lub zero.

Wzór może być dowolny z poniższych:

·

`*a`: czyta od dotychczasowy gniazdo aż do dotychczasowy połączenie is zamknięty. Nie
wykonywana jest translacja końca linii;

·

`*l`: czyta a linia of XNUMX od dotychczasowy Gniazdo elektryczne. Połączenia linia is zakończony by a
Znak LF (ASCII 10), opcjonalnie poprzedzony znakiem CR (ASCII 13).
Znaki CR i LF nie są uwzględniane w zwracanej linii. W rzeczywistości,
wszystkie znaki CR są ignorowane przez wzorzec. To jest domyślny wzór.

·

numer: Przyczyny dotychczasowy metoda do czytać a określony numer of bajtów od dotychczasowy
Gniazdo elektryczne. Prefiks to opcjonalny ciąg znaków, który należy połączyć z początkiem
wszelkich otrzymanych danych przed zwrotem.

· pusty: Jeśli wzór pozostanie pusty, opcją domyślną jest *l.

Jeżeli się powiedzie, metoda zwraca otrzymany wzorzec. W przypadku błędu,
metoda zwraca nil, po którym następuje komunikat o błędzie, który może być ciągiem „zamkniętym”.
w przypadku, gdy połączenie zostało zamknięte przed zakończeniem transmisji lub ciągu znaków
„limit czasu” w przypadku przekroczenia limitu czasu podczas operacji. Również po błędzie
komunikatu, funkcja zwraca częściowy wynik transmisji.

Ważna uwaga: ta funkcja została poważnie zmieniona. Kiedyś obsługiwał wiele
wzorce (ale nigdy nie widziałem, żeby ta funkcja była używana), a teraz już jej nie ma.
Częściowe wyniki były zwykle zwracane w taki sam sposób, jak wyniki pomyślne. Ten
ostatnia funkcja naruszyła koncepcję, że wszystkie funkcje powinny zwracać zero w przypadku błędu. Zatem
to też zostało zmienione.

Socket.send(gniazdo, dane[, początek[, koniec]])
Wysyła dane poprzez obiekt klienta.

Argumenty

· gniazdo (klasa_gniazda) -- Czy zmanipulowany Socket.

· dane (ciąg) -- Dane, które zostaną wysłane.

· początek (liczba całkowita) -- Pozycja początkowa w buforze danych, które będą
być wysłane.

· zakończenia (liczba całkowita) -- Końcowa pozycja w buforze danych, która będzie
wysłane.

Returns
patrz poniżej.

Dane to ciąg znaków, który ma zostać wysłany. Opcjonalne argumenty i oraz j działają dokładnie tak samo
standardowa funkcja string.sub Lua umożliwiająca wybór podciągu do wysłania.

Jeśli się powiedzie, metoda zwraca indeks ostatniego bajtu w obrębie [start, end]
który został wysłany. Zauważ, że jeśli start wynosi 1 lub nie ma go, jest to w rzeczywistości
całkowita liczba wysłanych bajtów. W przypadku błędu metoda zwraca zero, po którym następuje
komunikat o błędzie, po którym następuje indeks ostatniego bajtu w obrębie [start, end].
został wysłany. Możesz spróbować ponownie od bajtu następującego po tym. Błąd
wiadomość może zostać „zamknięta” w przypadku, gdy połączenie zostało zamknięte przed transmisją
została zakończona lub ciąg „timeout” w przypadku przekroczenia limitu czasu podczas
operacji.

Uwaga: dane wyjściowe nie są buforowane. W przypadku małych łańcuchów zawsze lepiej jest łączyć
je w Lua (z operatorem „..”) i zamiast tego wyślij wynik w jednym wywołaniu
wywołanie metody kilka razy.

Socket.setoption(gniazdo, opcja[, wartość])
Właśnie zaimplementowano dla kompatybilności, ta kalkulacja nic nie robi.

Socket.settimeout(gniazdo, wartość[, tryb])
Zmienia wartości limitu czasu dla obiektu. Wszystkie operacje we/wy są blokowane. To
oznacza to, że każde wywołanie metod send, odbieranie i akceptowanie będzie blokowane na czas nieokreślony,
aż do zakończenia operacji. Metoda settimeout definiuje limit kwoty
czasu, jaki metody I/O mogą blokować. Gdy upłynie limit czasu, dotknięty
metody poddają się i kończą się niepowodzeniem z kodem błędu.

Czas oczekiwania jest określony jako parametr wartości w sekundach.

Tryby limitu czasu są zaimplementowane przez bota, jedynym możliwym do ustawienia limitem czasu jest brak aktywności
czas oczekiwania na zakończenie wysyłania wewnętrznego bufora lub oczekiwania na odebranie danych.

Argumenty

· gniazdo (klasa_gniazda) -- Czy zmanipulowany Socket.

· wartość (liczba całkowita) -- Wartość limitu czasu.

klasa Mapa()
Ta klasa pozwala na wyszukiwanie na mapach HAProxy. Zadeklarowane mapy mogą być
zmodyfikowane w czasie wykonywania przez gniazdo zarządzania HAProxy.

domyślnie = „usa”

- Utwórz i załaduj mapę
geo = Mapa.nowa("geo.map", Mapa.ip);

-- Utwórz nowe pobieranie, które zwróci kraj użytkownika
core.register_fetches("kraj", funkcja(txn)
lokalne źródło;
lokalna lokalizacja;

src = txn.f:fhdr("x-przesłano-dla");
jeśli (źródło == zero) to
src = txn.f:src()
jeśli (źródło == zero) to
zwróć wartość domyślną;
zakończenia
zakończenia

-- Wykonaj wyszukiwanie
loc = geo:lookup(src);

if (loc == zero) to
zwróć wartość domyślną;
zakończenia

miejsce powrotu;
koniec);

Mapa.int
Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Mapa.ip Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Mapa.str
Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Mapa.błagam
Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Mapa sub
Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Mapa.reż
Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Mapa.dom
Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Koniec mapy
Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Mapa.reg
Zobacz plik konfiguracyjny HAProxy.txt, rozdział „Korzystanie z list ACL i pobieranie próbek”
w podrozdziale „Podstawy ACL”, aby zrozumieć tę metodę dopasowywania wzorców.

Mapa.new(plik, metoda)
Tworzy i ładuje mapę.

Argumenty

· filet (ciąg) — Czy plik zawiera mapę.

· metoda (liczba całkowita) -- Jest metodą dopasowywania wzorców mapy. Zobacz atrybuty
z klasy Mapa.

Returns
obiekt klasy Map.

See Atrybuty mapy.

Mapa.lookup(mapa, str)
Wykonaj wyszukiwanie na mapie.

Argumenty

· mapa (mapa_klas) -- Jest obiektem klasy Map.

· str (ciąg) -- Czy ciąg znaków jest używany jako klucz.

Returns
łańcuch zawierający wynik lub nil, jeśli nie pasuje.

Mapa.slookup(mapa, str)
Wykonaj wyszukiwanie na mapie.

Argumenty

· mapa (mapa_klas) -- Jest obiektem klasy Map.

· str (ciąg) -- Czy ciąg znaków jest używany jako klucz.

Returns
ciąg zawierający wynik lub pusty ciąg, jeśli nie ma dopasowania.

klasa AppletHTTP()
Ta klasa jest używana z apletami wymagającymi trybu „http”. Aplet http może
być zarejestrowanym w core.register_service() funkcjonować. Są używane do
przetwarzanie żądania http jak serwer z tyłu HAProxy.

To jest przykładowy kod hello world:

core.register_service("witaj-swiecie", "http", funkcja(aplet)
odpowiedź lokalna = „Witaj, świecie!”
aplet:set_status(200)
aplet:add_header("długość-treści", string.len(odpowiedź))
aplet:add_header("typ-zawartości", "tekst/zwykły")
aplet:start_response()
aplet:wyślij(odpowiedź)
koniec)

AppletHTTP.c

Returns
A Konwertery klasa

Ten atrybut zawiera obiekt klasy Converters.

AppletHTTP.sc

Returns
A Konwertery klasa

Ten atrybut zawiera obiekt klasy Converters. Funkcje tego obiektu
zwraca zawsze ciąg znaków.

AppletHTTP.f

Returns
A Pobiera klasa

Ten atrybut zawiera obiekt klasy Fetches. Należy pamiętać, że wykonanie apletu
place nie może uzyskać dostępu do prawidłowej transakcji HTTP z rdzeniem HAProxy, więc trochę próbki
Funkcje związane z wartościami zależnymi od protokołu HTTP (hdr, ścieżka, ...) nie są dostępne.

AppletHTTP.sf

Returns
A Pobiera klasa

Ten atrybut zawiera obiekt klasy Fetches. Funkcje tego obiektu
zwraca zawsze ciąg znaków. Należy pamiętać, że miejsce wykonania apletu nie może uzyskać dostępu do pliku a
poprawna transakcja HTTP rdzenia HAProxy, więc niektóre przykładowe efekty są powiązane z HTTP
wartości zależne (hdr, ścieżka, ...) nie są dostępne.

Metoda AppletHTTP

Returns
ciąg

Metoda atrybutu zwraca ciąg znaków zawierający metodę HTTP.

Wersja AppletHTTP

Returns
ciąg

Wersja atrybutu zwraca ciąg znaków zawierający wersję żądania HTTP.

Ścieżka AppletHTTP

Returns
ciąg

Ścieżka atrybutu zwraca ciąg znaków zawierający ścieżkę żądania HTTP.

AppletHTTP.qs

Returns
ciąg

Atrybut qs zwraca ciąg znaków zawierający ciąg zapytania żądania HTTP.

Długość AppletHTTP

Returns
liczba całkowita

Długość atrybutu zwraca liczbę całkowitą zawierającą długość treści HTTP.

Nagłówki AppletHTTP

Returns
szyk

Nagłówki atrybutów zwracają tablicę zawierającą nagłówki HTTP. Nagłówek
nazwy są zawsze pisane małymi literami. Ponieważ nazwę nagłówka można spotkać więcej niż
raz w każdym żądaniu wartość jest indeksowana z 0 jako pierwszą wartością indeksu. Tablica
mieć taką postać:

Nagłówki AppletHTTP[' '][ ] = " "

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

Nagłówki AppletHTTP
Zawiera tablicę zawierającą wszystkie nagłówki żądań.

AppletHTTP.set_status(aplet, kod)
Ta funkcja ustawia kod stanu HTTP dla odpowiedzi. Dozwolony kod pochodzi z
100 do 599.

Argumenty

· aplet (klasa_AppletHTTP) -- Jakiś AppletHTTP klasa

· kod (liczba całkowita) — kod statusu zwrócony klientowi.

AppletHTTP.add_header(aplet, imię, wartość)
Ta funkcja dodaje nagłówek do odpowiedzi. Zduplikowane nagłówki nie są zwinięte.
Specjalny nagłówek długość treści służy do określenia długości odpowiedzi. Jeśli to
nie istnieje, A kodowanie transferu: porcje jest ustawiony i cały zapis z funkcji
AppletHTTP:wyślij() stać się kawałkiem.

Argumenty

· aplet (klasa_AppletHTTP) -- Jakiś AppletHTTP klasa

· Nazwa (ciąg) -- nazwa nagłówka

· wartość (ciąg) — wartość nagłówka

AppletHTTP.start_response(aplet)
Ta funkcja wskazuje mechanizmowi HTTP, że może przetwarzać i wysyłać
nagłówki odpowiedzi. Po tym wywołaniu nie możemy dodawać nagłówków do odpowiedzi; My
nie można użyć AppletHTTP:wyślij() funkcja, jeśli AppletHTTP:start_response() nie jest
nazywa.

Argumenty

· aplet (klasa_AppletHTTP) -- Jakiś AppletHTTP klasa

AppletHTTP.getline(aplet)
Ta funkcja zwraca ciąg znaków zawierający jedną linię z treści http. Jeśli dane
zwrócony nie zawiera końcowego „\n”, zakłada się, że są to ostatnie dostępne dane
przed końcem strumienia.

Argumenty

· aplet (klasa_AppletHTTP) -- Jakiś AppletHTTP klasa

Returns
sznurek. Ciąg może być pusty, jeśli dotrzemy do końca strumienia.

AppletHTTP.receive(aplet[, rozmiar])
Odczytuje dane z treści HTTP zgodnie z określonym odczytem rozmiar, Jeśli rozmiar is
brakuje, funkcja próbuje odczytać całą zawartość strumienia do końca. Jeśli
dotychczasowy rozmiar jest większy niż treść http, zwraca ilość dostępnych danych.

Argumenty

· aplet (klasa_AppletHTTP) -- Jakiś AppletHTTP klasa

· rozmiar (liczba całkowita) -- wymagany rozmiar odczytu.

Returns
zawsze zwracaj ciąg znaków, ciąg może być pusty, jeśli połączenie jest zamknięte.

AppletHTTP.send(aplet, wiadomość)
Wyślij wiadomość msg w treści żądania http.

Argumenty

· aplet (klasa_AppletHTTP) -- Jakiś AppletHTTP klasa

· msg (ciąg) -- wiadomość do wysłania.

klasa AppletTCP()
Ta klasa jest używana z apletami wymagającymi trybu „tcp”. Aplet TCP może być
zarejestrowany w core.register_service() funkcjonować. Służą do przetwarzania
strumień TCP jak serwer z tyłu HAProxy.

AppletTCP.c

Returns
A Konwertery klasa

Ten atrybut zawiera obiekt klasy Converters.

AppletTCP.sc

Returns
A Konwertery klasa

Ten atrybut zawiera obiekt klasy Converters. Funkcje tego obiektu
zwraca zawsze ciąg znaków.

AppletTCP.f

Returns
A Pobiera klasa

Ten atrybut zawiera obiekt klasy Fetches.

AppletTCP.sf

Returns
A Pobiera klasa

Ten atrybut zawiera obiekt klasy Fetches.

AppletTCP.getline(aplet)
Ta funkcja zwraca ciąg znaków zawierający jedną linię ze strumienia. Jeśli dane
zwrócony nie zawiera końcowego „\n”, zakłada się, że są to ostatnie dostępne dane
przed końcem strumienia.

Argumenty

· aplet (klasa_ApletTCP) -- Jakiś AppletTCP klasa

Returns
sznurek. Ciąg może być pusty, jeśli dotrzemy do końca strumienia.

AppletTCP.receive(aplet[, rozmiar])
Odczytuje dane ze strumienia TCP zgodnie z określonym odczytem rozmiar, Jeśli rozmiar
brakuje, funkcja próbuje odczytać całą zawartość strumienia do końca.

Argumenty

· aplet (klasa_ApletTCP) -- Jakiś AppletTCP klasa

· rozmiar (liczba całkowita) -- wymagany rozmiar odczytu.

Returns
zawsze zwracaj ciąg znaków, ciąg może być pusty, jeśli połączenie jest zamknięte.

AppletTCP.send(appletmsg)
Wyślij wiadomość w strumieniu.

Argumenty

· aplet (klasa_ApletTCP) -- Jakiś AppletTCP klasa

· msg (ciąg) -- wiadomość do wysłania.

Wiele przydatnych bibliotek Lua można znaleźć tutaj:

· https://lua-toolbox.com/

Dostęp Redis:

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

To jest przykład użycia biblioteki Redis z HAProxy. Pamiętaj, że każde połączenie
dowolnej funkcji tej biblioteki może zgłosić błąd, jeśli połączenie z gniazdem nie powiedzie się.

-- załaduj bibliotekę redis
lokalny redis = require("redis");

funkcja zrób_coś(txn)

-- utwórz i podłącz nowe gniazdo TCP
lokalny tcp = core.tcp();
TCP:limit czasu(1);
tcp:połącz("127.0.0.1", 6379);

-- użyj biblioteki redis z tym nowym gniazdem
klient lokalny = redis.connect({socket=tcp});
klient:ping();

zakończenia

OpenSSL:

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

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

Korzystaj z haproxy-lua online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

  • 1
    HAUST
    HAUST
    SWIG to narzędzie do tworzenia oprogramowania
    która łączy programy napisane w C i
    C++ z różnymi wysokopoziomowymi
    języki programowania. SWIG jest używany z
    różne...
    Pobierz SWIG
  • 2
    Motyw WooCommerce Nextjs React
    Motyw WooCommerce Nextjs React
    Motyw React WooCommerce, zbudowany z
    Następny JS, Webpack, Babel, Node i
    Express, używając GraphQL i Apollo
    Klient. Sklep WooCommerce w React(
    zawiera: Produkty...
    Pobierz motyw WooCommerce Nextjs React
  • 3
    archlabs_repo
    archlabs_repo
    Repozytorium pakietów dla ArchLabs To jest plik
    aplikacja, którą można również pobrać
    od
    https://sourceforge.net/projects/archlabs-repo/.
    Został on hostowany w OnWorks w...
    Pobierz archlabs_repo
  • 4
    Projekt Zefir
    Projekt Zefir
    Projekt Zephyr to nowa generacja
    system operacyjny czasu rzeczywistego (RTOS).
    obsługuje wiele urządzeń
    architektury. Opiera się na A
    małe jądro...
    Pobierz projekt Zephyr
  • 5
    Scons
    Scons
    SCons to narzędzie do tworzenia oprogramowania
    jest lepszą alternatywą dla
    klasyczne narzędzie do budowania „Make”.
    wszyscy znamy i kochamy. SCons jest
    wdrożył...
    Pobierz SCons
  • 6
    PSeInt
    PSeInt
    PSeInt to interpreter pseudokodu dla
    hiszpańskojęzyczni studenci programowania.
    Jego głównym celem jest bycie narzędziem do
    nauka i zrozumienie podstaw
    koncepcja...
    Pobierz PSeInt
  • więcej »

Komendy systemu Linux

Ad