InglesPransesEspanyol

Ad


OnWorks favicon

haproxy-lua - Online sa Cloud

Patakbuhin ang haproxy-lua sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command na haproxy-lua na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


haproxy-lua - haproxy-lua Documentation

HAPROXY LUA PAGPAPAKITA MGA KONTEKSTO


Ang Lua code na pinaandar sa HAProxy ay maaaring iproseso sa 2 pangunahing mga mode. Ang una ay ang
pagpapasimula paraan, at ang pangalawa ay ang runtime paraan.

· Nasa pagpapasimula paraan, maaari kaming magsagawa ng mga paglutas ng DNS, ngunit hindi namin magawa ang socket I/O.
Sa initialization mode na ito, naka-block pa rin ang HAProxy sa panahon ng pagpapatupad ng Lua
programa.

· Nasa runtime paraan, hindi kami makakagawa ng mga DNS solve, ngunit maaari kaming gumamit ng mga socket. Ang
execution ng Lua code ay multiplexed sa mga kahilingan sa pagpoproseso, kaya ang Lua code
tila pinapatakbo sa pagharang, ngunit hindi ito ang kaso.

Ang Lua code ay na-load sa isa o higit pang mga file. Ang mga file na ito ay naglalaman ng pangunahing code at mga function.
Ang Lua ay may 6 na konteksto ng pagpapatupad.

1. Ang Lua file katawan kaugnay na kahulugan. Ito ay isinasagawa sa panahon ng pag-load ng Lua file sa
HAProxy [global] seksyon na may direktiba lua-load. Ito ay isinasagawa sa pagsisimula
mode. Ginagamit ang seksyong ito para sa pag-configure ng mga binding ng Lua sa HAProxy.

2. Ang Lua sa loob kaugnay na kahulugan. Ito ay isang function na Lua na isinagawa pagkatapos lamang ng HAProxy
pag-parse ng configuration. Ang execution ay nasa initialization mode. Sa kontekstong ito ang
Nasimulan na ang kapaligiran ng HAProxy. Ito ay kapaki-pakinabang upang suriin ang configuration, o
pagsisimula ng mga koneksyon o gawain ng socket. Ang mga function na ito ay ipinahayag sa katawan
konteksto sa function na Lua core.register_init(). Ang prototype ng function ay a
simpleng function na walang return value at walang mga parameter, tulad nito: tungkulin fcn().

3. Ang Lua gawain kaugnay na kahulugan. Ito ay isang function na Lua na pinaandar pagkatapos ng pagsisimula ng HAProxy
scheduler, at pagkatapos lamang ng deklarasyon ng gawain na may function na Lua
core.register_task(). Ang kontekstong ito ay maaaring kasabay ng pagpoproseso ng trapiko. Ito ay
naisakatuparan sa runtime mode. Ang prototype ng function ay isang simpleng function na walang
ibalik ang halaga at walang mga parameter, tulad nito: tungkulin fcn().

4. Ang aksyon kaugnay na kahulugan. Ito ay isang function ng Lua na may kondisyong isinasagawa. Ang mga pagkilos na ito ay
nakarehistro sa pamamagitan ng mga direktiba ng Lua "core.register_action()". Ang prototype ng Lua
tinatawag na function ay isang function na may hindi nagbabalik ng anuman at na kumuha ng isang bagay ng
klase TXN bilang entry. tungkulin fcn(txn).

5. Ang sample-fetch kaugnay na kahulugan. Ang function na ito ay tumatagal ng isang TXN object bilang entry argument at
nagbabalik ng string. Ang mga uri ng function na ito ay hindi maaaring magsagawa ng anumang blocking function. sila
ay kapaki-pakinabang upang pagsama-samahin ang ilan sa mga orihinal na sample-fetch ng HAProxy at ibalik ang resulta.
Ang prototype ng function ay tungkulin pisi fcn(txn). Ang mga function na ito ay maaaring
nakarehistro sa function na Lua core.register_fetches(). Ang bawat ipinahayag na sample-fetch ay
prefix ng string na "lua.".

NOTA: Posibleng hindi mahanap ng function na ito ang kinakailangang data sa orihinal
HAProxy sample-fetches, sa kasong ito, hindi nito maibabalik ang resulta. Ang kasong ito ay hindi pa
suportado

6. Ang Kombertidor kaugnay na kahulugan. Ito ay isang function na Lua na kumukuha ng isang string bilang input at bumabalik
isa pang string bilang output. Ang mga uri ng function na ito ay stateless, hindi nito ma-access
anumang konteksto. Hindi sila nagsasagawa ng anumang pag-block ng function. Ang prototype ng tawag ay tungkulin
pisi fcn(string). Maaaring irehistro ang function na ito sa function na Lua
core.register_converters(). Ang bawat ipinahayag na converter ay prefix ng string na "lua.".

HAPROXY LUA KAMUSTA Mundo


HAProxy configuration file (hello_world.conf):

global
lua-load hello_world.lua

makinig proxy
magbigkis 127.0.0.1:10001
tcp-request inspect-delay 1s
tcp-request ng content use-service lua.hello_world

HAProxy Lua file (hello_world.lua):

core.register_service("hello_world", "tcp", function(applet)
applet:send("hello world\n")
wakas)

Paano simulan ang HAProxy para sa pagsubok sa pagsasaayos na ito:

./haproxy -f hello_world.conf

Sa ibang terminal, maaari mong subukan sa telnet:

#:~ telnet 127.0.0.1 10001
kumusta mundo

klase core()
Ang "core" class ay naglalaman ng lahat ng HAProxy core function. Ang mga function na ito ay kapaki-pakinabang
para sa pagkontrol sa daloy ng pagpapatupad, pagrehistro ng mga kawit, pagmamanipula ng mga pandaigdigang mapa
o ACL, ...

Ang "core" na klase ay karaniwang ibinibigay sa HAProxy. Hindi mangailangan linya ay kinakailangan upang
gumagamit ng mga function na ito.

Ang "core" na klase ay static, hindi posible na lumikha ng isang bagong bagay ng ganitong uri.

core.emerg

Kita
kabuuan

Ang attribute na ito ay isang integer, naglalaman ito ng value ng loglevel na "emergency"
Na (0).

core.alerto

Kita
kabuuan

Ang katangiang ito ay isang integer, naglalaman ito ng halaga ng loglevel na "alerto" (1).

core.crit

Kita
kabuuan

Ang katangiang ito ay isang integer, naglalaman ito ng halaga ng loglevel na "kritikal" (2).

core.err

Kita
kabuuan

Ang katangiang ito ay isang integer, naglalaman ito ng halaga ng loglevel na "error" (3).

core.babala

Kita
kabuuan

Ang katangiang ito ay isang integer, naglalaman ito ng halaga ng loglevel na "babala" (4).

core.paunawa

Kita
kabuuan

Ang katangiang ito ay isang integer, naglalaman ito ng halaga ng "notice" ng loglevel (5).

core.info

Kita
kabuuan

Ang katangiang ito ay isang integer, naglalaman ito ng halaga ng loglevel na "info" (6).

core.debug

Kita
kabuuan

Ang katangiang ito ay isang integer, naglalaman ito ng halaga ng loglevel na "debug" (7).

core.log(loglevel, mensahe)
kaugnay na kahulugan: katawan, init, gawain, aksyon, sample-fetch, converter

Ang function na ito ay nagpapadala ng isang log. Ang log ay ipinadala, ayon sa HAProxy
configuration file, sa default na syslog server kung ito ay na-configure at sa
stderr kung ito ay pinapayagan.

Mga argumento

· antas ng log (kabuuan) -- Ang antas ba ng log ay nauugnay sa mensahe. Ito ay isang
numero sa pagitan ng 0 at 7.

· msg (pisi) -- Ang nilalaman ng log.

