ืืืื ืืคืงืืื haproxy-lua ืฉื ืืชื ืืืจืืฅ ืืกืคืง ืืืืจืื ืืืื ืื ืฉื OnWorks ืืืืฆืขืืช ืืืช ืืชืื ืืช ืืขืืืื ืืืงืืื ืืช ืืืจืืืืช ืฉืื ื, ืืืื Ubuntu Online, Fedora Online, ืืืืืืืจ ืืงืืื ืฉื Windows ืื ืืืืืืืจ ืืงืืื ืฉื MAC OS
ืชึธืึฐื ึดืืช:
ืฉืึตื
haproxy-lua - haproxy-lua ืชืืขืื
HAPROXY LUA ืจืฅ ืืงืฉืจืื
ื ืืชื ืืขืื ืืช ืงืื Lua ืืืืืฆืข ื-HAProxy ืืฉื ื ืืฆืืื ืขืืงืจืืื. ืืจืืฉืื ืืื ื
ืืชืืื ืืฆื, ืืืฉื ื ืืื ื ืืื ืจืืฆื ืืฆื.
ยท ืืชืื ื ืืชืืื ืืฆื, ืื ืื ื ืืืืืื ืืืฆืข ืคืชืจืื ืืช DNS, ืืื ืื ืื ื ืื ืืืืืื ืืืฆืข ืฉืงืข I/O.
ืืืฆื ืืชืืื ืื, HAProxy ืขืืืื ื ืืกืื ืืืืื ืืืฆืืข ื-Lua
ืชืื ืืช.
ยท ืืชืื ื ืืื ืจืืฆื ืืฆื, ืื ืื ื ืื ืืืืืื ืืืฆืข ืคืชืจืื ืืช DNS, ืืื ืื ืื ื ืืืืืื ืืืฉืชืืฉ ืืฉืงืขืื. ื
ืืืฆืืข ืงืื Lua ืืฉืืื ืขื ืขืืืื ืืืงืฉืืช, ืื ืฉืงืื Lua
ื ืจืื ืฉืืื ืืืคืขื ืืืกืืื, ืืื ืื ืื ืืืงืจื.
ืงืื Lua ื ืืขื ืืงืืืฅ ืืื ืื ืืืชืจ. ืงืืฆืื ืืื ืืืืืื ืงืื ืืคืื ืงืฆืืืช ืจืืฉืืืช.
ื-Lua ืืฉ 6 ืืงืฉืจื ืืืฆืืข.
1. ืงืืืฅ Lua ืืึผืฃ ืืงืฉืจ. ืื ืืืืฆืข ืืืืื ืืืขืื ื ืฉื ืงืืืฅ Lua ื-
HAProxy [ืืขืืืื] ืกืขืืฃ ืขื ืืื ืืื lua-load. ืื ืืืืฆืข ืืืชืืื
ืืฆื. ืกืขืืฃ ืื ืืฉืืฉ ืืืืืจืช ืืจืืืืช Lua ื-HAProxy.
2. ืืืืื init ืืงืฉืจ. ืืืื ืคืื ืงืฆืืืช Lua ืืืืืฆืขืช ืืื ืืืืจ ื-HAProxy
ื ืืชืื ืชืฆืืจื. ืืืืฆืืข ื ืืฆื ืืืฆื ืืชืืื. ืืืงืฉืจ ืื ื
ืกืืืืช HAProxy ืืืจ ืืชืืืื. ืื ืฉืืืืฉื ืืื ืืืืืง ืชืฆืืจื, ืื
ืืชืืื ืืืืืจื ืฉืงืขืื ืื ืืฉืืืืช. ืคืื ืงืฆืืืช ืืื ืืืฆืืจืืช ืืืืฃ
ืืงืฉืจ ืขื ืืคืื ืงืฆืื Lua core.register_init(). ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื ืืื ื
ืคืื ืงืฆืื ืคืฉืืื ืืื ืขืจื ืืืืจื ืืืื ืคืจืืืจืื, ืื: ืคืื ืงืฆืื fcn().
3. ืืืืื ืืฉืืื ืืงืฉืจ. ืืืื ืคืื ืงืฆืืืช Lua ืืืืืฆืขืช ืืืืจ ืชืืืืช ื- HAProxy
ืืชืืื, ืืืื ืืืืจ ืืืืจืื ืขื ืืืฉืืื ืขื ืืคืื ืงืฆืื Lua
core.register_task(). ืืงืฉืจ ืื ืืืื ืืืืืช ืืืงืืื ืืขืืืื ืืชืขืืืจื. ืื
ืืืืฆืข ืืืฆื ืืื ืจืืฆื. ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื ืืื ืคืื ืงืฆืื ืคืฉืืื ืืื
ืขืจื ืืืืจ ืืืื ืคืจืืืจืื, ืื: ืคืื ืงืฆืื fcn().
4. ืคืขืืื ืืงืฉืจ. ืืืื ืคืื ืงืฆืืืช Lua ืืืืืฆืขืช ืืืืคื ืืืชื ื. ืคืขืืืืช ืืื ืื
ืจืฉืื ืืคื ืื ืืืืช Lua "core.register_action()". ืื ืืืืคืืก ืฉื ืืืืื
ืฉื ืงืจื ืคืื ืงืฆืื ืืื ืคืื ืงืฆืื ืขื ืื ืืืืืจื ืืืื ืืืฉืจ ืืืงืืช ืืืืืืงื ืฉื
ืืืืงื TXN ืืขืจื. ืคืื ืงืฆืื fcn(txn).
5. ืืืืช ืืืืื ืืงืฉืจ. ืคืื ืงืฆืื ืื ืืืงืืช ืืืืืืงื TXN ืืืจืืืื ื ืื ืืกื ื
ืืืืืจ ืืืจืืืช. ืกืืืื ืืื ืฉื ืคืื ืงืฆืืืช ืืื ื ืืืืืื ืืืฆืข ืคืื ืงืฆืืืช ืืกืืื ืืืฉืื. ืึตื
ืฉืืืืฉืืื ืืืืกืืฃ ืืืง ืืืืืืืืช ืืืงืืจืืืช ืฉื HAProxy ืืืืืืืจ ืืช ืืชืืฆืื.
ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื ืืื ืคืื ืงืฆืื ืืืจืืืช fcn(txn). ืคืื ืงืฆืืืช ืืื ืืืืืืช ืืืืืช
ืจืฉืื ืขื ืืคืื ืงืฆืื Lua core.register_fetches(). ืื ืืืืื-ืฉืืืคืช ืืืฆืืจืช ืืื
ืงืืืืืช ืืืืจืืืช "lua.".
ืืขืจื: ืืืชืื ืฉืคืื ืงืฆืื ืื ืื ืืืืื ืืืฆืื ืืช ืื ืชืื ืื ืื ืืจืฉืื ืืืงืืจ
ืืืืืช HAProxy ืืืืื, ืืืงืจื ืื, ืืื ืื ืืืืื ืืืืืืจ ืืช ืืชืืฆืื. ืืืงืจื ืืื ืขืืืื ืื
ื ืชืื
6. ืึตืึดืืจ ืืงืฉืจ. ืืืื ืคืื ืงืฆืืืช Lua ืฉืืืงืืช ืืืจืืืช ืืงืื ืืืืืืจื
ืืืจืืืช ื ืืกืคืช ืืคืื. ืคืื ืงืฆืืืช ืืกืื ืื ืื ืืกืจืืช ืืืื ื, ืืืื ืืื ืืืฉื ืืืืื
ืื ืืงืฉืจ. ืื ืื ืืืฆืขืื ืฉืื ืคืื ืงืฆืืืช ืืกืืื. ืื ืืืืคืืก ืฉื ืืฉืืื ืืื ืคืื ืงืฆืื
ืืืจืืืช fcn(string). ื ืืชื ืืจืฉืื ืคืื ืงืฆืื ืื ืขื ืืคืื ืงืฆืื Lua
core.register_converters(). ืื ืืืืจ ืืืืจื ืืงืื ืืช ืืงืืืืืช ืฉื ืืืืจืืืช "lua.".
HAPROXY LUA ืฉืืื ืืขืืื
ืงืืืฅ ืืชืฆืืจื ืฉื HAProxy (hello_world.conf):
ืืืึนืึผึธืึดื
lua-load hello_world.lua
ืืืื ื ืคืจืืงืกื
ืืืื 127.0.0.1:10001
tcp-request inspect-delay 1s
tcp-request content use-service lua.hello_world
ืงืืืฅ HAProxy Lua (hello_world.lua):
core.register_service("hello_world", "tcp", function(ืืืฉืืืื)
applet:send("ืฉืืื ืขืืื\n")
ืกืืฃ)
ืืืฆื ืืืคืขืื ืืช HAProxy ืืืืืงืช ืชืฆืืจื ืื:
./haproxy -f hello_world.conf
ืืืกืืฃ ืืืจ, ืืชื ืืืื ืืืืืง ืขื telnet:
#:~ telnet 127.0.0.1 10001
ืฉืืื ืขืืื
ืืืืชื ืืืืื()
ืืืืงืช "ืืืืื" ืืืืื ืืช ืื ืคืื ืงืฆืืืช ืืืืื ืฉื HAProxy. ืคืื ืงืฆืืืช ืืื ืฉืืืืฉืืืช
ืืฉืืืื ืืืจืืืช ืืืืฆืืข, ืจืืฉืื ืืืื, ืื ืืคืืืฆืื ืฉื ืืคืืช ืืืืืืืืช
ืื ACL,...
ืืืืงื "ืืืืื" ืืกืืคืงืช ืืขืฆื ืขื HAProxy. ืื ืืืจืืฉ ืงื ื ืืจืฉ ื
ืืฉืชืืฉ ืืคืื ืงืฆืืืช ืืืื.
ืืืืืงื "ืืืืื" ืืื ืกืืืืช, ืื ื ืืชื ืืืฆืืจ ืืืืืืงื ืืืฉ ืืกืื ืื.
core.emerg
ืืืืจืื
ืืกืคืจ ืฉืื
ืชืืื ื ืื ืืื ืืกืคืจ ืฉืื, ืืื ืืืืื ืืช ืืขืจื ืฉื ืจืืช ืืืืื "ืืืจืื"
(0).
core.alert
ืืืืจืื
ืืกืคืจ ืฉืื
ืชืืื ื ืื ืืื ืืกืคืจ ืฉืื, ืืื ืืืืื ืืช ืืขืจื ืฉื "ืืชืจืื" ืืจืืช ืืืืื (1).
core.crit
ืืืืจืื
ืืกืคืจ ืฉืื
ืชืืื ื ืื ืืื ืืกืคืจ ืฉืื, ืืื ืืืืื ืืช ืืขืจื ืฉื ืจืืช ืืืื "ืงืจืืืืช" (2).
core.err
ืืืืจืื
ืืกืคืจ ืฉืื
ืชืืื ื ืื ืืื ืืกืคืจ ืฉืื, ืืื ืืืืื ืืช ืืขืจื ืฉื "ืฉืืืื" ืืจืืช ืืืื (3).
ืืืืจื
ืืืืจืื
ืืกืคืจ ืฉืื
ืชืืื ื ืื ืืื ืืกืคืจ ืฉืื, ืืื ืืืืื ืืช ืืขืจื ืฉื ืจืืช ืืืืื "ืืืืจื" (4).
core.notice
ืืืืจืื
ืืกืคืจ ืฉืื
ืชืืื ื ืื ืืื ืืกืคืจ ืฉืื, ืืื ืืืืื ืืช ืืขืจื ืฉื ืจืืช ื-loglevel "ืืืืขื" (5).
core.info
ืืืืจืื
ืืกืคืจ ืฉืื
ืชืืื ื ืื ืืื ืืกืคืจ ืฉืื, ืืื ืืืืื ืืช ืืขืจื ืฉื ืจืืช ื-loglevel "info" (6).
core.debug
ืืืืจืื
ืืกืคืจ ืฉืื
ืชืืื ื ืื ืืื ืืกืคืจ ืฉืื, ืืื ืืืืื ืืช ืืขืจื ืฉื ืจืืช ื-loglevel "debug" (7).
core.log(loglevel, msg)
ืืงืฉืจ: body, init, task, action, sample-rech, ืืืืจ
ืคืื ืงืฆืื ืื ืฉืืืืช ืืืื. ืืืืื ื ืฉืื, ืืืชืื ื-HAProxy
ืงืืืฅ ืชืฆืืจื, ืืฉืจืช ืืจืืจืช ืืืืื ืฉื syslog ืื ืืื ืืืืืจ ืื-
stderr ืื ืื ืืืชืจ.
ืืืขืื ืื
ยท ืจืืช ืืืื (ืืกืคืจ ืฉืื) -- ืืื ืจืืช ืืืืื ืืฉืืืืช ืืืืืขื. ืื
ืืกืคืจ ืืื 0 ื-7.
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (ืืืืจืืช ืืจืืช ืืืื)
ืึดืจึฐืืึนืช code.Debug
ืึดืจึฐืืึนืช core.Info
ืึดืจึฐืืึนืช core.ืืืืจื
ืึดืจึฐืืึนืช core.Alert
core.Debug(ืืกื)
ืืงืฉืจ: body, init, task, action, sample-rech, ืืืืจ
ืืืขืื ืื
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช ืืืื ืก
ืขืืฉื ืืช ืืืชื ืขืืืื ืืืฉืจ:
ืคืื ืงืฆืื ืื ืคืืช(ืืกื)
core.log(core.debug, msg)
ืกืืฃ
core.Info(ืืกื)
ืืงืฉืจ: body, init, task, action, sample-rech, ืืืืจ
ืืืขืื ืื
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช ืืืื ืก
ืคืื ืงืฆืื ืืืืข(ืืกื)
core.log(core.info, msg)
ืกืืฃ
core.ืืืืจื(ืืกื)
ืืงืฉืจ: body, init, task, action, sample-rech, ืืืืจ
ืืืขืื ืื
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช ืืืื ืก
ืคืื ืงืฆืื ืืืืจื(ืืกื)
core.log(core.warning, msg)
ืกืืฃ
core.Alert(ืืกื)
ืืงืฉืจ: body, init, task, action, sample-rech, ืืืืจ
ืืืขืื ืื
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช ืืืื ืก
ืคืื ืงืฆืื ืขืจื ื(ืืกื)
core.log(core.alert, msg)
ืกืืฃ
core.add_acl(ืฉื ืงืืืฅ, ืึทืคึฐืชึตืึท)
ืืงืฉืจ: init, task, action, sample-fetch, converter
ืืืกืฃ ืืช ื-ACL ืืคืชื ืืจืฉืืืช ACLs ืฉืืืื ืืงืืืฅ ืืคื ื ืฉื ืืงืืืฅ.
ืืืขืื ืื
ยท ืฉื ืืงืืืฅ (ืืืจืืืช) -- ืฉื ืืงืืืฅ ืฉืืชืืืืก ืืขืจืื ื-ACL.
ยท ืืคืชื (ืืืจืืืช) -- ืืืคืชื ืฉืืชืืืกืฃ.
core.del_acl(ืฉื ืงืืืฅ, ืึทืคึฐืชึตืึท)
ืืงืฉืจ: init, task, action, sample-fetch, converter
ืืืง ืืช ืขืจื ื-ACL ืืืื ืืชืืืืก ืืืคืชื ืืคืชื ืืจืฉืืืช ื-ACLs ืฉืืืืื ืืชืืืืกืื
ืฉื ืืงืืืฅ.
ืืืขืื ืื
ยท ืฉื ืืงืืืฅ (ืืืจืืืช) -- ืฉื ืืงืืืฅ ืฉืืชืืืืก ืืขืจืื ื-ACL.
ยท ืืคืชื (ืืืจืืืช) -- ืืืคืชื ืฉืืืืืง.
core.del_map(ืฉื ืงืืืฅ, ืึทืคึฐืชึตืึท)
ืืงืฉืจ: init, task, action, sample-fetch, converter
ืืืง ืืช ืขืจื ืืืคื ืืืื ืืงืก ืขื ืืืคืชื ืฉืฆืืื ืืจืฉืืืช ืืืคืืช ืฉืืืืื ืืชืืืืกืื
ืืคื ืฉื ืืงืืืฅ ืฉืื.
ืืืขืื ืื
ยท ืฉื ืืงืืืฅ (ืืืจืืืช) -- ืฉื ืืงืืืฅ ืฉืืชืืืืก ืืขืจืื ืืืคื.
ยท ืืคืชื (ืืืจืืืช) -- ืืืคืชื ืฉืืืืืง.
core.msleep(ืืืืืฉื ืืืช)
ืืงืฉืจ: ืืืฃ, ืืชืืื, ืืฉืืื, ืคืขืืื
ืื ืืื ื core.msleep() ืืคืกืืง ืืช ืืืฆืืข Lua ืืื ืืืคืืืช ืฉื ืืืช ืฉืฆืืื ื.
ืืืขืื ืื
ยท ืืืื ืฉื ืืืช (ืืกืคืจ ืฉืื) -- ืืืคืืืช ืืฉื ืืื ืื ืืจืฉืืช.
core.register_action(ืฉื, ืคืขืืืืช, func)
ืืงืฉืจ: ืืืฃ
ืจืฉืื ืคืื ืงืฆืืืช Lua ืฉืืืฆืขื ืืคืขืืื. ื ืืชื ืืืฉืชืืฉ ืืื ืืคืขืืื ืืจืฉืืื
ื-HAProxy ืขื ืืงืืืืืช "lua.". ืคืขืืื ืืงืืืช ืืืืงืช ืืืืืืงื TXN ืืงืื.
ืืืขืื ืื
ยท ืฉื (ืืืจืืืช) -- ืืื ืืฉื ืฉื ืืืืืจ.
ยท ืคืขืืืืช (ืฉืืืื) -- ืืื ืืืืช ืืืจืืืช ืืืชืืจืช โโืืช ืคืขืืืืช HAProxy ืื
ืจืืฆื ืืืืจืฉื ื. ืืคืขืืืืช ืืฆืคืืืืช ืื 'tcp-req', 'tcp-res',
'http-req' ืื 'http-res'.
ยท func (ืคืื ืงืฆืื) -- ืืื ืืคืื ืงืฆืื Lua ืฉื ืงืจืืช ืืขืืื ืืืืืจ.
ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื Lua ืืืฉืืฉืช ืืืจืืืื ื ืืื:
function(txn)
ยท
txn (TXN ืืืืชื): ืึถื is a TXN ืืืืืืงื ืึฐืฉืืึผืึธืฉื ื ืื ืืคืืืฆืื ืื ืืื
ืืงืฉื ื ืืืืืช ืื ืืจื TCP.
ืื ื, ืืืืื ืืจืืฉืื ืคืขืืื. ืืคืขืืื ืคืฉืื ืืฉืืื 'ืฉืืื ืขืืื' ื
ืืืื ืื.
core.register_action("hello-world", { "tcp-req", "http-req" }, function(txn)
txn:Info("ืฉืืื ืขืืื")
ืกืืฃ)
ืงืื ืืืืื ืื ืืฉืืฉ ืืชืฆืืจืช HAproxy ืื:
frontend tcp_frt
ืืฆื tcp
ืชืืื tcp-request lua.hello-world
ืืืืช http_frt
ืืฆื http
http-request lua.hello-world
core.register_converters(ืฉื, func)
ืืงืฉืจ: ืืืฃ
ืจืฉืื ืคืื ืงืฆืืืช Lua ืืืืืฆืขืช ืืืืืจ. ืื ืืืืืจืื ืืจืฉืืืื ืืืืืื ืืืืืช
ืืฉืืืืฉ ื-HAProxy ืขื ืืงืืืืืช "lua.". ืืืืจ ืืงืื ืืืจืืืช ืืงืื ื
ืืืืืืจ ืืืจืืืช ืืคืื. ืืคืื ืงืฆืื ืืจืฉืืื ืืืืื ืืงืืช ืขื 9 ืขืจืืื ื
ืคึผึธืจึธืึถืึถืจ. ืื ืืขืจืืื ืื ืืืจืืืืช.
ืืืขืื ืื
ยท ืฉื (ืืืจืืืช) -- ืืื ืืฉื ืฉื ืืืืืจ.
ยท func (ืคืื ืงืฆืื) -- ืืื ืืคืื ืงืฆืื Lua ืฉื ืงืจืืช ืืขืืื ืืืืืจ.
ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื Lua ืืืฉืืฉืช ืืืจืืืื ื ืืื:
function(str, [p1 [, p2 [, ... [, p5]]]])
ยท str (ืืืจืืืช): ืืื ืขืจื ืืงืื ืืืืืจ ืืืืืืืืช ืืืืจืืืช.
ยท p1 .. p5 (ืืืจืืืช): ืืืื ืจืฉืืื ืฉื ืืจืืืื ืืื ืฉื ืืืจืืืช ืืืืฆืืจืช ืืืจืืงืก
ืงืืืฅ ืชืฆืืจื. ืืกืคืจ ืืืจืืืื ืืื ืืื ื ืขืืื ืขื 5. ืืกืืจ ืื-
ืืืืคื ืฉื ืืื ื ืืืจ ืืืจื ืืื ืขื ืืื ืืืคืชื.
core.register_fetches(ืฉื, func)
ืืงืฉืจ: ืืืฃ
ืจืฉืื ืคืื ืงืฆืืืช Lua ืืืืืฆืขืช ืืืืืืจ ืืืืืื. ืื ืืืืืืช ืืืืื ืืจืฉืืืืช
ื ืืชื ืืืฉืชืืฉ ื-HAProxy ืขื ืืงืืืืืช "lua.". ืืืืืจ ืืืื Lua ืืืืืจ ืืืจืืืช
ืืชืืจ ืคืื. ืืคืื ืงืฆืื ืืจืฉืืื ืืืืื ืืงืืช ืขื 9 ืขืจืืื ืืคืจืืืจ. ืื ื
ืขืจื ืื ืืืจืืืืช.
ืืืขืื ืื
ยท ืฉื (ืืืจืืืช) -- ืืื ืืฉื ืฉื ืืืืืจ.
ยท func (ืคืื ืงืฆืื) -- ืืื ืืคืื ืงืฆืื Lua ืฉื ืงืจืืช ืืขืืื ืืชืืจ ืืืืืจ ืืืืืื.
ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื Lua ืืืฉืืฉืช ืืืจืืืื ื ืืื:
ืคืื ืงืฆืืืช ืืืจืืืช (txn, [p1 [, p2 [, ... [, p5]]]])
ยท txn (TXN ืืืืชื): ืืื ืืืืืืืงื txn ืืืฉืืื ืืืงืฉื ืื ืืืืืช.
ยท p1 .. p5 (ืืืจืืืช): ืืืื ืจืฉืืื ืฉื ืืจืืืื ืืื ืฉื ืืืจืืืช ืืืืฆืืจืช ืืืจืืงืก
ืงืืืฅ ืชืฆืืจื. ืืกืคืจ ืืืจืืืื ืืื ืืื ื ืขืืื ืขื 5. ืืกืืจ ืื-
ืืืืคื ืฉื ืืื ื ืืืจ ืืืจื ืืื ืขื ืืื ืืืคืชื.
ยท ืืืืจืื: ืืืจืืืช ืืืืืื ื ืชืื ืื ืืกืืืืื, ot nil ืื ืื ื ืืชื ืืืืืืจ ืืช ืืขืจื ืืขืช.
ืงืื ืืืืืื:
core.register_fetches("ืฉืืื", function(txn)
ืืืืจ "ืฉืืื"
ืกืืฃ)
ืชืฆืืจื ืืืืืื ืฉื HAProxy:
ืืืืื ืืืืชืืช
http-request location /%[lua.hello]
core.register_service(ืฉื, ืืฆื, func)
ืืงืฉืจ: ืืืฃ
ืจืฉืื ืคืื ืงืฆืืืช Lua ืืืืืฆืขืช ืืฉืืจืืช. ืื ืืฉืืจืืช ืืจืฉืื ืืืื ืืืืืช
ืืฉืืืืฉ ื-HAProxy ืขื ืืงืืืืืช "lua.". ืฉืืจืืช ืืงืื ืืืืงืช ืืืืืืงื ืืงืื
ืืืชืื ืืืฆื ืื ืืจืฉ.
ืืืขืื ืื
ยท ืฉื (ืืืจืืืช) -- ืืื ืืฉื ืฉื ืืืืืจ.
ยท ืืฆื (ืืืจืืืช) -- ืืื ืืืจืืืช ืืืชืืจืช โโืืช ืืืฆื ืื ืืจืฉ. ืจืง 'tcp' ืื
'http' ืืืชืจืื.
ยท func (ืคืื ืงืฆืื) -- ืืื ืืคืื ืงืฆืื Lua ืฉื ืงืจืืช ืืขืืื ืืืืืจ.
ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื Lua ืืืฉืืฉืช ืืืจืืืื ื ืืื:
ืคืื ืงืฆืื (ืืืฉืืืื)
ยท ืืืืฉืืืื ืืืืฉืืืื ืืืื AppletTCP ืืืืชื ืื AppletHTTP ืืืืชื. ืื ืชืืื ืืกืื
ืฉื ืืืฉืืืื ืจืฉืื. ืืืฉืืืื ืจืฉืื ืขื ืืขืจื 'http' ืขืืืจ ื ืืฆื
ืคืจืืืจ ืืงืื ื AppletHTTP ืืืืชื. ืื ืืฆื ืืขืจื ืืื 'tcp', ืืืืฉืืืื ืืืื
ืืงืื AppletTCP ืืืืชื.
ืืืืจื: ืื ื ืืชื ืืงืจืื ืืืืฉืืืื ืื ืืกืื 'http' ืืชืื 'tcp-' ืขืจืื ืืืืื. ืจืง ืื ืืื 'http-'
ืขืจืื ืืืืื ืืืจืฉืื, ืื ืืืืจ ืฉืื ื ืืชื ืืงืจืื ืืืืฉืืืื HTTP ื-a
ืคืจืืงืกื ืืืฆื tcp. ื ืืชื ืืงืจืื ืืืืฉืืืื ืื ืืกืื 'tcp' ืืื ืืงืื.
ืื ื, ืืืืื ืืจืืฉืื ืฉืืจืืช. ืืฉืืจืืช ืคืฉืื ืฉืื 'ืฉืืื ืขืืื' ืืชืืจ
ืชืืืืช http.
core.register_service("hello-world", "http", function(applet)
ืชืืืื ืืงืืืืช = "ืฉืืื ืขืืื!"
ืืืฉืืืื:set_status(200)
applet:add_header("content-length", string.len(response))
applet:add_header("content-type", "text/plain")
applet:start_response()
ืืืฉืืืื:ืฉืื (ืชืืืื)
ืกืืฃ)
ืงืื ืืืืื ืื ืืฉืืฉ ืืชืฆืืจืช HAproxy ืื:
ืืืืื ืืืืชืืช
http-request use-service lua.hello-world
core.register_init(func)
ืืงืฉืจ: ืืืฃ
ืจืฉืื ืคืื ืงืฆืื ืฉืืืฆืขื ืืืืจ ื ืืชืื ืืชืฆืืจื. ืื ืฉืืืืฉื ื
ืืืืืง ืคืจืืืจืื ืืืฉืื.
ืืืขืื ืื
ยท func (ืคืื ืงืฆืื) -- ืืื ืคืื ืงืฆืืืช Lua ืฉื ืงืจืืช ืืขืืื ืืืืชืื.
ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื Lua ืืืฉืืฉืช ืืืจืืืื ื ืืื:
ืคืึผื ืงืฆึดืึธื()
ืื ืื ืืืงื ืงืื, ืืื ืฆืคืื ืคืื.
core.register_task(func)
ืืงืฉืจ: body, init, task, action, sample-rech, ืืืืจ
ืืืจืฉื ืืืชืื ืืืฉืืื ืขืฆืืืืช. ืืืฉืืื ืืชืืืื ืืืฉืจ ื-HAProxy ืืจืืฉื
ืืชืืื ืืชืืื. ืืืืืื, ื ืืชื ืืืฆืข ืืฉืืืืช ืืกืื ืื ืืื ืืืฆืข ืืืจืืืืช
ืืืืงืืช ืืจืืืืช.
ืืืขืื ืื
ยท func (ืคืื ืงืฆืื) -- ืืื ืคืื ืงืฆืืืช Lua ืฉื ืงืจืืช ืืขืืื ืืืืชืื.
ืื ืืืืคืืก ืฉื ืืคืื ืงืฆืื Lua ืืืฉืืฉืช ืืืจืืืื ื ืืื:
ืคืึผื ืงืฆึดืึธื()
ืื ืื ืืืงื ืงืื, ืืื ืฆืคืื ืคืื.
core.set_nice(ื ืืื)
ืืงืฉืจ: ืืฉืืื, ืคืขืืื, ืืืืื-ืฉืืืคื, ืืืืจ
ืฉื ื ืืช ืืืืคื ืฉื ืืืฉืืื ืื ืืืืืช ืื ืืคืืืฉื ืื ืืืืืช.
ืืืขืื ืื
ยท ื ืืื (ืืกืคืจ ืฉืื) -- ืืขืจื ืื ืืื, ืขืืื ืืืืืช ืืื -1024 ื-1024.
core.set_map(ืฉื ืงืืืฅ, ืึทืคึฐืชึตืึท, ืขืจื)
ืืงืฉืจ: init, task, action, sample-fetch, converter
ืืืืจ ืืช ืืขืจื ืขืจื ืืงืฉืืจืื ืืืคืชื ืืคืชื ืืืคื ืฉืืืื ืืชืืืืกืื ืฉื ืืงืืืฅ.
ืืืขืื ืื
ยท ืฉื ืืงืืืฅ (ืืืจืืืช) -- ืืคื ืื ืืืคื
ยท ืืคืชื (ืืืจืืืช) -- ืืืคืชื ืืืืืจื ืื ืืืืคื
ยท ืขืจื (ืืืจืืืช) -- ืืขืจื ืืืฉืืื
core.sleep(int ืฉื ืืืช)
ืืงืฉืจ: ืืืฃ, ืืชืืื, ืืฉืืื, ืคืขืืื
ืื ืืื ื core.sleep() ืคืื ืงืฆืืืช ืขืืฆืจืืช ืืช ืืืฆืืข Lua ืืื ืฉื ืืืช ืฉืฆืืื ื.
ืืืขืื ืื
ยท ืฉื ืืืช (ืืกืคืจ ืฉืื) -- ืืฉื ืืืช ืืืจืืฉืืช.
core.tcp()
ืืงืฉืจ: ืืชืืื, ืืฉืืื, ืคืขืืื
ืคืื ืงืฆืื ืื ืืืืืจื ืืืืืืงื ืืืฉ ืฉื a ืฉืงืข ืืขืื.
ืืืืจืื
A ืฉืึถืงึทืข ืืืืชื ืืืืืืงื.
core.done(data)
ืืงืฉืจ: body, init, task, action, sample-rech, ืืืืจ
ืืืขืื ืื
ยท ื ืชืื ืื (ืื) -- ืืืืจ ืืื ื ืชืื ืื ืขืืืจ ืืืชืงืฉืจ. ืื ืฉืืืืฉื ืขื
ืืืืืืืช ืืืืืจืืช ืืืืืืช.
ืืคืกืืง ืืื ืืช ืืืืฆืืข ืื ืืืื ืฉื Lua ืืืืืจ ืืืชืงืฉืจ ืฉืืืื ืื
ืืืืืจ ืืืืืื, ืืืืจ ืื ืคืขืืื ืืืืืืจ ืืช ืืขืจื ืฉืฆืืื (ืืชืขืื
ืืคืขืืืืช). ืืื ืืฉืืฉ ืืืฉืจ ืชืืืื LUA ืืกืืื ืืช ืขืืืืชื ืืจืืฆื ืืชืช
ืืืืจ ืืช ืืคืงื ื-HAProxy ืืืื ืืืคืขืื ืืช ืืงืื ืฉื ืืชืจ. ื ืืชื ืืจืืืช ืืืช ื
"ืืืืจื" ืืจืืืช ืจืืืช.
core.yield()
ืืงืฉืจ: ืืฉืืื, ืคืขืืื, ืืืืื-ืฉืืืคื, ืืืืจ
ืืืืืจื ืืช ืืื ืืืื ืืืื ืื ืฉื HAProxy. ืืื ืืฉืืฉ ืืขืช ืขืืืื LUA
ืืืื ืืื ืขืืืื ืจื.
ืืืืชื ืืืืืื()
ืืืืงื ืื ืืืืื ืืจืื ืฉืืืคืืช ืคื ืืืืืช ืฉื ืืืืืืช HAProxy. ืจืื ืืช HAProxy
ืชืืขืื "configuration.txt" ืืืืืข ื ืืกืฃ ืขื ืืฉืืืืฉ ืื. ืื
ืืคืจืงืื 7.3.2 ืขื 7.3.6.
ืืืืจื ืืืง ืืืฉืืืคืืช ืืืืืื ืืื ื ืืืื ืืช ืืืงืฉืจ ืืืฉืื. ืืืืืืช ืืื
ืืฆืืื ืื ืืชืืขืื ืื ืืืฉืจ ืื ืฉืืืืฉืืื.
ืึดืจึฐืืึนืช TXN.f
ืึดืจึฐืืึนืช TXN.sf
ืืฉืืคืืช ืฉืืืืฉืืืช ืขืืืจ:
ยท ืืงืื ืืื ืืขืจืืช,
ยท ืืงืื ืืฉืชื ื ืกืืืื,
ยท ืืงืื ืืกืคืจืื ืืงืจืืืื,
ยท ืืฆื backend ืืืืข ืืื ืืกืคืจ ืืืฉืชืืฉืื ืืชืืจ ืื ืืกืคืจื
ื ืืฆืจื ืงืฉืจืื,
ยท ืืืืข ืืงืื ืืื ืืงืืจ ip ืื ืืขื,
ยท ืืืชืืืื ืขื ืฉืืืื ืืช ืืงื,
ยท ืืืืข SSL ืืืืกืก,
ยท ืืืืข HTTP ืืื ืืืชืจืืช ืื ืฉืืื.
function action(txn)
-- ืงืื ืืงืืจ IP
ืืงืื ืืงืืื = txn.f:src()
ืกืืฃ
ืืืืชื ืืืืจืื()
ืืืืงื ืื ืืืืื ืืจืื ืืืืจื ืืืื HAProxy ืคื ืืืืื. ืจืื ืืช HAProxy
ืชืืขืื "configuration.txt" ืืืืืข ื ืืกืฃ ืขื ืืฉืืืืฉ ืื. ืื ื
ืคืจืง 7.3.1.
ืึดืจึฐืืึนืช TXN.c
ืึดืจึฐืืึนืช TXN.sc
ืืืืจืื ืืกืคืงืื ืืจื ืกืคืืจืืฆืื ืืืืืชืืช. ืื ืฉืืืืฉืืื ืขืืืจ:
ยท ืืืจืช ืงืื ื-base64,
ยท ืืืืช hash ืขื ืืืจืืืช ืงืื (djb2, crc32, sdbm, wt6),
ยท ืขืืฆืื ืชืืจืื,
ยท json escape,
ยท ืืืืืฅ ืฉืคื ืืืขืืคืช ืชืื ืืฉืืืื ืืื ืฉืชื ืจืฉืืืืช,
ยท ืคื ื ืืชืืืื ืชืืชืื ืื ืื ืขืืืื ืื,
ยท ืืืชืืืื ืขื ืฉืืืื ืืช ืืงื.
ืืืืชื ืขึธืจืึผืฅ()
HAProxy ืืฉืชืืฉืช ืืฉื ื ืืืืจืื ืืขืืืื ืืืงืฉืืช. ืืจืืฉืื ืืฉืืฉ
ืขื ื ืชืื ื ืืืงืฉื (ืืืืงืื ืืฉืจืช) ืืืฉื ื ืืฉืืฉ ืขืืืจ
ื ืชืื ื ืืชืืืื (ืืืฉืจืช ืืืงืื).
ืื ืืืืจ ืืืื ืฉื ื ืกืืื ื ืชืื ืื. ืืกืื ืืจืืฉืื ืืื ืื ืชืื ืื ืื ืื ืกืื ืืืืชืื ืื
ืืขืืืื. ืืืืง ืืฉื ื ืืื ืื ืชืื ืื ืืืืฆืืื ืฉืืืจ ืืขืืืืื. ืึผึฐืึถืจึถื ืึผึฐืึทื,
ืื ืชืื ืื ืื ืื ืกืื ืืขืืืืื, ืืืืจ ืฉืื ืืชืืืืื ืื ืชืื ืื ืืืฆืืื, ืืืืกืืฃ ืื
ื ืฉืื. ืืคืื ืงืฆืืืช ืืืืืช ืืกืคืงืืช ืืืื ืืชืคืขืื ื ืชืื ืื ืืื ื-a
ืืืืจ.
ืืชืจืฉืื ืืื ืืจืื ืืืื ืืืืฉืืืช ืคืื ืงืฆืืืช ืืืืงืช ืืขืจืืฅ.
ืืืืจื: ืื ื ืืชื ืืงืจืื ืืืชืืืื ืืคืขืืื ืืงืฉื, ืืืื
ืื ื ืืชื ืืงืจืื ืขืืืจ ืขืจืืฅ ืืืงืฉื ืืคืขืืืช ืชืืืื.
[ืชืืื ื]
Channel.dup(channel)
ืคืื ืงืฆืื ืื ืืืืืจื ืืืจืืืช ืืืืืื ืืช ืื ืืืืืจ. ืื ืชืื ืื ืื
ืืืกืืจ ืืืืืืจ ืื ืืชื ืืขืื ืืืชื ืืืืฉ ืืืืืจ ืืืชืจ.
ืื ืืืืืจ ืื ืืืื ืืงืื ื ืชืื ืื ื ืืกืคืื, ืืืืืจ ืขืจื 'ืืคืก'.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ืืืืจืื
ืืืจืืืช ืืืืืื ืืช ืื ืื ืชืื ืื ืืืืื ืื ืื ืืคืกืืช.
Channel.get(channel)
ืคืื ืงืฆืื ืื ืืืืืจื ืืืจืืืช ืืืืืื ืืช ืื ืืืืืจ. ืื ืชืื ืื ื ืฆืจืืื
ืืืืืืจ.
ืื ืืืืืจ ืื ืืืื ืืงืื ื ืชืื ืื ื ืืกืคืื, ืืืืืจ ืขืจื 'ืืคืก'.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ืืืืจืื
ืืืจืืืช ืืืืืื ืืช ืื ืื ืชืื ืื ืืืืื ืื ืื ืืคืกืืช.
Channel.getline(channel)
ืคืื ืงืฆืื ืื ืืืืืจื ืืืจืืืช ืืืืืื ืืช ืืฉืืจื ืืจืืฉืื ื ืฉื ืืืืืจ. ืื ืชืื ืื
ื ืฆืจื. ืื ืื ืชืื ืื ืืืืืืจืื ืืื ื ืืืืืื 'n' ืกืืคื, ืืื ืื ืืื ืฉืื
ืื ืชืื ืื ืืืืื ืื ืืืืจืื ืื ืืืืืจ.
ืื ืืืืืจ ืื ืืืื ืืงืื ื ืชืื ืื ื ืืกืคืื, ืืืืืจ ืขืจื 'ืืคืก'.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ืืืืจืื
ืืืจืืืช ืืืืืื ืืช ืืฉืืจื ืืืืื ื ืื ืืคืกืืช.
Channel.set(channel, ืืึผื)
ืคืื ืงืฆืื ืื ืืืืืคื ืืช ืชืืื ืืืืืจ ืืืืจืืืช. ืืคืื ืงืฆืื ืืืืจืช
ืืืืจื ืืืืขืชืง, ืืืจืช, ืืื ืืืืืจ -1.
ืขืจืืช ืื ืชืื ืื ืขื ืคืื ืงืฆืื ืื ืืื ื ื ืฉืืืช. ืื ืืืืื ืืกืืฃ HAProxy
ืขืืืื, ืื ืฉืืืืืจ ืืืื ืืืืืช ืืื.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ยท ืืืจืืืช (ืืืจืืืช) -- ืื ืชืื ืื ืฉืืืฉืืื.
ืืืืจืื
ืืกืคืจ ืฉืื ืืืืื ืืช ืืืืช ืืืชืื ืฉืืืขืชืงื ืื -1.
Channel.append(channel, ืืึผื)
ืคืื ืงืฆืื ืื ืืืกืืคื ืืช ืืจืืืื ื ืืืืจืืืช ืืชืืื ืืืืืจ. ืืคืื ืงืฆืื
ืืืืืจ ืืช ืืืืจื ืฉืืืขืชืง, ืืืจืช, ืืื ืืืืืจ -1.
ืขืจืืช ืื ืชืื ืื ืขื ืคืื ืงืฆืื ืื ืืื ื ื ืฉืืืช. ืื ืืืืื ืืกืืฃ HAProxy
ืขืืืื, ืื ืฉืืืืืจ ืืืื ืืืืืช ืืื.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ยท ืืืจืืืช (ืืืจืืืช) -- ืื ืชืื ืื ืฉืืืฉืืื.
ืืืืจืื
ืืกืคืจ ืฉืื ืืืืื ืืช ืืืืช ืืืชืื ืฉืืืขืชืงื ืื -1.
Channel.send(channel, ืืึผื)
ืคืื ืงืฆืื ืื ืืจืฉื ืฉืืืื ืืืืืืช ืฉื ืื ืชืื ืื. ืืื ืื ืื ืืืืืืจ
ืกืืืจ, ืืืืืจ ื ืฉืืฃ ืืืืคื ืงืืืข ืื ืืชื ืืฉืืื ืืช ืื ืืืืจืืืช.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ยท ืืืจืืืช (ืืืจืืืช) -- ืื ืชืื ืื ืฉืืืฉืืื.
ืืืืจืื
ืืกืคืจ ืฉืื ืืืืื ืืช ืืืืช ืืืชืื ืฉืืืขืชืงื ืื -1.
Channel.get_in_length(channel)
ืคืื ืงืฆืื ืื ืืืืืจื ืืช ืืืจื ืืืง ืืงืื ืฉื ืืืืืจ.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ืืืืจืื
ืืกืคืจ ืฉืื ืืืืื ืืช ืืืืช ืืืชืื ืืืืื ืื.
Channel.get_out_length(channel)
ืคืื ืงืฆืื ืื ืืืืืจื ืืช ืืืจื ืืืง ืืคืื ืฉื ืืืืืจ.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ืืืืจืื
ืืกืคืจ ืฉืื ืืืืื ืืช ืืืืช ืืืชืื ืืืืื ืื.
Channel.forward(channel, int)
ืคืื ืงืฆืื ืื ืืขืืืจื ืืชืื ืืืืง ืืงืื ืฉื ืืืืืจ ืืืืง ืืคืื.
ืืืขืื ืื
ยท ืขืจืืฅ (class_channel) -- ืืขืจืืฅ ืฉืขืืจ ืื ืืคืืืฆืืืช.
ยท int (ืืกืคืจ ืฉืื) -- ืืืืช ืื ืชืื ืื ืฉืชืืขืืจ.
ืืืืชื HTTP()
ืืืืงื ืื ืืืืื ืืช ืื ืคืื ืงืฆืืืช ืืื ืืคืืืฆืื ืฉื HTTP.
HTTP.req_get_headers(http)
ืืืืืจื ืืขืจื ืืืืื ืืช ืื ืืืชืจืืช ืืืงืฉืืช.
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ืืืืจืื
ืืขืจื ืฉื ืืืชืจืืช.
ืึดืจึฐืืึนืช HTTP.res_get_headers()
ืื ืืฆืืจื ืฉื ืืืขืจื ืืืืืืจ:
HTTP:req_get_headers()[' '][ ] = " "
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)
ืืืืืจื ืืขืจื ืืืืื ืืช ืื ืืืชืจืืช ืืชืืืื.
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ืืืืจืื
ืืขืจื ืฉื ืืืชืจืืช.
ืึดืจึฐืืึนืช HTTP.req_get_headers()
ืื ืืฆืืจื ืฉื ืืืขืจื ืืืืืืจ:
HTTP:res_get_headers()[' '][ ] = " "
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, ืฉื, ืขืจื)
ืืืกืืฃ ืฉืื ืืืชืจืช HTTP ืืืงืฉื ืฉืฉืื ืืฆืืื ื"ืฉื" ื
ืฉืขืจืื ืืืืืจ ื"ืขืจื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ยท ืขืจื (ืืืจืืืช) -- ืขืจื ืืืืชืจืช.
ืึดืจึฐืืึนืช HTTP.res_add_header()
HTTP.res_add_header(http, ืฉื, ืขืจื)
ืืืกืืฃ ืฉืื ืืืชืจืช HTTP ืืชืืืื ืฉืฉืื ืืฆืืื ื"ืฉื" ื
ืฉืขืจืื ืืืืืจ ื"ืขืจื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ยท ืขืจื (ืืืจืืืช) -- ืขืจื ืืืืชืจืช.
ืึดืจึฐืืึนืช HTTP.req_add_header()
HTTP.req_del_header(http, ืฉืึตื)
ืืกืืจ ืืช ืื ืฉืืืช ืืืชืจืืช ื-HTTP ืืืงืฉื ืฉืฉืื ืืฆืืื ื"ืฉื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ืึดืจึฐืืึนืช HTTP.res_del_header()
HTTP.res_del_header(http, ืฉืึตื)
ืืกืืจ ืืช ืื ืฉืืืช ืืืชืจืืช ื-HTTP ืืชืืืื ืฉืฉืื ืืฆืืื ื"ืฉื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ืึดืจึฐืืึนืช HTTP.req_del_header()
HTTP.req_set_header(http, ืฉื, ืขืจื)
ืืฉืชื ื ืื ืืืืืฃ ืืช ืื ืืืืคืขืื ืฉื ืื ืืืืชืจืืช "ืฉื", ืจืง ืืืืช ืืืืืื
ืืขืจื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ยท ืขืจื (ืืืจืืืช) -- ืขืจื ืืืืชืจืช.
ืึดืจึฐืืึนืช HTTP.res_set_header()
ืคืื ืงืฆืื ืื ืขืืฉื ืืช ืืืชื ืขืืืื ืืื ืืงืื ืืื:
ืคืื ืงืฆืื fcn(txn)
TXN.http:req_del_header("header")
TXN.http:req_add_header("header", "value")
ืกืืฃ
HTTP.res_set_header(http, ืฉื, ืขืจื)
ืืฉืชื ื ืื ืืืืืฃ ืืช ืื ืืืืคืขืื ืฉื ืื ืืืืชืจืืช "ืฉื", ืจืง ืืืืช ืืืืืื
ืืขืจื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ยท ืขืจื (ืืืจืืืช) -- ืขืจื ืืืืชืจืช.
ืึดืจึฐืืึนืช HTTP.req_rep_header()
HTTP.req_rep_header(http, ืฉื, ืจืืงืก, ืืืืฃ)
ืืชืืื ืืืืืื ืืจืืืืจื ืืื ืืืืคืขืื ืฉื ืฉืื ืืืืชืจืช "ืฉื" ืืืชืื
ื-"regex", ืืืืืืฃ ืืืชื ืืืจืืืื ื "replace". ืขืจื ืืืืืคื
ืืืื ืืืืื ืืคื ืืืช ืืืืจื ืืื 1, 2, ... ืคืื ืงืฆืื ืื ืคืืขืืช ืขื ืืืงืฉื.
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ยท regex (ืืืจืืืช) -- ืืืืืื ืืจืืืืจื ืืืชืืื.
ยท ืืืืืืฃ (ืืืจืืืช) -- ืขืจื ืืืืืคื.
ืึดืจึฐืืึนืช HTTP.res_rep_header()
HTTP.res_rep_header(http, ืฉื, ืจืืงืก, ืืึผื)
ืืชืืื ืืืืืื ืืจืืืืจื ืืื ืืืืคืขืื ืฉื ืฉืื ืืืืชืจืช "ืฉื" ืืืชืื
ื-"regex", ืืืืืืฃ ืืืชื ืืืจืืืื ื "replace". ืขืจื ืืืืืคื
ืืืื ืืืืื ืืคื ืืืช ืืืืจื ืืื 1, 2, ... ืคืื ืงืฆืื ืื ืคืืขืืช ืขื ืืืงืฉื.
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ยท regex (ืืืจืืืช) -- ืืืืืื ืืจืืืืจื ืืืชืืื.
ยท ืืืืืืฃ (ืืืจืืืช) -- ืขืจื ืืืืืคื.
ืึดืจึฐืืึนืช HTTP.req_replace_header()
HTTP.req_replace_value(http, ืฉื, ืจืืงืก, ืืืืฃ)
ืขืืื ืืื "HTTP.req_replace_header()" ืืื ืฉืืื ืชืืื ืืช ืืืืืื ืืจืืืืจื ื ืื
ืื ืขืจื ืืืคืจื ืืคืกืืง ืฉื ืฉืื ืืืืชืจืช "ืฉื" ืืืงืื ืืืื
ืืืชืจืช.
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ยท regex (ืืืจืืืช) -- ืืืืืื ืืจืืืืจื ืืืชืืื.
ยท ืืืืืืฃ (ืืืจืืืช) -- ืขืจื ืืืืืคื.
ืึดืจึฐืืึนืช HTTP.req_replace_header()
ืึดืจึฐืืึนืช HTTP.res_replace_value()
HTTP.res_replace_value(http, ืฉื, ืจืืงืก, ืืืืฃ)
ืขืืื ืืื "HTTP.res_replace_header()" ืืื ืฉืืื ืชืืื ืืช ืืืืืื ืืจืืืืจื ื ืื
ืื ืขืจื ืืืคืจื ืืคืกืืง ืฉื ืฉืื ืืืืชืจืช "ืฉื" ืืืงืื ืืืื
ืืืชืจืช.
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช.
ยท regex (ืืืจืืืช) -- ืืืืืื ืืจืืืืจื ืืืชืืื.
ยท ืืืืืืฃ (ืืืจืืืช) -- ืขืจื ืืืืืคื.
ืึดืจึฐืืึนืช HTTP.res_replace_header()
ืึดืจึฐืืึนืช HTTP.req_replace_value()
HTTP.req_set_method(http, ืฉืืื)
ืืฉืืชื ืืช ืฉืืืช ืืืงืฉื ืขื ืืคืจืืืจ "ืฉืืื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉืืื (ืืืจืืืช) -- ืืฉืืื ืืืืฉื.
HTTP.req_set_path(http, ื ืชืื)
ืืฉืืชื ืืช ื ืชืื ืืืงืฉื ืขื ืืคืจืืืจ "ื ืชืื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ื ืชืื (ืืืจืืืช) -- ืืืจื ืืืืฉื.
HTTP.req_set_query(http, ืฉืืืืชื)
ืืฉืืชื ืืช ืืืจืืืช ืืฉืืืืชื ืฉื ืืืงืฉื ืืืืคืืขื ืืืจื ืกืืื ืืฉืืื ืืจืืฉืื
("?") ืขื ืืคืจืืืจ "ืฉืืืืชื".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉืืื (ืืืจืืืช) -- ืืฉืืืืชื ืืืืฉื.
HTTP.req_set_uri(http, ืืืจื)
ืืฉืืชื ืืช URI ืืืงืฉื ืขื ืืคืจืืืจ "uri".
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืฉื (ืืืจืืืช) -- ืืืืจื ืืืืฉ.
HTTP.res_set_status(http, ืกืึธืืึผืก)
ืืฉืืชื ืืช ืงืื ืืฆื ืืชืืืื ืขื ืืคืจืืืจ "ืงืื". ืฉืืื ืื ืฉืืกืืื
ืืืชืื ืืืืืืืืช ืืงืื ืืืืฉ.
ืืืขืื ืื
ยท http (class_http) -- ืืืืืืงื ื-http ืืงืฉืืจ.
ยท ืืฆื (ืืกืคืจ ืฉืื) -- ืงืื ืกืืืืก ืืชืืืื ืืืืฉ.
ืืืืชื TXN()
ืืืืืงื txn ืืืืื ืืช ืื ืืคืื ืงืฆืืืช ืืืืก ืืขืกืงืช http ืื tcp
(ืฉืื ืื ืฉืืจื tcp ืืื ืืขืกืงืช tcp, ืืื ืขืกืงืช HTTP
ืืื ื ืืื ืืืจื tcp).
ืืฉืืืืฉ ืืืืืงื ืื ืืืคืฉืจ ืืืืืจ ื ืชืื ืื ืืืืงืฉืืช, ืืฉื ืืช ืืืชื ื
ืืืขืืืจ ืืืชื.
ืื ืืคืื ืงืฆืืืช ืฉืืกืคืงืืช ืืืืงื ืื ืืืื ืืช ืืืงืฉืจ
ืืืืืืช-ืฉืืืคืืช ื ืคืขืืืืช.
TXN.c
ืืืืจืื
An ืืืืจืื ืืืืชื.
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Converters.
TXN.sc
ืืืืจืื
An ืืืืจืื ืืืืชื.
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Converters. ืืคืื ืงืฆืืืช ืฉื ืืืืืืงื ืื
ืืืืืจ ืชืืื ืืืจืืืช.
TXN.f
ืืืืจืื
An ืืืื ืืืืชื.
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Fetches.
TXN.sf
ืืืืจืื
An ืืืื ืืืืชื.
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Fetches. ืืคืื ืงืฆืืืช ืฉื ืืืืืืงื ืื
ืืืืืจ ืชืืื ืืืจืืืช.
TXN.req
ืืืืจืื
An ืขืจืืฅ ืืืืชื.
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงืช ืขืจืืฅ ืขืืืจ ืืืืจ ืืืงืฉืืช.
TXN.res
ืืืืจืื
An ืขืจืืฅ ืืืืชื.
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงืช ืขืจืืฅ ืขืืืจ ืืืืจ ืืชืืืื.
TXN.http
ืืืืจืื
An HTTP ืืืืชื.
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืกืื HTTP. ืื ืืืื ืจืง ืื ืืฉ ื-proxy
"ืืฆื http" ืืืคืขื.
TXN.log(TXN, loglevel, msg)
ืคืื ืงืฆืื ืื ืฉืืืืช ืืืื. ืืืืื ื ืฉืื, ืืืชืื ื-HAProxy
ืงืืืฅ ืชืฆืืจื, ืืฉืจืช ืืจืืจืช ืืืืื ืฉื syslog ืื ืืื ืืืืืจ ืื-
stderr ืื ืื ืืืชืจ.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท ืจืืช ืืืื (ืืกืคืจ ืฉืื) -- ืืื ืจืืช ืืืืื ืืฉืืืืช ืืืืืขื. ืื
ืืกืคืจ ืืื 0 ื-7.
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (ืืืืจืืช ืืจืืช ืืืื)
ืึดืจึฐืืึนืช TXN.deflog
ืึดืจึฐืืึนืช TXN.Debug
ืึดืจึฐืืึนืช TXN.Info
ืึดืจึฐืืึนืช TXN. ืืืืจื
ืึดืจึฐืืึนืช TXN.Alert
TXN.deflog(TXN, msg)
ืฉืืื ืฉืืจืช ืืืื ืขื ืจืืช ืืืืื ืืืืืืจืช ืืืจืืจืช ืืืื ืขืืืจ ื-proxy ืืืฉืืื ื-
- ืขืกืงื.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช TXN.log
TXN.Debug(txn, msg)
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช TXN.log
ืขืืฉื ืืช ืืืชื ืขืืืื ืืืฉืจ:
function Debug(txn, msg)
TXN.log(txn, core.debug, msg)
ืกืืฃ
TXN.Info(txn, msg)
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช TXN.log
function Debug(txn, msg)
TXN.log(txn, core.info, msg)
ืกืืฃ
TXN.Warning(txn, msg)
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช TXN.log
function Debug(txn, msg)
TXN.log(txn, core.warning, msg)
ืกืืฃ
TXN.Alert(txn, msg)
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท msg (ืืืจืืืช) -- ืชืืื ืืืืื.
ืึดืจึฐืืึนืช TXN.log
function Debug(txn, msg)
TXN.log(txn, core.alert, msg)
ืกืืฃ
TXN.get_priv(txn)
ืืืืจ ื ืชืื ื Lua ืืืืืืกื ืื ืืขืกืงื ืื ืืืืืช (ืขื ื TXN.set_priv()โ)
ืคืึผื ืงืฆึดืึธื. ืื ืื ืืืืืกื ืื ื ืชืื ืื, ืืื ืืืืืจ ืขืจื ืืคืก.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ืืืืจืื
ืื ืชืื ืื ืืืืืืื ืฉื ืฉืืจื ืืขืืจ, ืื ืืคืกืืื ืื ืฉืื ืืืจ ืื ืืืื.
TXN.set_priv(txn, ื ืชืื ืื)
ืืืกื ื ืชืื ืื ืืืฉืื ืืขืกืงืช HAProxy ืื ืืืืืช. ืคืขืืื ืื ืืืืืคื ืืช ืืืฉื
ื ืชืื ืื ืืืืืกื ืื.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท ื ืชืื ืื (ืืืื) - ืื ืชืื ืื ืืืืืืกื ืื ืืขืกืงื.
TXN.set_var(TXN, ืืฉ, ืขืจื)
ืืืืจ ืกืื Lua ืืกืื HAProxy ืืืืืกื ืืืชื ืืืฉืชื ื .
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท ืืื (ืืืจืืืช) -- ืฉื ืืืฉืชื ื ืืืชืื ืืืฉืชื ื HAProxy
ืชืืืืจ.
ยท ืขืจื (ืืืื) -- ืื ืชืื ืื ืืืืืืกื ืื ืืืฉืชื ื.
TXN.get_var(TXN, var)
ืืืืืจื ื ืชืื ืื ืืืืืืกื ืื ืืืืืจ ืืืฉืชื ื ืืกืื Lua.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท ืืื (ืืืจืืืช) -- ืฉื ืืืฉืชื ื ืืืชืื ืืืฉืชื ื HAProxy
ืชืืืืจ.
TXN.get_headers(txn)
ืคืื ืงืฆืื ืื ืืืืืจื ืืขืจื ืฉื ืืืชืจืืช.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ืืืืจืื
ืืขืจื ืฉื ืืืชืจืืช.
TXN.done(txn)
ืคืื ืงืฆืื ืื ืืคืกืืงื ืืช ืืขืืืื ืฉื ืืขืกืงื ืืืืคืขืื ืืงืฉืืจื.
ื ืืชื ืืืฉืชืืฉ ืื ืืืฉืจ ืืืืื ืฉืืืื ืงืจืืืืช ืื ืืื ืืืคืกืืง ืืช ืืขืืืื ืืืืจ ืืื
ืืืง ืืื ืชืื ืื ืืืืืจื ืืืงืื (ืืืฉื: ืืคื ืื ืืืืฉ).
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
TXN.set_loglevel(txn, ืจืืช ืืืื)
ืืฉืืฉ ืืฉืื ืื ืจืืช ืืืืื ืฉื ืืืงืฉื ืื ืืืืืช. ื-"loglevel" ืืืื ืืืืืช an
ืืกืคืจ ืฉืื ืืื 0 ื-7.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท ืจืืช ืืืื (ืืกืคืจ ืฉืื) -- ืจืืช ืืืืื ืื ืืจืฉืช. ืืฉืชื ื ืื ืืืื ืืืืืช ืืื ืืื
ืึดืจึฐืืึนืช ืืืืื.
TXN.set_tos(txn, ืืืก)
ืืฉืืฉ ืืืืืจืช ืขืจื ืืฉืื TOS ืื DSCP ืฉื ืื ืืช ืฉื ืฉืืืืช ืืืงืื ื-
ืขืจื ืฉืืืขืืจ ื-"tos" ืืคืืืคืืจืืืช ืฉืชืืืืืช ืืื.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท tos (ืืกืคืจ ืฉืื) -- DSCP ืฉื ืืขืจืืช ืืืคืขืื ืืืืฉื ืฉื TOS.
TXN.set_mark(txn, ืกืืื)
ืืฉืืฉ ืืืืืจืช ื-Netfilter MARK ืขื ืื ืืืืืืืช ืฉื ืฉืืืืช ืืืงืื ืืขืจื
ืขืืจ ื"ืกืืื" ืืคืืืคืืจืืืช ืืชืืืืืช ืืื.
ืืืขืื ืื
ยท txn (class_txn) -- ืืืืืืงื ืืืืืงื txn ืืืืื ืืช ืื ืชืื ืื.
ยท ืกืืื (ืืกืคืจ ืฉืื) -- ืขืจื ืืกืืื.
ืืืืชื ืฉืึถืงึทืข()
ืืืืงื ืื ืืืืืช ืืืืืช ืชืืืืช ืืืืืงื Lua Socket. ืจืง ื'ืืงืื'
ืคืื ืงืฆืืืช ืืืื ืืช. ืจืื ืืช ืืชืืขืื ืฉื Lua Socket:
http://w3.impa.br/~diego/software/luasocket/tcp.html
Socket.close(socket)
ืกืืืจ ืืืืืืงื TCP. ืืฉืงืข ืืคื ืืื ืืืฉืืฉ ืืช ืืืืืืืงื ืกืืืจ ืืืืงืืื
ืืืชืืืช ืฉืืืื ื ืงืฉืจ ืืืืืืืงื ืืืื ื ืืืืฉืืืื ืืืจืื. ืื
ืคืขืืืืช ื ืืกืคืืช (ืืืขื ืงืจืืืืช ื ืืกืคืืช ืืฉืืืช ืืกืืืจื) ืืืชืจืืช ื-a
ืฉืงืข ืกืืืจ.
ืืืขืื ืื
ยท ืฉืงืข (class_socket) - ืืื ื-Socket ืืืืืคื.
ืืขืจื: ืืฉืื ืืกืืืจ ืืช ืื ืืฉืงืขืื ืืืฉืืืฉืื ืืจืืข ืฉืืื ืืื ืฆืืจื, ืฉืื, ื
ืืขืจืืืช ืจืืืช, ืื ืฉืงืข ืืฉืชืืฉ ืืืชืืจ ืงืืฆืื, ืฉืื ืืขืจืืช ืืืืืืช
ืึถืึฐืฆึธืขึดื. ืืคืฆืื ืฉื ืืกืคื ืืืฉืคื ื ืกืืจืื ืืืืืืืืช ืืคื ื ืืืฉืืื,
ืืฃ.
Socket.connect(socket, ืืชืืืช[, ื ืื])
ื ืืกืืื ืืช ืืืืจ ืืืืืืงื ืฉืงืข ืืืืจื ืืจืืืง.
ืืืงืจื ืฉื ืฉืืืื, ืืฉืืื ืืืืืจื ืืคืก ืืืืจืื ืืืจืืืช ืืืชืืจืช โโืืช ืืฉืืืื.
ืืืงืจื ืฉื ืืฆืืื, ืืฉืืื ืืืืืจื 1.
ืืืขืื ืื
ยท ืฉืงืข (class_socket) - ืืื ื-Socket ืืืืืคื.
ยท ืืชืืืช (ืืืจืืืช) -- ืืืื ืืืืืช ืืชืืืช IP ืื ืฉื ืืืจื. ืจืื ืืืื ืขืืืจ
ืขืื ืืืืข.
ยท ื ืื (ืืกืคืจ ืฉืื) -- ืืืื ืืืืืช ืืกืคืจ ืฉืื ืืืืื [1..64K].
ืืืืจืื
1 ืื ืืคืก.
ืกืืืืช ืฉืื ืืชืืืช ืืืคืฉืจืช ืืืฉืชืืฉ ืืคืื ืงืฆืื connect() ืืื ืืืชืืืจ ืืืื
ืืจื ืืืจ ืืืฉืจ TCP. ืืชืืืืจ ืืืืื ืืชืืืช simpleipv4 ืื ipv6 ืืื
ืืขืฆื ืืคืืจืื ืืฆืคืื. ืคืืจืื ืื ืืืจืฉ ืืช ืืืฆืืื.
ืคืืจืื ืืืจ ืืืงืืื ืืื ื ืชืื ืฉืงืข ืืื "/socket/path", ืืื ืืืคืฉืจ ืืืชืืืจ
ืืฉืงืข. ืืจืืื ืฉืืืช ืืืคืฉืืื ื ืชืืืื ืขื ืืงืืืืืช "abns@", ืืืืกืืฃ
ื ืืชื ืืืขืืืจ filedescriotr ืขื ืืงืืืืืช "fd@". ืืงืืืืืช "ipv4@", "ipv6@"
ืืื "unix@" ื ืชืืืื. ื ืืชื ืืืขืืืจ ืืช ืืืฆืืื ืืชืื ืืืืจืืืช. ืืชืืืืจ
"127.0.0.1:1234" ืชืงืฃ. ืืืงืจื ืื, ืืคืจืืืจ ื ืื ืืชืขืืืื.
Socket.connect_ssl(socket, ืืชืืืช, ืืฆืืื)
ืืืชื ืืชื ืืืืช ืืื ืืคืื ืงืฆืื socket:connect, ืื ืืฉืชืืฉืช ื-SSL.
ืืืขืื ืื
ยท ืฉืงืข (class_socket) - ืืื ื-Socket ืืืืืคื.
ืืืืจืื
1 ืื ืืคืก.
Socket.getpeername(socket)
ืืืืืจ ืืืืข ืขื ืืฆื ืืืจืืืง ืฉื ืืืืืืงื ืืงืื ืืืืืจ.
ืืืืืจื ืืืจืืืช ืขื ืืชืืืช ื-IP ืฉื ืืขืืืช, ืืืืจืื ืืช ืืกืคืจ ืืืฆืืื
ืขืืืช ืืฉืชืืฉ ืขืืืจ ืืืืืืจ. ืืืงืจื ืฉื ืืขืืช, ืืฉืืื ืืืืืจื ืืคืก.
ืืืขืื ืื
ยท ืฉืงืข (class_socket) - ืืื ื-Socket ืืืืืคื.
ืืืืจืื
ืืืจืืืช ืืืืืื ืืช ืืืืข ืืฉืจืช.
Socket.getsockname(socket)
ืืืืืจื ืืช ืคืจืื ืืืชืืืช ืืืงืืืืช ืืืฉืืืืื ืืืืืืืงื.
ืืฉืืื ืืืืืจื ืืืจืืืช ืขื ืืชืืืช IP ืืงืืืืช ืืืกืคืจ ืขื ืืืฆืืื. ื
ืืืงืจื ืฉื ืฉืืืื, ืืฉืืื ืืืืืจื ืืคืก.
ืืืขืื ืื
ยท ืฉืงืข (class_socket) - ืืื ื-Socket ืืืืืคื.
ืืืืจืื
ืืืจืืืช ืืืืืื ืืช ืคืจืื ืืืงืื.
Socket.receive(socket[, ืชืื ืืช[, ืงืืืืืช]])
ืงืืจื ื ืชืื ืื ืืืืืืืงื ืืงืื, ืืืชืื ืืืคืืก ืืงืจืืื ืฉืฆืืื. ืืคืืกืื
ืขืงืื ืืืจ ืคืืจืื ื-I/O ืฉื ืงืืืฅ Lua, ืืืืืื ืืืืฆืืขืื ืืื ืืืื
ืืคืืกืื ืื ืืืื.
ืืืขืื ืื
ยท ืฉืงืข (class_socket) - ืืื ื-Socket ืืืืืคื.
ยท ืืคืืก (ืืืจืืืช|ืืกืคืจ ืฉืื) - ืชืืจ ืื ื ืืจืฉ (ืจืื ืืืื).
ยท ืงืืืืืช (ืืืจืืืช) -- ืืืจืืืช ืฉืชืืื ืงืืืืืช ืื ืชืื ืื ืืืืืืจืื.
ืืืืจืื
ืืืจืืืช ืืืืืื ืืช ืื ืชืื ืื ืื ืืจืฉืื ืื ืืคืกืืช.
ืืืคืืก ืืืื ืืืืืช ืื ืืื ืืืืคืฉืจืืืืช ืืืืืช:
ยท
`*ื`: ืงืืจื ืืื ื- ืื ืืื ืฉืงืข ืขื ืื ืืื ืืงืฉืจ is ืกืืืจ. ืื
ืืืืฆืข ืชืจืืื ืกืืฃ ืฉืืจื;
ยท
`*ื`: ืงืืจื a ืงื of ืึถืงืกื ืืื ื- ืื ืืื ืฉืงืข ืื ืืื ื ืงื is ืืกืชืืื by a
ืชื LF (ASCII 10), ืืืคืฆืืื ืื ืืคื ืื ืชื CR (ASCII 13).
ืืชืืืื CR ื-LF ืืื ื ืืืืืื ืืฉืืจื ืืืืืืจืช. ืืืขืฉื,
ืืชืื ืืช ืืชืขืืืช ืืื ืชืืื ื-CR. ืืื ืืคืืก ืืจืืจืช ืืืืื.
ยท
ืืกืคืจ: ืืืจืืื ืื ืืื ืฉืืื ื ืืงืจืื a ืืคืืจื ืืกืคืจ of ืืชืื ืืื ื- ืื ืืื
ืฉืึถืงึทืข. ืงืืืืืช ืืื ืืืจืืืช ืืืคืฆืืื ืืืช ืฉืืฉ ืืฉืจืฉืจ ืืืชืืื
ืฉื ืื ืื ืชืื ืื ืฉืืชืงืืื ืืคื ื ืืืืืจื.
ยท ืจืืง: ืื ืืชืื ืืช ื ืฉืืจืช ืจืืงื, ืืคืฉืจืืช ืืจืืจืช ืืืืื ืืื *l.
ืื ืืฆืืื, ืืฉืืื ืืืืืจื ืืช ืืชืื ืืช ืฉืืชืงืืื. ืืืงืจื ืฉื ืืขืืช, ื
ืืฉืืื ืืืืืจื ืืคืก ืืืืจืื ืืืืขืช ืฉืืืื ืฉืืืืื ืืืืืช ืืืืจืืืช 'ืกืืืจื' ืคื ืืื
ืืืงืจื ืฉืืืืืืจ ื ืกืืจ ืืคื ื ืืฉืืืช ืืฉืืืืจ ืื ืืืืจืืืช
'ืคืกืง ืืื' ืืืงืจื ืฉืืื ืคืกืง ืืื ืืืืื ืืคืขืืื. ืืื ืื, ืืืืจ ืืฉืืืื
ืืืืขื, ืืคืื ืงืฆืื ืืืืืจื ืืช ืืชืืฆืื ืืืืงืืช ืฉื ืืฉืืืืจ.
ืืขืจื ืืฉืืื: ืคืื ืงืฆืื ืื ืฉืื ืชื ืืืืคื ืืืืจ. ืื ื ืื ืืชืืื ืืืกืคืจ
ืืคืืกืื (ืืื ืืขืืื ืื ืจืืืชื ืชืืื ื ืื ืืฉืืืืฉ) ืืขืืฉืื ืื ืืืจ ืื.
ืชืืฆืืืช ืืืงืืืช ืืื ืืืืืจืืช ืืืืชื ืืืคื ืืื ืชืืฆืืืช ืืืฆืืืืช. ืึถื
ืืชืืื ื ืืืืจืื ื ืืคืจื ืืช ืืจืขืืื ืฉืื ืืคืื ืงืฆืืืช ืฆืจืืืืช ืืืืืืจ ืืคืก ืืฉืืืื. ืืื
ืื ืื ืืฉืชื ื.
Socket.send(socket, ื ืชืื ืื[, ืึทืชืึธืึธื[, ืกืึนืฃ]])
ืฉืืื ื ืชืื ืื ืืจื ืืืืืืงื ืืืงืื.
ืืืขืื ืื
ยท ืฉืงืข (class_socket) - ืืื ื-Socket ืืืืืคื.
ยท ื ืชืื ืื (ืืืจืืืช) -- ืื ืชืื ืื ืฉืืืฉืืื.
ยท ืืชืืื (ืืกืคืจ ืฉืื) -- ืืืงืื ืืืชืืื ืืืืืจ ืื ืชืื ืื ืืฉืจ ืืืื
ืืืืฉืื.
ยท ืกืืฃ (ืืกืคืจ ืฉืื) -- ืืืงืื ืืงืฆื ืืืืืจ ืื ืชืื ืื ืฉืืืื
ื ืฉืื.
ืืืืจืื
ืจืื ืืืื.
ื ืชืื ืื ืื ืืืืจืืืช ืฉืืฉ ืืฉืืื. ืืืจืืืื ืืื ืืืืคืฆืืื ืืืื i ื-j ืขืืืืื ืืืืืง ืืื ื-
ืคืื ืงืฆืืืช string.sub Lua ืกืื ืืจืืืช ืืื ืืืคืฉืจ ืืช ืืืืืจื ืฉื ืืืจืืืช ืืฉื ื ืืืืฉืื.
ืื ืืื ืืฆืืืื, ืืฉืืื ืืืืืจื ืืช ืืืื ืืงืก ืฉื ืืืืช ืืืืจืื ืืชืื [ืืชืืื, ืกืืฃ]
ืฉื ืฉืื. ืฉืืื ืื ืฉืื ืืืชืืื ืืื 1 ืื ื ืขืืจืช, ืืื ืืืขืฉื ื-
ืืืกืคืจ ืืืืื ืฉื ืืชืื ืฉื ืฉืืื. ืืืงืจื ืฉื ืฉืืืื, ืืฉืืื ืืืืืจื ืืคืก, ืืืืจืื
ืืืืขืช ืฉืืืื, ืืืืจืื ืืืื ืืงืก ืฉื ืืืื ืืืืจืื ืืชืื [ืืชืืื, ืกืืื] ืื
ื ืฉืื. ืืืื ืชืจืฆื ืื ืกืืช ืฉืื ืืืืืื ืฉืืืืจ ืืื. ืืืขืืช
ื ืืชื 'ืืกืืืจ' ืืืืขื ืืืงืจื ืฉืืืืืืจ ื ืกืืจ ืืคื ื ืืฉืืืืจ
ืืืฉืื ืื ืืืืจืืืช 'ืคืกืง ืืื' ืืืงืจื ืฉืืื ืคืกืง ืืื ืืืืื
ืคืขืืื.
ืืขืจื: ืืคืื ืืื ื ืืืืืกื. ืขืืืจ ืืืจืืืืช ืงืื ืืช, ืชืืื ืขืืืฃ ืืฉืจืฉืืจ
ืืืชื ื-Lua (ืขื ืืืคืขืื '..') ืืฉืื ืืช ืืชืืฆืื ืืฉืืื ืืืช ืืืงืื
ืงืืจื ืืฉืืื ืืกืคืจ ืคืขืืื.
Socket.setoption(socket, ืืึนืคึผึฐืฆึดืึธื[, ืขืจื])
ืจืง ืืืืฉื ืขืืืจ ืชืืืืืช, cal ืื ืื ืขืืฉื ืืืื.
Socket.settimeout(socket, ืขืจื[, ืืฆื])
ืืฉื ื ืืช ืขืจืื ืืืื ืืงืฆืื ืขืืืจ ืืืืืืืงื. ืื ืคืขืืืืช ืืงืื/ืคืื ืืืกืืืช. ืึถื
ืืื ืฉืื ืงืจืืื ืืฉืืืืช ืฉืืืื, ืงืืื ืืงืืื ืชืืืกื ืืื ืืืืืช ืืื,
ืขื ืืกืืื ืืคืขืืื. ืฉืืืช settimeout ืืืืืจื ืืืืื ืขื ืืืืืช
ืฉื ืืื ืฉืฉืืืืช ืืงืื/ืคืื ืืืืืืช ืืืกืื. ืืืฉืจ ืืืฃ ืืื ืงืฆืื, ืืืืฉืคืข
ืฉืืืืช ืืืืชืจืืช ืื ืืฉืืืช ืขื ืงืื ืฉืืืื.
ืืฉื ืืืื ืืืืชื ื ืืฆืืื ืืคืจืืืจ ืืขืจื, ืืฉื ืืืช.
ืืฆืื ืืืื ืืงืฆืื ืืืืฉืืื ืืื, ืืืื ืืงืฆืื ืืืืื ืฉื ืืชื ืืืืืจื ืืื ืืืกืจ ืืคืขืืืืช
ืืื ืืืชื ื ืืืฉืืืช ืืฉืืืื ืฉื ืืืืืจ ืืคื ืืื ืื ืืืชื ื ืืงืืืช ื ืชืื ืื.
ืืืขืื ืื
ยท ืฉืงืข (class_socket) - ืืื ื-Socket ืืืืืคื.
ยท ืขืจื (ืืกืคืจ ืฉืื) -- ืขืจื ืืืื ืืงืฆืื.
ืืืืชื ืึทืคึผึธื()
ืืืืงื ืื ืืืคืฉืจืช ืืืฆืข ืืืคืืฉ ืืกืืื ืืืคืืช HAProxy. ืืืคืืช ืืืืฆืืจืืช ืืืืืืช ืืืืืช
ืฉืื ื ืืืืื ืืื ืืจืืฆื ืืจื ืฉืงืข ืื ืืืื HAProxy.
ืืจืืจืช ืืืื = "ืืจื"ื
- ืฆืืจ ืืืขื ืืคื
geo = Map.new("geo.map", Map.ip);
-- ืฆืืจ ืืืืืจ ืืืฉ ืฉืืืืืจ ืืช ืืืื ืช ืืืฉืชืืฉ
core.register_fetches("country", function(txn)
src ืืงืืื;
ืืืง ืืงืืื;
src = txn.f:fhdr("x-forwarded-for");
if (src == nil) ืื
src = txn.f:src()
if (src == nil) ืื
ืืืืจ ืืจืืจืช ืืืื;
ืกืืฃ
ืกืืฃ
-- ืืฆืข ืืืคืืฉ
loc = geo:lookup(src);
ืื (ืืืง == ืืคืก) ืื
ืืืืจ ืืจืืจืช ืืืื;
ืกืืฃ
ืืืืืจ loc;
ื);
Map.int
ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.ip ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.str
ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.beg
ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.sub
ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.dir
ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.dom
ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.end
ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.reg
ืขืืื ืืงืืืฅ HAProxy configuration.txt, ืคืจืง "ืฉืืืืฉ ื-ACL ืืืืืช ืืืืืืืช"
ืืื ืชืช ืคืจืง "ืืกืืืืช ACL" ืืื ืืืืื ืืช ืฉืืืช ืืชืืืช ืืืคืืกืื ืืื.
Map.new(file, ืฉืืื)
ืืืฆืจ ืืืขื ืืคื.
ืืืขืื ืื
ยท ืคืืื (ืืืจืืืช) - ืืื ืืงืืืฅ ืืืื ืืช ืืืคื.
ยท ืฉืืื (ืืกืคืจ ืฉืื) -- ืืื ืฉืืืช ืืชืืืช ืืคืืกื ืืืคื. ืจืื ืืช ืืชืืื ืืช
ืฉื ืืืชืช ืืคื.
ืืืืจืื
ืืืืืืงื ืืคืช ืืืืงื.
ืึดืจึฐืืึนืช ืชืืื ืืช ืืืคื.
Map.lookup(map, str)
ืืฆืข ืืืคืืฉ ืืืคื.
ืืืขืื ืื
ยท ืึทืคึผึธื (ืืคืช_ืืืชื) -- ืืื ืืืืืืงื ืืคืช ืืืืชื.
ยท str (ืืืจืืืช) -- ืืื ืืืืจืืืช ืืฉืืฉืช ืืืคืชื.
ืืืืจืื
ืืืจืืืช ืืืืืื ืืช ืืชืืฆืื ืื ืืคืก ืื ืืื ืืชืืื.
Map.slookup(map, str)
ืืฆืข ืืืคืืฉ ืืืคื.
ืืืขืื ืื
ยท ืึทืคึผึธื (ืืคืช_ืืืชื) -- ืืื ืืืืืืงื ืืคืช ืืืืชื.
ยท str (ืืืจืืืช) -- ืืื ืืืืจืืืช ืืฉืืฉืช ืืืคืชื.
ืืืืจืื
ืืืจืืืช ืืืืืื ืืช ืืชืืฆืื ืื ืืืจืืืช ืจืืงื ืื ืืื ืืชืืื.
ืืืืชื AppletHTTP()
ืืืืงื ืื ืืฉืืฉืช ืขื ืืืฉืืืื ืื ืืืืจืฉืื ืืฆื 'http'. ืืืฉืืืื http ืืืื
ืืืืืช ืจืฉืื ืขื core.register_service() ืคืึผื ืงืฆึดืึธื. ืื ืืฉืืฉืื ืขืืืจ
ืขืืืื ืืงืฉืช http ืืื ืฉืจืช ืืืืง ืืืืืจื ืฉื HAProxy.
ืืื ืงืื ืืืืืื ืฉื hello world:
core.register_service("hello-world", "http", function(applet)
ืชืืืื ืืงืืืืช = "ืฉืืื ืขืืื!"
ืืืฉืืืื:set_status(200)
applet:add_header("content-length", string.len(response))
applet:add_header("content-type", "text/plain")
applet:start_response()
ืืืฉืืืื:ืฉืื (ืชืืืื)
ืกืืฃ)
AppletHTTP.c
ืืืืจืื
A ืืืืจืื ืืืืชื
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Converters.
AppletHTTP.sc
ืืืืจืื
A ืืืืจืื ืืืืชื
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Converters. ืืคืื ืงืฆืืืช ืฉื ืืืืืืงื ืื
ืืืืืจ ืชืืื ืืืจืืืช.
AppletHTTP.f
ืืืืจืื
A ืืืื ืืืืชื
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Fetches. ืฉืื ืื ืฉืืืฆืืข ืืืืฉืืืื
ืืงืื ืืื ื ืืืื ืืืฉืช ืืขืกืงืช ืืืืื ืฉื HAProxy ืืืงืืช, ืื ืืืืื ืืกืืืืช
ืคืงืืช ืืงืฉืืจืืช ืืขืจืืื ืืชืืืืื ื-HTTP (hdr, path, ...) ืืื ื ืืืื ืื.
AppletHTTP.sf
ืืืืจืื
A ืืืื ืืืืชื
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Fetches. ืืคืื ืงืฆืืืช ืฉื ืืืืืืงื ืื
ืืืืืจ ืชืืื ืืืจืืืช. ืฉืืื ืื ืฉืืงืื ืืืืฆืืข ืฉื ืืืืฉืืืื ืื ืืืื ืืืฉืช ื-a
ืืจื ืืงืฆืืืช HTTP ืืืืื ืฉื HAProxy ืืืงืืช, ืื ืืื ืคืงืงืื ืืืืืื ืืงืฉืืจืื ื-HTTP
ืขืจืืื ืชืืืืื (hdr, ื ืชืื, ...) ืืื ื ืืืื ืื.
ืฉืืืช AppletHTTP
ืืืืจืื
ืืืจืืืช
ืฉืืืช ืืชืืื ื ืืืืืจื ืืืจืืืช ืืืืืื ืืช ืฉืืืช ื-HTTP.
AppletHTTP.version
ืืืืจืื
ืืืจืืืช
ืืจืกืช ืืชืืื ื, ืืืืืจื ืืืจืืืช ืืืืืื ืืช ืืจืกืช ืืงืฉืช ื-HTTP.
AppletHTTP.path
ืืืืจืื
ืืืจืืืช
ื ืชืื ืืชืืื ื ืืืืืจ ืืืจืืืช ืืืืืื ืืช ื ืชืื ืืงืฉืช ื-HTTP.
AppletHTTP.qs
ืืืืจืื
ืืืจืืืช
ืืชืืื ื qs ืืืืืจื ืืืจืืืช ืืืืืื ืืช ืืืจืืืช ืฉืืืืชืช ื-HTTP.
AppletHTTP.length
ืืืืจืื
ืืกืคืจ ืฉืื
ืืืจื ืืชืืื ื ืืืืืจ ืืกืคืจ ืฉืื ืืืืื ืืช ืืืจื ืืืฃ ื-HTTP.
ืืืชืจืืช AppletHTTP
ืืืืจืื
ืืขืจื
ืืืชืจืืช ืืชืืื ื ืืืืืจืืช ืืขืจื ืืืืื ืืช ืืืชืจืืช ื-HTTP. ืืืืชืจืช
ืืฉืืืช ืชืืื ืืืืชืืืช ืงืื ืืช. ืืฉื ืืืืชืจืช ื ืืชื ืืืืชืงื ืืืืชืจ ื
ืคืขื ืืืช ืืื ืืงืฉื, ืืขืจื ืืชืืืกืฃ ืขื 0 ืืขืจื ืืืื ืืงืก ืืจืืฉืื. ืืืขืจื
ืืฉ ืืช ืืืืคืก ืืื:
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
ืืืื ืืขืจื ืืืืื ืืช ืื ืืืชืจืืช ืืืงืฉืืช.
AppletHTTP.set_status(applet, ืงืื)
ืคืื ืงืฆืื ืื ืืืืืจื ืืช ืงืื ืืฆื ื-HTTP ืขืืืจ ืืชืืืื. ืืงืื ืืืืชืจ ืืื ื
100 ื599.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletHTTP) -- ืื AppletHTTP ืืืืชื
ยท ืงืื (ืืกืคืจ ืฉืื) -- ืงืื ืืืฆื ืฉืืืืืจ ืืืงืื.
AppletHTTP.add_header(ืืืฉืืืื, ืฉื, ืขืจื)
ืคืื ืงืฆืื ืื ืืืกืฃ ืืืชืจืช ืืชืืืื. ืืืชืจืืช ืืฉืืืคืืืช ืืื ื ืืืืืฆืืช.
ืืืืชืจืช ืืืืืืืช ืืืจื ืชืืื ืืฉืืฉ ืืงืืืขืช ืืืจื ืืชืืืื. ืื ืื
ืื ืงืืื, ื ืงืืืื ืืขืืจื: ื ืชื ืืืืืจ, ืืื ืืืชืืื ืืืคืื ืงืฆืื
AppletHTTP:send() ืืืคืื ืื ืชื.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletHTTP) -- ืื AppletHTTP ืืืืชื
ยท ืฉื (ืืืจืืืช) -- ืฉื ืืืืชืจืช
ยท ืขืจื (ืืืจืืืช) -- ืขืจื ืืืืชืจืช
AppletHTTP.start_response(ืืืฉืืืื)
ืคืื ืงืฆืื ืื ืืฆืืื ืช ืืื ืืข ื-HTTP ืฉืืื ืืืื ืืขืื ืืืฉืืื ืืช
ืืืชืจืืช ืชืืืื. ืืืืจ ืืงืจืืื ืืื ืื ื ืืื ืืืืกืืฃ ืืืชืจืืช ืืชืืืื; ืึธื ืึผ
ืื ืืืื ืืืฉืชืืฉ ื- AppletHTTP:send() ืืชืคืงื ืื AppletHTTP:start_response() ืื
ืฉืงืืจืืื ืื.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletHTTP) -- ืื AppletHTTP ืืืืชื
AppletHTTP.getline(applet)
ืคืื ืงืฆืื ืื ืืืืืจื ืืืจืืืช ืืืืืื ืฉืืจื ืืืช ืืืืฃ http. ืื ืื ืชืื ืื
ืืืืืืจ ืืื ื ืืืื '\n' ืกืืคื ืฉืืื ืืื ืื ืฉืื ืืืฉืจ ืื ืชืื ืื ืืืืื ืื ืืืืจืื ืื ืฉืื
ืืคื ื ืกืืฃ ืืืจื.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletHTTP) -- ืื AppletHTTP ืืืืชื
ืืืืจืื
ืืืจืืืช. ืืืืจืืืช ืืืืื ืืืืืช ืจืืงื ืื ื ืืืข ืืกืืฃ ืืืจื.
AppletHTTP.receive(applet[, ืืืื])
ืงืืจื ื ืชืื ืื ืืืืฃ ื-HTTP, ืืืชืื ืืงืจืืื ืฉืฆืืื ื ืืืื. ืื ืืืื is
ืืกืจ, ืืคืื ืงืฆืื ืื ืกื ืืงืจืื ืืช ืื ืชืืื ืืืจื ืขื ืืกืืฃ. ืื
ืื ืืื ืืืื ืืืื ืืืชืจ ืืืืฃ http, ืืื ืืืืืจ ืืช ืืืืช ืื ืชืื ืื ืืืืื ื.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletHTTP) -- ืื AppletHTTP ืืืืชื
ยท ืืืื (ืืกืคืจ ืฉืื) -- ืืืื ืืงืจืืื ืื ืืจืฉ.
ืืืืจืื
ืชืืื ืชืืืืจ ืืืจืืืช, ืืืืจืืืช ืืืืื ืืืืืช ืจืืงื ืื ืืืืืืจ ืกืืืจ.
AppletHTTP.send(applet, msg)
ืืฉืืื ืืช ืืืืืขื msg ืืืืฃ ืืืงืฉื http.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletHTTP) -- ืื AppletHTTP ืืืืชื
ยท msg (ืืืจืืืช) -- ืืืืืขื ืฉืืฉ ืืฉืืื.
ืืืืชื AppletTCP()
ืืืืงื ืื ืืฉืืฉืช ืขื ืืืฉืืืื ืื ืืืืจืฉืื ืืฆื 'tcp'. ืืืฉืืืื tcp ืืืื ืืืืืช
ืจืฉืื ื- core.register_service() ืคืึผื ืงืฆึดืึธื. ืื ืืฉืืฉืื ืืขืืืื
ืืจื tcp ืืื ืฉืจืช ืืืืง ืืืืืจื ืฉื HAProxy.
AppletTCP.c
ืืืืจืื
A ืืืืจืื ืืืืชื
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Converters.
AppletTCP.sc
ืืืืจืื
A ืืืืจืื ืืืืชื
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Converters. ืืคืื ืงืฆืืืช ืฉื ืืืืืืงื ืื
ืืืืืจ ืชืืื ืืืจืืืช.
AppletTCP.f
ืืืืจืื
A ืืืื ืืืืชื
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Fetches.
AppletTCP.sf
ืืืืจืื
A ืืืื ืืืืชื
ืชืืื ื ืื ืืืืื ืืืืืืงื ืืืืงื Fetches.
AppletTCP.getline(applet)
ืคืื ืงืฆืื ืื ืืืืืจื ืืืจืืืช ืืืืืื ืฉืืจื ืืืช ืืืืจื. ืื ืื ืชืื ืื
ืืืืืืจ ืืื ื ืืืื '\n' ืกืืคื ืฉืืื ืืื ืื ืฉืื ืืืฉืจ ืื ืชืื ืื ืืืืื ืื ืืืืจืื ืื ืฉืื
ืืคื ื ืกืืฃ ืืืจื.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletTCP) -- ืื AppletTCP ืืืืชื
ืืืืจืื
ืืืจืืืช. ืืืืจืืืช ืืืืื ืืืืืช ืจืืงื ืื ื ืืืข ืืกืืฃ ืืืจื.
AppletTCP.receive(applet[, ืืืื])
ืงืืจื ื ืชืื ืื ืืืจื TCP, ืืืชืื ืืงืจืืื ืฉืฆืืื ื ืืืื. ืื ืืืื
ืืกืจ, ืืคืื ืงืฆืื ืื ืกื ืืงืจืื ืืช ืื ืชืืื ืืืจื ืขื ืืกืืฃ.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletTCP) -- ืื AppletTCP ืืืืชื
ยท ืืืื (ืืกืคืจ ืฉืื) -- ืืืื ืืงืจืืื ืื ืืจืฉ.
ืืืืจืื
ืชืืื ืชืืืืจ ืืืจืืืช, ืืืืจืืืช ืืืืื ืืืืืช ืจืืงื ืื ืืืืืืจ ืกืืืจ.
AppletTCP.send(appletmsg)
ืฉืื ืืช ืืืืืขื ืืืจื.
ืืืขืื ืื
ยท ืืืืฉืืืื (class_AppletTCP) -- ืื AppletTCP ืืืืชื
ยท msg (ืืืจืืืช) -- ืืืืืขื ืฉืืฉ ืืฉืืื.
ื ืืชื ืืืฆืื ืืจืื ืกืคืจืืืช lua ืฉืืืืฉืืืช ืืื:
ยท https://lua-toolbox.com/
ืืืฉื Redis:
ยท https://github.com/nrk/redis-lua
ืืืื ืืืืื ืืืื ืืฉืืืืฉ ืืกืคืจืืืช Redis ืขื HAProxy. ืฉืืื ืื ืฉืื ืฉืืื
ืฉื ืื ืคืื ืงืฆืื ืฉื ืกืคืจืืื ืื ืืืื ืืืจืืง ืฉืืืื ืื โโืืืืืจ ืืฉืงืข ื ืืฉื.
-- ืืขื ืืช ืกืคืจืืืช redis
local redis = require("redis");
function do_something(txn)
- ืฆืืจ ืืืืจ ืฉืงืข tcp ืืืฉ
ืืงืืื tcp = core.tcp();
tcp:ืงืืืขืช ืคืกืง ืืื(1);
tcp:connect("127.0.0.1", 6379);
-- ืืฉืชืืฉ ืืกืคืจืืืช redis ืขื ืืฉืงืข ืืืืฉ ืืื
ืืงืื ืืงืืื = redis.connect({socket=tcp});
client:ping();
ืกืืฃ
OpenSSL:
ยท http://mkottman.github.io/luacrypto/index.html
ยท https://github.com/brunoos/luasec/wiki
ืืฉืชืืฉ ื-haproxy-lua ืืืื ืืจื ื ืืืืฆืขืืช ืฉืืจืืชื onworks.net