Tingnan core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (mga kahulugan ng antas ng log)

Tingnan code.Debug

Tingnan core.Impormasyon

Tingnan core.Babala

Tingnan core.Alerto

core.Debug(msg)
kaugnay na kahulugan: katawan, init, gawain, aksyon, sample-fetch, converter

Mga argumento

· msg (pisi) -- Ang nilalaman ng log.

Tingnan mag-log

Gumagawa ng parehong trabaho kaysa sa:

tungkulin Mag-alis ng mga insekto(msg)
core.log(core.debug, msg)
dulo

core.Impormasyon(msg)
kaugnay na kahulugan: katawan, init, gawain, aksyon, sample-fetch, converter

Mga argumento

· msg (pisi) -- Ang nilalaman ng log.

Tingnan mag-log

tungkulin Impormasyon(msg)
core.log(core.info, msg)
dulo

core.Babala(msg)
kaugnay na kahulugan: katawan, init, gawain, aksyon, sample-fetch, converter

Mga argumento

· msg (pisi) -- Ang nilalaman ng log.

Tingnan mag-log

tungkulin babala(msg)
core.log(core.warning, msg)
dulo

core.Alerto(msg)
kaugnay na kahulugan: katawan, init, gawain, aksyon, sample-fetch, converter

Mga argumento

· msg (pisi) -- Ang nilalaman ng log.

Tingnan mag-log

tungkulin Alerto(msg)
core.log(core.alert, msg)
dulo

core.add_acl(filename, key)
kaugnay na kahulugan: init, gawain, aksyon, sample-fetch, converter

Idagdag ang ACL susi sa listahan ng mga ACL na isinangguni ng file filename.

Mga argumento

· filename (pisi) -- ang filename na tumutukoy sa mga entry sa ACL.

· susi (pisi) -- ang susi na idadagdag.

core.del_acl(filename, key)
kaugnay na kahulugan: init, gawain, aksyon, sample-fetch, converter

Tanggalin ang ACL entry na isinangguni ng key susi sa listahan ng mga ACL na sinangguni ni
filename.

Mga argumento

· filename (pisi) -- ang filename na tumutukoy sa mga entry sa ACL.

· susi (pisi) -- ang susi na tatanggalin.

core.del_map(filename, key)
kaugnay na kahulugan: init, gawain, aksyon, sample-fetch, converter

Tanggalin ang entry ng mapa na na-index gamit ang tinukoy na key sa listahan ng mga na-reference na mapa
sa pamamagitan ng kanyang filename.

Mga argumento

· filename (pisi) -- ang filename na tumutukoy sa mga entry sa mapa.

· susi (pisi) -- ang susi na tatanggalin.

core.msleep(millisecond)
kaugnay na kahulugan: katawan, init, gawain, aksyon

Ang core.msleep() hihinto ang pagpapatupad ng Lua sa pagitan ng mga tinukoy na millisecond.

Mga argumento

· milliseconds (kabuuan) -- ang mga kinakailangang millisecond.

core.register_action(pangalan, aksyon, function)
kaugnay na kahulugan: katawan

Magrehistro ng isang function na Lua na isinagawa bilang aksyon. Magagamit ang lahat ng nakarehistrong aksyon
sa HAProxy na may prefix na "lua.". Ang isang aksyon ay nakakakuha ng TXN object class bilang input.

Mga argumento

· pangalan (pisi) -- ay ang pangalan ng converter.

· pagkilos (mesa) -- ay isang talahanayan ng string na naglalarawan sa mga aksyon ng HAProxy na
gustong magparehistro sa. Ang mga inaasahang aksyon ay 'tcp-req', 'tcp-res',
'http-req' o 'http-res'.

· func (tungkulin) -- ay ang Lua function na tinatawag upang gumana bilang converter.

Ang prototype ng Lua function na ginamit bilang argumento ay:

function(txn)

·

txn (TXN klase): ito is a TXN bagay ginamit para pagmamanipula ang
kasalukuyang kahilingan o TCP stream.

Dito, isang halimbawa ng pagpaparehistro ng aksyon. ang aksyon juste magpadala ng 'Hello world' sa
mga troso

core.register_action("hello-world", { "tcp-req", "http-req" }, function(txn)
txn:Info("Hello world")
wakas)
Ang halimbawang code na ito ay ginagamit sa HAproxy configuration tulad nito:

frontend tcp_frt
mode tcp
tcp-request ng nilalaman lua.hello-world

frontend http_frt
mode http
http-request lua.hello-world

core.register_converters(pangalan, function)
kaugnay na kahulugan: katawan

Magrehistro ng isang function na Lua na isinagawa bilang converter. Ang lahat ng mga nakarehistrong converter ay maaaring
ginamit sa HAProxy na may prefix na "lua.". Ang isang converter ay nakakakuha ng isang string bilang input at
ibalik ang isang string bilang output. Ang nakarehistrong function ay maaaring tumagal ng hanggang 9 na halaga bilang
parameter. Ang lahat ng halaga ay mga string.

Mga argumento

· pangalan (pisi) -- ay ang pangalan ng converter.

· func (tungkulin) -- ay ang Lua function na tinatawag upang gumana bilang converter.

Ang prototype ng Lua function na ginamit bilang argumento ay:

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

· STR (pisi): ito ang halaga ng input na awtomatikong na-convert sa string.

· p1 .. p5 (pisi): ito ay isang listahan ng mga argumentong string na idineklara sa haroxy
configuration file. Ang bilang ng mga argumento ay hindi lalampas sa 5. Ang pagkakasunud-sunod at ang
likas na katangian ng mga ito ay conventionally piliin ng developer.

core.register_fetches(pangalan, function)
kaugnay na kahulugan: katawan

Magrehistro ng isang function na Lua na isinagawa bilang sample fetch. Lahat ng rehistradong sample na kinukuha
maaaring gamitin sa HAProxy na may prefix na "lua.". Nagbabalik ng string ang isang sample na pagkuha ng Lua
bilang output. Ang nakarehistrong function ay maaaring tumagal ng hanggang 9 na value bilang parameter. Lahat ng
ang halaga ay mga string.

Mga argumento

· pangalan (pisi) -- ay ang pangalan ng converter.

· func (tungkulin) -- ay ang Lua function na tinatawag upang gumana bilang sample fetch.

Ang prototype ng Lua function na ginamit bilang argumento ay:

string function(txn, [p1 [, p2 [, ... [, p5]]]])

· txn (TXN klase): ito ang txn object na nauugnay sa kasalukuyang kahilingan.

· p1 .. p5 (pisi): ito ay isang listahan ng mga argumentong string na idineklara sa haroxy
configuration file. Ang bilang ng mga argumento ay hindi lalampas sa 5. Ang pagkakasunud-sunod at ang
likas na katangian ng mga ito ay conventionally piliin ng developer.

· Kita: Isang string na naglalaman ng ilang data, ot nil kung hindi maibabalik ngayon ang halaga.

halimbawa ng code ng lua:

core.register_fetches("hello", function(txn)
ibalik ang "hello"
wakas)
Halimbawang configuration ng HAProxy:

halimbawa ng frontend
http-request redirect location /%[lua.hello]

core.register_service(pangalan, fashion, function)
kaugnay na kahulugan: katawan

Magrehistro ng isang function na Lua na isinagawa bilang isang serbisyo. Ang lahat ng nakarehistrong serbisyo ay maaaring
ginamit sa HAProxy na may prefix na "lua.". Ang isang serbisyo ay nakakakuha ng isang object class bilang input
ayon sa kinakailangang mode.

Mga argumento

· pangalan (pisi) -- ay ang pangalan ng converter.

· paraan (pisi) -- ay string na naglalarawan sa kinakailangang mode. Tanging 'tcp' o
Ang 'http' ay pinapayagan.

· func (tungkulin) -- ay ang Lua function na tinatawag upang gumana bilang converter.

Ang prototype ng Lua function na ginamit bilang argumento ay:

function (applet)

· applet applet ay a AppletTCP klase o isang AppletHTTP klase. Ito ay depende sa uri
ng rehistradong applet. Isang applet na nakarehistro na may halagang 'http' para sa paraan
ang parameter ay makakakuha ng a AppletHTTP klase. Kung ang paraan ang halaga ay 'tcp', gagawin ng applet
nakakakuha ng AppletTCP klase.

babala: Ang mga Applet ng uri na 'http' ay hindi matatawag mula sa 'tcp-' mga tuntunin. Lamang ang 'http-'
Ang mga rulesets ay awtorisado, nangangahulugan ito na hindi posibleng tumawag ng isang HTTP applet mula sa a
proxy sa tcp mode. Ang mga Applet ng uri na 'tcp' ay maaaring tawagan mula sa kahit saan.

Narito, isang halimbawa ng pagpaparehistro ng serbisyo. ang serbisyo ay nagpapadala lamang ng 'Hello world' bilang isang
tugon ng http.

core.register_service("hello-world", "http", function(applet)
lokal na tugon = "Hello World !"
applet:set_status(200)
applet:add_header("haba ng nilalaman", string.len(tugon))
applet:add_header("content-type", "text/plain")
applet:start_response()
applet:send(tugon)
wakas)
Ang halimbawang code na ito ay ginagamit sa HAproxy configuration tulad nito:

halimbawa ng frontend
http-request use-service lua.hello-world

core.register_init(func)
kaugnay na kahulugan: katawan

Magrehistro ng isang function na naisakatuparan pagkatapos ng pag-parse ng configuration. Ito ay kapaki-pakinabang sa
suriin ang anumang mga parameter.

Mga argumento

· func (tungkulin) -- ay ang Lua function na tinatawag upang gumana bilang initializer.

Ang prototype ng Lua function na ginamit bilang argumento ay:

function()
Hindi ito nangangailangan ng input, at walang inaasahang output.

core.register_task(func)
kaugnay na kahulugan: katawan, init, gawain, aksyon, sample-fetch, converter

Magrehistro at simulan ang independiyenteng gawain. Nagsisimula ang gawain kapag ang HAProxy main
magsisimula ang scheduler. Halimbawa ang ganitong uri ng mga gawain ay maaaring isagawa upang maisagawa ang kumplikado
mga pagsusuri sa kalusugan.

Mga argumento

· func (tungkulin) -- ay ang Lua function na tinatawag upang gumana bilang initializer.

Ang prototype ng Lua function na ginamit bilang argumento ay:

function()
Hindi ito nangangailangan ng input, at walang inaasahang output.

core.set_nice(nice)
kaugnay na kahulugan: gawain, aksyon, sample-fetch, converter

Baguhin ang ganda ng kasalukuyang gawain o kasalukuyang session.

Mga argumento

· maganda (kabuuan) -- ang ganda ng value, dapat nasa pagitan ng -1024 at 1024.

core.set_map(filename, susi, halaga)
kaugnay na kahulugan: init, gawain, aksyon, sample-fetch, converter

itakda ang halaga halaga nauugnay sa susi susi sa mapa na tinutukoy ni filename.

Mga argumento

· filename (pisi) -- ang sanggunian sa Mapa

· susi (pisi) -- ang susi upang itakda o palitan

· halaga (pisi) -- ang nauugnay na halaga

core.sleep(int segundo)
kaugnay na kahulugan: katawan, init, gawain, aksyon

Ang core.sleep() ang mga function ay huminto sa pagpapatupad ng Lua sa pagitan ng mga tinukoy na segundo.

Mga argumento

· segundo (kabuuan) -- ang mga kinakailangang segundo.

core.tcp()
kaugnay na kahulugan: init, gawain, aksyon

Ang function na ito ay nagbabalik ng bagong object ng a socket klase.

Kita
A Saksakan klase bagay.

core.done(data)
kaugnay na kahulugan: katawan, init, gawain, aksyon, sample-fetch, converter

Mga argumento

· data (anumang) -- Ibalik ang ilang data para sa tumatawag. Ito ay kapaki-pakinabang sa
sample-fetch at sample-converter.

Agad na itinigil ang kasalukuyang pagpapatupad ng Lua at bumalik sa tumatawag na maaaring
isang sample na pagkuha, isang converter o isang aksyon at ibinabalik ang tinukoy na halaga (hindi pinansin
para sa mga aksyon). Ginagamit ito kapag natapos na ng proseso ng LUA ang trabaho nito at gustong magbigay
ibalik ang kontrol sa HAProxy nang hindi isinasagawa ang natitirang code. Ito ay makikita bilang
isang multi-level na "pagbabalik".

core.yield()
kaugnay na kahulugan: gawain, aksyon, sample-fetch, converter

Ibalik ang kamay sa HAProxy scheduler. Ito ay ginagamit kapag ang LUA processing
gumagamit ng maraming oras ng pagproseso.

klase Mga kinukuha()
Naglalaman ang klase na ito ng maraming panloob na pagkuha ng sample ng HAProxy. Tingnan ang HAProxy
"configuration.txt" na dokumentasyon para sa higit pang impormasyon tungkol sa kanyang paggamit. sila ay
ang mga kabanata 7.3.2 hanggang 7.3.6.

babala ang ilang sample na pagkuha ay hindi available sa ilang konteksto. Ang mga limitasyong ito
ay tinukoy sa dokumentasyong ito kapag sila ay kapaki-pakinabang.

Tingnan TXN.f

Tingnan TXN.sf

Ang mga pagkuha ay kapaki-pakinabang para sa:

· makakuha ng oras ng system,

· kumuha ng variable ng kapaligiran,

· makakuha ng mga random na numero,

· kilalang backend status tulad ng bilang ng mga user sa pila o ang bilang ng
itinatag ang mga koneksyon,

· impormasyon ng kliyente tulad ng ip source o destination,

· makitungo sa mga stick table,

· Itinatag na mga impormasyon sa SSL,

· HTTP na impormasyon tulad ng mga header o pamamaraan.

pagkilos ng function(txn)
-- Kumuha ng source IP
lokal na kliyente = txn.f:src()
dulo

klase Mga Converter()
Ang klase na ito ay naglalaman ng maraming panloob na HAProxy sample converter. Tingnan ang HAProxy
dokumentasyong "configuration.txt" para sa higit pang impormasyon tungkol sa kanyang paggamit. Nito ang
kabanata 7.3.1.

Tingnan TXN.c

Tingnan TXN.sc

Nagbibigay ang mga Converter ng buong estadong pagbabago. Ang mga ito ay kapaki-pakinabang para sa:

· pag-convert ng input sa base64,

· paglalapat ng hash sa input string (djb2, crc32, sdbm, wt6),

· format ng petsa,

· json pagtakas,

· pagkuha ng ginustong wika na naghahambing ng dalawang listahan,

· lumiko sa lower o upper chars,

· makitungo sa mga talahanayan ng stick.

klase Channel()
Gumagamit ang HAProxy ng dalawang buffer para sa pagproseso ng mga kahilingan. Ang una ay ginagamit
kasama ang data ng kahilingan (mula sa kliyente hanggang sa server) at ang pangalawa ay ginagamit para sa
ang data ng tugon (mula sa server hanggang sa kliyente).

Ang bawat buffer ay naglalaman ng dalawang uri ng data. Ang unang uri ay ang papasok na data na naghihintay
para sa isang pagproseso. Ang pangalawang bahagi ay ang papalabas na data na naproseso na. kadalasan,
ang papasok na data ay pinoproseso, pagkatapos itong ma-tag bilang papalabas na data, at sa wakas ito
ay ipinadala. Ang mga sumusunod na function ay nagbibigay ng mga tool para sa pagmamanipula ng data na ito sa a
buffer.

Ipinapakita ng sumusunod na diagram kung saan inilalapat ang function ng channel class.

babala: Hindi posibleng basahin mula sa tugon sa kahilingang aksyon, at ito ay
hindi posibleng basahin para sa channel ng kahilingan bilang tugon sa pagkilos.
[imahe]

Channel.dup(channel)
Ang function na ito ay nagbabalik ng isang string na naglalaman ng buong buffer. Ang data ay hindi
alisin mula sa buffer at maaaring muling iproseso sa ibang pagkakataon.

Kung ang buffer ay hindi makatanggap ng higit pang data, isang 'nil' na halaga ang ibabalik.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

Kita
isang string na naglalaman ng lahat ng magagamit na data o nil.

Channel.get(channel)
Ang function na ito ay nagbabalik ng isang string na naglalaman ng buong buffer. Ang data ay natupok
mula sa buffer.

Kung ang buffer ay hindi makatanggap ng higit pang data, isang 'nil' na halaga ang ibabalik.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

Kita
isang string na naglalaman ng lahat ng magagamit na data o nil.

Channel.getline(channel)
Ang function na ito ay nagbabalik ng isang string na naglalaman ng unang linya ng buffer. Ang data
ay natupok. Kung ang ibinalik na data ay hindi naglalaman ng panghuling 'n' na ipinapalagay kaysa nito
ang huling magagamit na data sa buffer.

Kung ang buffer ay hindi makatanggap ng higit pang data, isang 'nil' na halaga ang ibabalik.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

Kita
isang string na naglalaman ng magagamit na linya o nil.

Channel.set(channel, string)
Pinapalitan ng function na ito ang nilalaman ng buffer ng string. Nagbabalik ang function
ang kinopyang haba, kung hindi, ito ay nagbabalik -1.

Ang set ng data na may ganitong function ay hindi ipinapadala. Hinihintay nila ang pagtatapos ng HAProxy
pagpoproseso, para mapuno ang buffer.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

· pisi (pisi) -- Ang data na ipapadala.

Kita
isang integer na naglalaman ng dami ng mga byte na kinopya o -1.

Channel.append(channel, string)
Ang function na ito ay nagdaragdag ng string argument sa nilalaman ng buffer. Ang function
ibinabalik ang kinopyang haba, kung hindi, ibabalik nito -1.

Ang set ng data na may ganitong function ay hindi ipinapadala. Hinihintay nila ang pagtatapos ng HAProxy
pagpoproseso, para mapuno ang buffer.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

· pisi (pisi) -- Ang data na ipapadala.

Kita
isang integer na naglalaman ng dami ng mga byte na kinopya o -1.

Channel.send(channel, string)
Ang function na ito ay nangangailangan ng agarang pagpapadala ng data. Maliban kung ang koneksyon ay
malapit na, ang buffer ay regular na na-flush at lahat ng string ay maaaring ipadala.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

· pisi (pisi) -- Ang data na ipapadala.

Kita
isang integer na naglalaman ng dami ng mga byte na kinopya o -1.

Channel.get_in_length(channel)
Ibinabalik ng function na ito ang haba ng bahagi ng input ng buffer.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

Kita
isang integer na naglalaman ng dami ng available na byte.

Channel.get_out_length(channel)
Ibinabalik ng function na ito ang haba ng bahagi ng output ng buffer.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

Kita
isang integer na naglalaman ng dami ng available na byte.

Channel.forward(channel, int)
Ang function na ito ay naglilipat ng mga byte mula sa bahagi ng input ng buffer patungo sa bahagi ng output.

Mga argumento

· channel (class_channel) -- Ang manipuladong Channel.

· int (kabuuan) -- Ang dami ng data na ipapasa.

klase HTTP()
Ang klase na ito ay naglalaman ng lahat ng HTTP manipulation function.

HTTP.req_get_headers(http)
Nagbabalik ng array na naglalaman ng lahat ng mga header ng kahilingan.

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

Kita
hanay ng mga header.

Tingnan HTTP.res_get_headers()

Ito ang anyo ng ibinalik na hanay:

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

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

HTTP.res_get_headers(http)
Nagbabalik ng array na naglalaman ng lahat ng mga header ng tugon.

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

Kita
hanay ng mga header.

Tingnan HTTP.req_get_headers()

Ito ang anyo ng ibinalik na hanay:

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

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

HTTP.req_add_header(http, pangalan, halaga)
Nagdaragdag ng field ng HTTP header sa kahilingan na ang pangalan ay tinukoy sa "pangalan" at
na ang halaga ay tinukoy sa "halaga".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

· halaga (pisi) -- Ang halaga ng header.

Tingnan HTTP.res_add_header()

HTTP.res_add_header(http, pangalan, halaga)
nagdaragdag ng field ng HTTP header sa tugon na ang pangalan ay tinukoy sa "pangalan" at
na ang halaga ay tinukoy sa "halaga".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

· halaga (pisi) -- Ang halaga ng header.

Tingnan HTTP.req_add_header()

HTTP.req_del_header(http, pangalan)
Tinatanggal ang lahat ng mga field ng header ng HTTP sa kahilingan na ang pangalan ay tinukoy sa "pangalan".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

Tingnan HTTP.res_del_header()

HTTP.res_del_header(http, pangalan)
Tinatanggal ang lahat ng mga field ng header ng HTTP sa tugon na ang pangalan ay tinukoy sa "pangalan".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

Tingnan HTTP.req_del_header()

HTTP.req_set_header(http, pangalan, halaga)
Pinapalitan ng variable na ito ang lahat ng paglitaw ng lahat ng header na "pangalan", ng isa lamang na naglalaman
ang halaga".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

· halaga (pisi) -- Ang halaga ng header.

Tingnan HTTP.res_set_header()

Gumagana ang function na ito sa parehong gawain tulad ng sumusunod na code:

function na fcn(txn)
TXN.http:req_del_header("header")
TXN.http:req_add_header("header", "value")
dulo

HTTP.res_set_header(http, pangalan, halaga)
Pinapalitan ng variable na ito ang lahat ng paglitaw ng lahat ng header na "pangalan", ng isa lamang na naglalaman
ang halaga".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

· halaga (pisi) -- Ang halaga ng header.

Tingnan HTTP.req_rep_header()

HTTP.req_rep_header(http, pangalan, regex, palitan)
Tumutugma sa regular na expression sa lahat ng paglitaw ng header field na "pangalan" ayon
sa "regex", at pinapalitan ang mga ito ng "palitan" na argumento. Ang kapalit na halaga
maaaring maglaman ng mga back reference tulad ng 1, 2, ... Gumagana ang function na ito sa kahilingan.

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

· regex (pisi) -- Ang tugmang regular na expression.

· palitan (pisi) -- Ang kapalit na halaga.

Tingnan HTTP.res_rep_header()

HTTP.res_rep_header(http, pangalan, regex, string)
Tumutugma sa regular na expression sa lahat ng paglitaw ng header field na "pangalan" ayon
sa "regex", at pinapalitan ang mga ito ng "palitan" na argumento. Ang kapalit na halaga
maaaring maglaman ng mga back reference tulad ng 1, 2, ... Gumagana ang function na ito sa kahilingan.

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

· regex (pisi) -- Ang tugmang regular na expression.

· palitan (pisi) -- Ang kapalit na halaga.

Tingnan HTTP.req_replace_header()

HTTP.req_replace_value(http, pangalan, regex, palitan)
Gumagana tulad ng "HTTP.req_replace_header()" maliban na tumutugma ito sa regex laban sa
bawat comma-delimited value ng header field na "name" sa halip na ang kabuuan
header.

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

· regex (pisi) -- Ang tugmang regular na expression.

· palitan (pisi) -- Ang kapalit na halaga.

Tingnan HTTP.req_replace_header()

Tingnan HTTP.res_replace_value()

HTTP.res_replace_value(http, pangalan, regex, palitan)
Gumagana tulad ng "HTTP.res_replace_header()" maliban na tumutugma ito sa regex laban sa
bawat comma-delimited value ng header field na "name" sa halip na ang kabuuan
header.

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· pangalan (pisi) -- Ang pangalan ng header.

· regex (pisi) -- Ang tugmang regular na expression.

· palitan (pisi) -- Ang kapalit na halaga.

Tingnan HTTP.res_replace_header()

Tingnan HTTP.req_replace_value()

HTTP.req_set_method(http, paraan)
Isinulat muli ang paraan ng kahilingan gamit ang parameter na "pamamaraan".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· paraan (pisi) -- Ang bagong paraan.

HTTP.req_set_path(http, landas)
Isinulat muli ang path ng kahilingan gamit ang parameter na "path".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· landas (pisi) -- Ang bagong landas.

HTTP.req_set_query(http, tanong)
Isinulat muli ang string ng query ng kahilingan na lumalabas pagkatapos ng unang tandang pananong
("?") na may parameter na "query".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· tanong (pisi) -- Ang bagong query.

HTTP.req_set_uri(http, uri)
Isinulat muli ang kahilingang URI gamit ang parameter na "uri".

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· URI (pisi) -- Ang bagong uri.

HTTP.res_set_status(http, katayuan)
Isinulat muli ang code ng status ng tugon gamit ang parameter na "code". Tandaan na ang dahilan
ay awtomatikong iniangkop sa bagong code.

Mga argumento

· http (class_http) -- Ang kaugnay na http object.

· katayuan (kabuuan) -- Ang bagong response status code.

klase TXN()
Ang klase ng txn ay naglalaman ng lahat ng mga function na nauugnay sa transaksyong http o tcp
(Tandaan kaysa sa isang tcp stream ay pareho sa isang tcp na transaksyon, ngunit isang HTTP na transaksyon
ay hindi katulad ng isang tcp stream).

Ang paggamit ng klase na ito ay nagbibigay-daan upang makuha ang data mula sa mga kahilingan, baguhin ito at
ipasa ito.

Ang lahat ng mga function na ibinigay ng klase na ito ay magagamit sa konteksto
sample-fetches at pagkilos.

TXN.c

Kita
An Mga Converter klase.

Naglalaman ang attribute na ito ng object ng klase ng Converters.

TXN.sc

Kita
An Mga Converter klase.

Naglalaman ang attribute na ito ng object ng klase ng Converters. Ang mga pag-andar ng bagay na ito
palaging nagbabalik ng isang string.

TXN.f

Kita
An Kinukuha klase.

Naglalaman ang attribute na ito ng Fetches class object.

TXN.sf

Kita
An Kinukuha klase.

Naglalaman ang attribute na ito ng Fetches class object. Ang mga pag-andar ng bagay na ito
palaging nagbabalik ng isang string.

TXN.req

Kita
An channel klase.

Ang attribute na ito ay naglalaman ng isang channel class object para sa request buffer.

TXN.res

Kita
An channel klase.

Ang attribute na ito ay naglalaman ng isang channel class object para sa response buffer.

TXN.http

Kita
An HTTP klase.

Naglalaman ang attribute na ito ng object ng klase ng HTTP. Ito ay magagamit lamang kung mayroon ang proxy
pinagana ang "mode http".

TXN.log(TXN, loglevel, mensahe)
Ang function na ito ay nagpapadala ng isang log. Ang log ay ipinadala, ayon sa HAProxy
configuration file, sa default na syslog server kung ito ay na-configure at sa
stderr kung ito ay pinapayagan.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· antas ng log (kabuuan) -- Ang antas ba ng log ay nauugnay sa mensahe. Ito ay isang
numero sa pagitan ng 0 at 7.

· msg (pisi) -- Ang nilalaman ng log.

Tingnan core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (mga kahulugan ng antas ng log)

Tingnan TXN.deflog

Tingnan TXN.Debug

Tingnan TXN.Impormasyon

Tingnan TXN.Babala

Tingnan TXN.Alerto

TXN.deflog(TXN, mensahe)
Nagpapadala ng log line na may default na loglevel para sa proxy na nauugnay sa
transaksyon.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· msg (pisi) -- Ang nilalaman ng log.

Tingnan TXN.log

TXN.Debug(txn, mensahe)

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· msg (pisi) -- Ang nilalaman ng log.

Tingnan TXN.log

Gumagawa ng parehong trabaho kaysa sa:

function Debug(txn, msg)
TXN.log(txn, core.debug, msg)
dulo

TXN.Info(txn, mensahe)

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· msg (pisi) -- Ang nilalaman ng log.

Tingnan TXN.log

function Debug(txn, msg)
TXN.log(txn, core.info, msg)
dulo

TXN.Babala(txn, mensahe)

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· msg (pisi) -- Ang nilalaman ng log.

Tingnan TXN.log

function Debug(txn, msg)
TXN.log(txn, core.warning, msg)
dulo

TXN.Alert(txn, mensahe)

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· msg (pisi) -- Ang nilalaman ng log.

Tingnan TXN.log

function Debug(txn, msg)
TXN.log(txn, core.alert, msg)
dulo

TXN.get_priv(txn)
Ibalik ang data ng Lua na nakaimbak sa kasalukuyang transaksyon (na may TXN.set_priv())
function. Kung walang data na nakaimbak, nagbabalik ito ng nil value.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

Kita
ang opaque na data na dati nang nakaimbak, o wala kung walang available.

TXN.set_priv(txn, petsa)
Mag-imbak ng anumang data sa kasalukuyang transaksyon ng HAProxy. Pinapalitan ng pagkilos na ito ang luma
nakaimbak na data.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· data (hindi lampasan ng liwanag) -- Ang data na nakaimbak sa transaksyon.

TXN.set_var(TXN, meron, halaga)
Kino-convert ang isang uri ng Lua sa isang uri ng HAProxy at iniimbak ito sa isang variable .

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· ay (pisi) -- Ang variable na pangalan ayon sa HAProxy variable
Syntax.

· halaga (hindi lampasan ng liwanag) -- Ang data na nakaimbak sa variable.

TXN.get_var(TXN, var)
Ibinabalik ang data na nakaimbak sa variable converter sa uri ng Lua.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· ay (pisi) -- Ang variable na pangalan ayon sa HAProxy variable
Syntax.

TXN.get_headers(txn)
Ang function na ito ay nagbabalik ng hanay ng mga header.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

Kita
isang hanay ng mga header.

TXN.tapos na(txn)
Tinatapos ng function na ito ang pagproseso ng transaksyon at ang nauugnay na session.
Maaari itong magamit kapag may nakitang kritikal na error o upang wakasan ang pagproseso pagkatapos
ilang data ang naibalik sa kliyente (hal.: isang pag-redirect).

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

TXN.set_loglevel(txn, loglevel)
Ginagamit upang baguhin ang antas ng log ng kasalukuyang kahilingan. Ang "loglevel" ay dapat na isang
integer sa pagitan ng 0 at 7.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· antas ng log (kabuuan) -- Ang kinakailangang antas ng log. Ang variable na ito ay maaaring isa sa

Tingnan core.

TXN.set_tos(txn, tos)
Ginagamit upang itakda ang TOS o DSCP field value ng mga packet na ipinadala sa kliyente sa
value na ipinasa sa "tos" sa mga platform na sumusuporta dito.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· tos (kabuuan) -- Ang bagong TOS os DSCP.

TXN.set_mark(txn, marka)
Ginagamit upang itakda ang Netfilter MARK sa lahat ng packet na ipinadala sa kliyente sa halaga
ipinasa sa "marka" sa mga platform na sumusuporta dito.

Mga argumento

· txn (class_txn) -- Ang class txn object na naglalaman ng data.

· markahan (kabuuan) -- Ang halaga ng marka.

klase Socket()
Ang klase na ito ay dapat na tugma sa klase ng Lua Socket. Tanging ang 'kliyente'
magagamit ang mga function. Tingnan ang dokumentasyon ng Lua Socket:

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

Socket.close(socket)
Nagsasara ng TCP object. Ang panloob na socket na ginagamit ng bagay ay sarado at ang lokal
ang address kung saan nakatali ang object ay ginawang available sa iba pang mga application. Hindi
ang mga karagdagang operasyon (maliban sa mga karagdagang tawag sa paraan ng pagsasara) ay pinapayagan sa a
saradong Socket.

Mga argumento

· socket (class_socket) -- Ay ang manipulated Socket.

Tandaan: Mahalagang isara ang lahat ng ginamit na socket kapag hindi na kailangan ang mga ito, dahil, in
maraming mga sistema, ang bawat socket ay gumagamit ng isang file descriptor, na limitadong sistema
mapagkukunan. Ang mga bagay na kinokolekta ng basura ay awtomatikong isinasara bago sirain,
bagaman.

Socket.connect(socket, address [, port])
Mga pagtatangkang ikonekta ang isang socket object sa isang remote host.

Sa kaso ng error, ang pamamaraan ay nagbabalik ng nil na sinusundan ng isang string na naglalarawan sa error.
Sa kaso ng tagumpay, ang pamamaraan ay nagbabalik ng 1.

Mga argumento

· socket (class_socket) -- Ay ang manipulated Socket.

· tirahan (pisi) -- maaaring isang IP address o isang host name. Tingnan sa ibaba para sa
karagdagang informasiyon.

· port (kabuuan) -- dapat ay isang integer na numero sa hanay [1..64K].

Kita
1 o wala.

pinahihintulutan ng extension ng address field na gamitin ang function na connect() para kumonekta
ibang stream kaysa sa TCP. Ang syntax na naglalaman ng simpleipv4 o ipv6 address ay ang
karaniwang inaasahang format. Ang format na ito ay nangangailangan ng port.

Ang iba pang format na tinatanggap ay isang socket path tulad ng "/socket/path", pinapayagan nitong kumonekta
sa isang socket. Ang mga abstract na namespace ay sinusuportahan ng prefix na "abns@", at sa wakas
maaaring ipasa ang isang filedescriotr na may prefix na "fd@". Ang prefix na "ipv4@", "ipv6@"
at "unix@" ay sinusuportahan din. Ang port ay maaaring maipasa sa string. Ang syntax
Ang "127.0.0.1:1234" ay may bisa. sa kasong ito, ang parameter port ay hindi pinansin.

Socket.connect_ssl(socket, address, port)
Parehong pag-uugali kaysa sa function socket:connect, ngunit gumagamit ng SSL.

Mga argumento

· socket (class_socket) -- Ay ang manipulated Socket.

Kita
1 o wala.

Socket.getpeername(socket)
Nagbabalik ng impormasyon tungkol sa malayong bahagi ng isang konektadong object ng kliyente.

Nagbabalik ng string na may IP address ng peer, na sinusundan ng port number na iyon
ginagamit ng peer para sa koneksyon. Sa kaso ng error, ang pamamaraan ay nagbabalik ng wala.

Mga argumento

· socket (class_socket) -- Ay ang manipulated Socket.

Kita
isang string na naglalaman ng impormasyon ng server.

Socket.getsockname(socket)
Ibinabalik ang impormasyon ng lokal na address na nauugnay sa bagay.

Ang pamamaraan ay nagbabalik ng isang string na may lokal na IP address at isang numero na may port. Sa
kaso ng error, ang pamamaraan ay nagbabalik ng wala.

Mga argumento

· socket (class_socket) -- Ay ang manipulated Socket.

Kita
isang string na naglalaman ng impormasyon ng kliyente.

Socket.receive(socket[, pattern [, prefix]])
Nagbabasa ng data mula sa isang object ng kliyente, ayon sa tinukoy na pattern ng pagbabasa. Mga pattern
sundin ang format na I/O ng Lua file, at ang pagkakaiba sa pagganap sa pagitan ng lahat
ang mga pattern ay bale-wala.

Mga argumento

· socket (class_socket) -- Ay ang manipulated Socket.

· huwaran (string|integer) -- Ilarawan kung ano ang kinakailangan (tingnan sa ibaba).

· unlapi (pisi) -- Isang string na magiging prefix ng ibinalik na data.

Kita
isang string na naglalaman ng kinakailangang data o nil.

Ang pattern ay maaaring alinman sa mga sumusunod:

·

`*a`: bumabasa mula ang socket hanggang ang koneksyon is sarado. Hindi
isinagawa ang end-of-line na pagsasalin;

·

`*l`: bumabasa a linya of teksto mula ang Socket. Ang linya is tinapos na by a
LF character (ASCII 10), opsyonal na pinangungunahan ng CR character (ASCII 13).
Ang mga character na CR at LF ay hindi kasama sa ibinalik na linya. Sa katunayan,
lahat ng CR character ay binabalewala ng pattern. Ito ang default na pattern.

·

numero: sanhi ang paraan sa basahin a tinukoy numero of bytes mula ang
Socket. Ang prefix ay isang opsyonal na string na isasama sa simula
ng anumang natanggap na data bago ibalik.

· walang laman: Kung ang pattern ay naiwang walang laman, ang default na opsyon ay *l.

Kung matagumpay, ibabalik ng pamamaraan ang natanggap na pattern. Sa kaso ng pagkakamali, ang
method ay nagbabalik ng nil na sinusundan ng isang mensahe ng error na maaaring ang string ay 'sarado'
kaso ang koneksyon ay sarado bago makumpleto ang paghahatid o ang string
'timeout' kung sakaling magkaroon ng timeout sa panahon ng operasyon. Gayundin, pagkatapos ng error
mensahe, ibinabalik ng function ang bahagyang resulta ng transmission.

Mahalagang paalala: Ang function na ito ay nabago nang husto. Dati itong sumusuporta sa marami
patterns (ngunit hindi ko pa nakitang ginamit ang feature na ito) at ngayon ay hindi na.
Ang mga bahagyang resulta ay ibinalik sa parehong paraan tulad ng matagumpay na mga resulta. Ito
ang huling tampok ay lumabag sa ideya na ang lahat ng mga pag-andar ay dapat na bumalik sa nil sa error. Sa gayon
napalitan din.

Socket.send(socket, data[, simulan [, wakas]])
Nagpapadala ng data sa pamamagitan ng object ng kliyente.

Mga argumento

· socket (class_socket) -- Ay ang manipulated Socket.

· data (pisi) -- Ang data na ipapadala.

· simula (kabuuan) -- Ang panimulang posisyon sa buffer ng data na gagawin
ipapadala.

· dulo (kabuuan) -- Ang posisyon ng pagtatapos sa buffer ng data na magiging
ipinadala.

Kita
tingnan sa ibaba.

Ang data ay ang string na ipapadala. Ang mga opsyonal na argumento na i at j ay gumagana nang eksakto tulad ng
standard string.sub Lua function upang payagan ang pagpili ng isang substring na maipadala.

Kung matagumpay, ibabalik ng pamamaraan ang index ng huling byte sa loob ng [simula, wakas]
na naipadala na. Pansinin na, kung ang simula ay 1 o wala, ito ay epektibong ang
kabuuang bilang ng mga byte na ipinadala. Sa kaso ng error, ang pamamaraan ay nagbabalik ng nil, na sinusundan ng
isang mensahe ng error, na sinusundan ng index ng huling byte sa loob ng [simula, tapusin] iyon
Naipadala na. Baka gusto mong subukang muli mula sa byte kasunod nito. Ang pagkakamali
Ang mensahe ay maaaring 'sarado' kung sakaling ang koneksyon ay sarado bago ang paghahatid
ay nakumpleto o ang string na 'timeout' kung sakaling may timeout sa panahon ng
operasyon.

Tandaan: Hindi naka-buffer ang output. Para sa maliliit na mga string, palaging mas mahusay na pagsamahin
sila sa Lua (na may operator na '..') at ipadala ang resulta sa isang tawag sa halip na
pagtawag sa pamamaraan ng ilang beses.

Socket.setoption(socket, opsyon [, halaga])
Ipinatupad lang para sa pagiging tugma, walang ginagawa ang cal na ito.

Socket.settimeout(socket, halaga [, mode])
Binabago ang mga value ng timeout para sa object. Lahat ng I/O operations ay humaharang. yun
ay, anumang tawag sa mga pamamaraan na ipinapadala, natatanggap, at tinatanggap ay haharang nang walang katiyakan,
hanggang sa matapos ang operasyon. Tinutukoy ng paraan ng settimeout ang isang limitasyon sa halaga
ng oras na maaaring harangan ang mga pamamaraan ng I/O. Kapag lumipas na ang isang timeout time, ang apektado
ang mga pamamaraan ay sumusuko at nabigo sa isang error code.

Ang tagal ng oras upang maghintay ay tinukoy bilang parameter ng halaga, sa mga segundo.

Ang mga timeout mode ay ipinatupad sa bot, ang tanging nakatakdang timeout ay ang kawalan ng aktibidad
oras ng paghihintay para makumpleto ang internal buffer na ipadala o naghihintay para sa pagtanggap ng data.

Mga argumento

· socket (class_socket) -- Ay ang manipulated Socket.

· halaga (kabuuan) -- Ang halaga ng timeout.

klase Mapa()
Pinahihintulutan ng klase na ito na gumawa ng ilang paghahanap sa mga mapa ng HAProxy. Ang ipinahayag na mga mapa ay maaaring
binago sa panahon ng runtime sa pamamagitan ng HAProxy management socket.

default = "usa"

-- Gumawa at mag-load ng mapa
geo = Map.new("geo.map", Map.ip);

-- Lumikha ng bagong pagkuha na nagbabalik sa bansa ng gumagamit
core.register_fetches("bansa", function(txn)
lokal na src;
lokal na lugar;

src = txn.f:fhdr("x-forwarded-for");
kung (src == nil) kung gayon
src = txn.f:src()
kung (src == nil) kung gayon
ibalik ang default;
dulo
dulo

-- Magsagawa ng paghahanap
loc = geo:lookup(src);

kung (loc == nil) pagkatapos
ibalik ang default;
dulo

bumalik loc;
wakas);

Map.int
Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Map.ip Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Map.str
Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Mapa.beg
Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Map.sub
Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Map.dir
Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Map.dom
Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Map.end
Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Map.reg
Tingnan ang HAProxy configuration.txt file, kabanata na "Paggamit ng mga ACL at pagkuha ng mga sample"
ans subchapter "ACL basics" para maunawaan ang pattern matching method na ito.

Map.new(file, paraan)
Gumagawa at naglo-load ng mapa.

Mga argumento

· file (pisi) -- Ang file ba ay naglalaman ng mapa.

· paraan (kabuuan) -- Ay ang paraan ng pagtutugma ng pattern ng mapa. Tingnan ang mga katangian
ng klase ng Map.

Kita
isang bagay na Mapa ng klase.

Tingnan Ang mga katangian ng Map.

Map.lookup(mapa, str)
Magsagawa ng lookup sa isang mapa.

Mga argumento

· mapa (class_map) -- Ay ang class Map object.

· STR (pisi) -- Ginagamit ba ang string bilang susi.

Kita
isang string na naglalaman ng resulta o wala kung walang tugma.

Map.slookup(mapa, str)
Magsagawa ng lookup sa isang mapa.

Mga argumento

· mapa (class_map) -- Ay ang class Map object.

· STR (pisi) -- Ginagamit ba ang string bilang susi.

Kita
isang string na naglalaman ng resulta o walang laman na string kung walang tugma.

klase AppletHTTP()
Ang klase na ito ay ginagamit sa mga applet na nangangailangan ng 'http' mode. Ang http applet ay maaari
magparehistro sa core.register_service() function. Ginagamit ang mga ito para sa
pagpoproseso ng kahilingan sa http tulad ng isang server sa likod ng HAProxy.

Ito ay isang hello world sample code:

core.register_service("hello-world", "http", function(applet)
lokal na tugon = "Hello World !"
applet:set_status(200)
applet:add_header("haba ng nilalaman", string.len(tugon))
applet:add_header("content-type", "text/plain")
applet:start_response()
applet:send(tugon)
wakas)

AppletHTTP.c

Kita
A Mga Converter klase

Naglalaman ang attribute na ito ng object ng klase ng Converters.

AppletHTTP.sc

Kita
A Mga Converter klase

Naglalaman ang attribute na ito ng object ng klase ng Converters. Ang mga pag-andar ng bagay na ito
palaging nagbabalik ng isang string.

AppletHTTP.f

Kita
A Kinukuha klase

Naglalaman ang attribute na ito ng Fetches class object. Tandaan na ang applet execution
hindi ma-access ng lugar ang isang wastong transaksyon ng HAProxy core HTTP, kaya ilang sample
ang mga epektong nauugnay sa mga halagang umaasa sa HTTP (hdr, path, ...) ay hindi magagamit.

AppletHTTP.sf

Kita
A Kinukuha klase

Naglalaman ang attribute na ito ng Fetches class object. Ang mga pag-andar ng bagay na ito
palaging nagbabalik ng isang string. Tandaan na hindi ma-access ng applet execution place ang a
wastong HAProxy core HTTP na transaksyon, kaya ang ilang sample ay nagkakaugnay sa HTTP
dependent values ​​(hdr, path, ...) ay hindi available.

AppletHTTP.method

Kita
pisi

Ang attribute method ay nagbabalik ng string na naglalaman ng HTTP method.

AppletHTTP.version

Kita
pisi

Ang bersyon ng katangian, ay nagbabalik ng isang string na naglalaman ng bersyon ng kahilingan sa HTTP.

AppletHTTP.path

Kita
pisi

Nagbabalik ang attribute path ng string na naglalaman ng HTTP request path.

AppletHTTP.qs

Kita
pisi

Ang attribute na qs ay nagbabalik ng string na naglalaman ng HTTP request query string.

AppletHTTP.length

Kita
kabuuan

Ang haba ng katangian ay nagbabalik ng isang integer na naglalaman ng haba ng katawan ng HTTP.

AppletHTTP.headers

Kita
ayos

Ang mga header ng katangian ay nagbabalik ng array na naglalaman ng mga header ng HTTP. Ang header
ang mga pangalan ay palaging nasa maliit na titik. Bilang ang pangalan ng header ay maaaring makatagpo ng higit sa
isang beses sa bawat kahilingan, ang halaga ay ini-index na may 0 bilang unang halaga ng index. Ang array
magkaroon ng ganitong form:

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

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

AppletHTTP.headers
Naglalaman ng array na naglalaman ng lahat ng mga header ng kahilingan.

AppletHTTP.set_status(applet, code)
Itinatakda ng function na ito ang HTTP status code para sa tugon. Ang pinapayagang code ay mula sa
100 sa 599.

Mga argumento

· applet (class_AppletHTTP) -- Isang AppletHTTP klase

· code (kabuuan) -- ang status code ay ibinalik sa kliyente.

AppletHTTP.add_header(applet, pangalan, halaga)
Ang function na ito ay nagdaragdag ng isang header sa tugon. Hindi na-collapse ang mga duplicate na header.
Ang espesyal na header haba ng nilalaman ay ginagamit upang matukoy ang haba ng tugon. Kung ito
hindi umiiral, a paglilipat-encoding: tipak ay nakatakda, at ang lahat ng isulat mula sa function
AppletHTTP:send() maging isang tipak.

Mga argumento

· applet (class_AppletHTTP) -- Isang AppletHTTP klase

· pangalan (pisi) -- ang pangalan ng header

· halaga (pisi) -- ang halaga ng header

AppletHTTP.start_response(applet)
Isinasaad ng function na ito sa HTTP engine na maaari nitong iproseso at ipadala ang
mga header ng tugon. Matapos itong tawagan hindi na kami makakapagdagdag ng mga header sa tugon; Kami
hindi magamit ang AppletHTTP:send() function kung ang AppletHTTP:start_response() Hindi
tinawag.

Mga argumento

· applet (class_AppletHTTP) -- Isang AppletHTTP klase

AppletHTTP.getline(applet)
Ang function na ito ay nagbabalik ng isang string na naglalaman ng isang linya mula sa http body. Kung ang datos
ang ibinalik ay hindi naglalaman ng panghuling '\n' na ipinapalagay nito kaysa sa huling available na data nito
bago matapos ang stream.

Mga argumento

· applet (class_AppletHTTP) -- Isang AppletHTTP klase

Kita
isang string. Maaaring walang laman ang string kung maabot natin ang dulo ng batis.

AppletHTTP.receive(applet[, laki])
Nagbabasa ng data mula sa katawan ng HTTP, ayon sa tinukoy na nabasa laki. Kung ang laki is
nawawala, sinusubukan ng function na basahin ang lahat ng nilalaman ng stream hanggang sa katapusan. Kung
ang laki ay mas malaki kaysa sa http body, ibinabalik nito ang dami ng data na magagamit.

Mga argumento

· applet (class_AppletHTTP) -- Isang AppletHTTP klase

· laki (kabuuan) -- ang kinakailangang laki ng nabasa.

Kita
palaging ibalik ang isang string, ang string ay maaaring walang laman kapag ang koneksyon ay sarado.

AppletHTTP.send(applet, mensahe)
Ipadala ang Mensahe msg sa http request body.

Mga argumento

· applet (class_AppletHTTP) -- Isang AppletHTTP klase

· msg (pisi) -- ang mensaheng ipapadala.

klase AppletTCP()
Ang klase na ito ay ginagamit sa mga applet na nangangailangan ng 'tcp' mode. Ang tcp applet ay maaaring
nakarehistro sa core.register_service() function. Ginagamit ang mga ito para sa pagproseso
isang tcp stream na parang server sa likod ng HAProxy.

AppletTCP.c

Kita
A Mga Converter klase

Naglalaman ang attribute na ito ng object ng klase ng Converters.

AppletTCP.sc

Kita
A Mga Converter klase

Naglalaman ang attribute na ito ng object ng klase ng Converters. Ang mga pag-andar ng bagay na ito
palaging nagbabalik ng isang string.

AppletTCP.f

Kita
A Kinukuha klase

Naglalaman ang attribute na ito ng Fetches class object.

AppletTCP.sf

Kita
A Kinukuha klase

Naglalaman ang attribute na ito ng Fetches class object.

AppletTCP.getline(applet)
Ang function na ito ay nagbabalik ng isang string na naglalaman ng isang linya mula sa stream. Kung ang datos
ang ibinalik ay hindi naglalaman ng panghuling '\n' na ipinapalagay nito kaysa sa huling available na data nito
bago matapos ang stream.

Mga argumento

· applet (class_AppletTCP) -- Isang AppletTCP klase

Kita
isang string. Maaaring walang laman ang string kung maabot natin ang dulo ng batis.

AppletTCP.receive(applet[, laki])
Nagbabasa ng data mula sa stream ng TCP, ayon sa tinukoy na nabasa laki. Kung ang laki
ay nawawala, sinusubukan ng function na basahin ang lahat ng nilalaman ng stream hanggang sa katapusan.

Mga argumento

· applet (class_AppletTCP) -- Isang AppletTCP klase

· laki (kabuuan) -- ang kinakailangang laki ng nabasa.

Kita
palaging ibalik ang isang string, ang string ay maaaring walang laman kapag ang koneksyon ay sarado.

AppletTCP.send(appletmsg)
Ipadala ang mensahe sa stream.

Mga argumento

· applet (class_AppletTCP) -- Isang AppletTCP klase

· msg (pisi) -- ang mensaheng ipapadala.

Maraming kapaki-pakinabang na mga library ng lua ang makikita dito:

· https://lua-toolbox.com/

Redis access:

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

Ito ay isang halimbawa tungkol sa paggamit ng Redis library na may HAProxy. Tandaan na ang bawat tawag
ng anumang function ng library na ito ay maaaring magtapon ng error kung nabigo ang koneksyon sa socket.

-- i-load ang redis library
lokal na redis = nangangailangan("redis");

function do_something(txn)

-- lumikha at magkonekta ng bagong tcp socket
lokal na tcp = core.tcp();
tcp:settimeout(1);
tcp:connect("127.0.0.1", 6379);

-- gamitin ang redis library gamit ang bagong socket na ito
lokal na kliyente = redis.connect({socket=tcp});
kliyente:ping();

dulo

OpenSSL:

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

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

Gumamit ng haproxy-lua online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

  • 1
    Zabbix
    Zabbix
    Ang Zabbix ay isang enterprise-class na bukas
    pinagmumulan na ibinahagi ng solusyon sa pagsubaybay
    dinisenyo upang subaybayan at subaybayan
    pagganap at pagkakaroon ng network
    mga server, device...
    I-download ang Zabbix
  • 2
    KDiff3
    KDiff3
    Hindi na pinapanatili ang repositoryong ito
    at iniingatan para sa mga layunin ng archival. Tingnan mo
    https://invent.kde.org/sdk/kdiff3 for
    ang pinakabagong code at
    https://download.kde.o...
    I-download ang KDiff3
  • 3
    USBLoaderGX
    USBLoaderGX
    Ang USBLoaderGX ay isang GUI para sa
    Ang USB Loader ni Waninkoko, batay sa
    libwiigui. Pinapayagan nito ang paglilista at
    paglulunsad ng mga Wii games, Gamecube games at
    homebrew sa Wii at WiiU...
    I-download ang USBLoaderGX
  • 4
    Firebird
    Firebird
    Nag-aalok ang Firebird RDBMS ng mga tampok ng ANSI SQL
    & tumatakbo sa Linux, Windows at
    ilang mga platform ng Unix. Mga tampok
    mahusay na pagkakatugma at pagganap
    at kapangyarihan...
    I-download ang Firebird
  • 5
    KompoZer
    KompoZer
    Ang KompoZer ay isang wysiwyg HTML editor gamit ang
    ang Mozilla Composer codebase. Bilang
    Nahinto ang pag-unlad ni Nvu
    noong 2005, inaayos ng KompoZer ang maraming mga bug at
    nagdadagdag ng f...
    I-download ang KompoZer
  • 6
    Libreng Manga Downloader
    Libreng Manga Downloader
    Ang Libreng Manga Downloader (FMD) ay isang
    open source application na nakasulat sa
    Object-Pascal para sa pamamahala at
    pag-download ng manga mula sa iba't ibang mga website.
    Isa itong salamin...
    I-download ang Libreng Manga Downloader
  • Marami pa »

Linux command

Ad