англійськафранцузькаіспанська

Ad


Значок OnWorks

haproxy-lua - онлайн у хмарі

Запустіть haproxy-lua у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда haproxy-lua, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн- емулятор Windows або онлайн-емулятор MAC OS

ПРОГРАМА:

ІМ'Я


haproxy-lua - документація haproxy-lua

ГАПРОКСИ LUA РУНІНГ КОНТЕКСТИ


Код Lua, що виконується в HAProxy, може оброблятися в 2 основних режимах. Перший з них
ініціалізація режим, а другий є час виконання режим.

· В ініціалізація режим, ми можемо виконувати рішення DNS, але не можемо виконувати ввод-вивод через сокет.
У цьому режимі ініціалізації HAProxy все ще блокується під час виконання Lua
програми.

· В час виконання режим, ми не можемо виконувати рішення DNS, але можемо використовувати сокети. The
виконання коду Lua мультиплексується з обробкою запитів, тому код Lua
ніби запущено в блокуванні, але це не так.

Код Lua завантажується в один або кілька файлів. Ці файли містять основний код і функції.
Lua має 6 контекстів виконання.

1. Файл Lua тіло контекст. Він виконується під час завантаження файлу Lua у файлі
HAProxy [глобальний] розділ з директивою lua-завантаження. Виконується при ініціалізації
режим. Цей розділ використовується для налаштування прив’язок Lua в HAProxy.

2. Lua ініціалізації контекст. Це функція Lua, яка виконується відразу після HAProxy
розбір конфігурації. Виконання відбувається в режимі ініціалізації. У цьому контексті
Середовище HAProxy вже ініціалізовано. Корисно перевірити конфігурацію, або
ініціалізація з'єднань або завдань сокетів. Ці функції декларуються в організмі
контекст з функцією Lua core.register_init(). Прототипом функції є a
проста функція без повертається значення і без параметрів, наприклад: функція fcn().

3. Lua завдання контекст. Це функція Lua, яка виконується після запуску HAProxy
планувальник, і відразу після оголошення завдання з функцією Lua
core.register_task(). Цей контекст може бути одночасно з обробкою трафіку. це є
виконується в режимі виконання. Прототипом функції є проста функція без неї
повертає значення і без параметрів, наприклад: функція fcn().

4. дію контекст. Це умовно виконувана функція Lua. Ці дії є
зареєстровано директивами Lua "core.register_action()Прототип Lua
звана функція - це функція, яка нічого не повертає і яка приймає об'єкт
клас TXN як запис. функція fcn(txn).

5. вибірка зразка контекст. Ця функція приймає об’єкт TXN як аргумент входу та
повертає рядок. Ці типи функцій не можуть виконувати жодну функцію блокування. Вони
корисні для агрегації деяких оригінальних вибірок HAProxy і повернення результату.
Прототипом функції є функція рядок fcn(txn). Ці функції можуть бути
зареєстровані за допомогою функції Lua core.register_fetches(). Кожна оголошена вибірка вибірки є
з префіксом рядка "lua.".

ПРИМІТКА: Можливо, ця функція не може знайти потрібні дані в оригіналі
HAProxy отримує вибірку, у цьому випадку він не може повернути результат. Цього випадку ще немає
підтриманий

6. перетворювач контекст. Це функція Lua, яка приймає рядок як вхідні дані і повертає
інший рядок як вихід. Ці типи функцій не мають статусу, вони не можуть отримати доступ
будь-який контекст. Вони не виконують жодної функції блокування. Прототип виклику функція
рядок fcn (рядок). Цю функцію можна зареєструвати за допомогою функції Lua
core.register_converters(). Кожен оголошений перетворювач має префікс рядка "lua.".

ГАПРОКСИ LUA HELLO СВІТ


Файл конфігурації HAProxy (hello_world.conf):

в цілому
lua-завантаження 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)
applet:send("привіт, світ\n")
кінець)

Як запустити HAProxy для тестування цієї конфігурації:

./haproxy -f hello_world.conf

На іншому терміналі ви можете перевірити за допомогою telnet:

№:~ telnet 127.0.0.1 10001
привіт світ

клас ядро()
Клас "core" містить усі основні функції HAProxy. Ці функції корисні
для управління потоком виконання, реєстрації хуків, маніпулювання глобальними картами
або ACL, ...

"core" клас в основному надається разом із HAProxy. Немає вимагати рядок потрібно
використовує ці функції.

Клас «ядро» є статичним, створити новий об’єкт такого типу неможливо.

core.emerg

Повернення
ціле

Цей атрибут є цілим числом, він містить значення рівня журналу "надзвичайна ситуація"
(0).

core.alert

Повернення
ціле

Цей атрибут є цілим числом, він містить значення «попередження» (1) рівня журналу.

core.crit

Повернення
ціле

Цей атрибут є цілим числом, він містить значення рівня log «critical» (2).

core.err

Повернення
ціле

Цей атрибут є цілим числом, він містить значення «помилки» (3) рівня журналу.

core.warning

Повернення
ціле

Цей атрибут є цілим числом, він містить значення «попередження» (4) рівня журналу.

core.notice

Повернення
ціле

Цей атрибут є цілим числом, він містить значення «повідомлення» (5) рівня журналу.

core.info

Повернення
ціле

Цей атрибут є цілим числом, він містить значення рівня журналу «info» (6).

core.debug

Повернення
ціле

Цей атрибут є цілим числом, він містить значення рівня журналу "debug" (7).

core.log(loglevel, повідомлення)
контекст: тіло, ініціалізація, завдання, дія, вибірка зразка, конвертер

Ця функція надсилає журнал. Журнал надсилається відповідно до HAProxy
конфігураційному файлі на сервері системного журналу за замовчуванням, якщо він налаштований, і на
stderr, якщо це дозволено.

Аргументи

· LogLevel (ціле) -- Це рівень журналу, пов’язаний із повідомленням. Це
число від 0 до 7.

· MSG (рядок) -- Вміст журналу.

Читати core.emerge, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (визначення рівня журналу)

Читати код.Налагодження

Читати core.Info

Читати ядро. Попередження

Читати core.Alert

core.Debug(повідомлення)
контекст: тіло, ініціалізація, завдання, дія, вибірка зразка, конвертер

Аргументи

· MSG (рядок) -- Вміст журналу.

Читати журнал

Виконує таку саму роботу, ніж:

функція Debug(повідомлення)
core.log(core.debug, msg)
кінець

core.Info(повідомлення)
контекст: тіло, ініціалізація, завдання, дія, вибірка зразка, конвертер

Аргументи

· MSG (рядок) -- Вміст журналу.

Читати журнал

функція інформація(повідомлення)
core.log(core.info, повідомлення)
кінець

ядро. Попередження(повідомлення)
контекст: тіло, ініціалізація, завдання, дія, вибірка зразка, конвертер

Аргументи

· MSG (рядок) -- Вміст журналу.

Читати журнал

функція попередження(повідомлення)
core.log(core.warning, msg)
кінець

core.Alert(повідомлення)
контекст: тіло, ініціалізація, завдання, дія, вибірка зразка, конвертер

Аргументи

· MSG (рядок) -- Вміст журналу.

Читати журнал

функція Оповіщення(повідомлення)
core.log(core.alert, msg)
кінець

core.add_acl(ім'я файлу, ключ)
контекст: init, task, action, sample-fetch, converter

Додайте ACL ключ у списку ACL, на який посилається файл ім'я файлу.

Аргументи

· ім'я файлу (рядок) -- ім'я файлу, яке посилається на записи ACL.

· ключ (рядок) -- ключ, який буде додано.

core.del_acl(ім'я файлу, ключ)
контекст: init, task, action, sample-fetch, converter

Видаліть запис ACL, на який посилається ключ ключ у списку списків керування доступом, на які посилається
ім'я файлу.

Аргументи

· ім'я файлу (рядок) -- ім'я файлу, яке посилається на записи ACL.

· ключ (рядок) -- ключ, який буде видалено.

core.del_map(ім'я файлу, ключ)
контекст: init, task, action, sample-fetch, converter

Видалити запис карти, проіндексований зазначеним ключем, у списку карт, на які посилаються
за його ім'ям файлу.

Аргументи

· ім'я файлу (рядок) -- ім'я файлу, що посилається на записи карти.

· ключ (рядок) -- ключ, який буде видалено.

core.msleep(мілісекунди)
контекст: тіло, ініціал, завдання, дія

Команда core.msleep() зупиняє виконання Lua між вказаними мілісекундами.

Аргументи

· мілісекунд (ціле) -- необхідні мілісекунди.

core.register_action(назва, дії, функція)
контекст: тіло

Зареєструйте функцію Lua, що виконується як дію. Можна використовувати всі зареєстровані дії
у HAProxy з префіксом "lua.". Дія отримує клас об’єкта TXN як вхідні дані.

Аргументи

· ім'я (рядок) -- це назва перетворювача.

· дії (таблиця) -- це таблиця рядків, що описують дії HAProxy who
хочу зареєструватися. Очікувані дії: tcp-req, tcp-res,
'http-req' або 'http-res'.

· функц (функція) -- це функція Lua, викликана для роботи як конвертер.

Прототип функції Lua, яка використовується як аргумент:

функція (txn)

·

txn (TXN клас): це is a TXN об'єкт використовуваний та цінності маніпулювання
поточний запит або потік TCP.

Ось зразок реєстрації дії. дія Juste надіслати 'Hello world' в
журнали.

core.register_action("hello-world", { "tcp-req", "http-req" }, function(txn)
txn:Info("Привіт, світ")
кінець)
Цей приклад коду використовується в конфігурації HAproxy таким чином:

фронтенд tcp_frt
режим tcp
tcp-request content lua.hello-world

інтерфейс http_frt
режим http
http-запит lua.hello-world

core.register_converters(назва, функція)
контекст: тіло

Зареєструйте функцію Lua, яка виконується як конвертер. Усі зареєстровані перетворювачі можуть бути
використовується в HAProxy з префіксом "lua.". Конвертер отримує рядок як вхідні дані і
повернути рядок як вихід. Зареєстрована функція може приймати до 9 значень як
параметр. Усі значення є рядками.

Аргументи

· ім'я (рядок) -- це назва перетворювача.

· функц (функція) -- це функція Lua, викликана для роботи як конвертер.

Прототип функції Lua, яка використовується як аргумент:

функція(str, [p1 [, p2 [, ... [, p5]]]])

· вул (рядок): це вхідне значення, автоматично перетворене в рядок.

· p1 .. p5 (рядок): це список рядкових аргументів, оголошених у haroxy
файл конфігурації. Кількість аргументів не перевищує 5. Порядок і
Природу їх умовно вибирає розробник.

core.register_fetches(ім'я, функція)
контекст: тіло

Зареєструйте функцію Lua, яка виконується як вибірка зразка. Усі зареєстровані вибірки зразків
можна використовувати в HAProxy з префіксом "lua.". Зразок вибірки Lua повертає рядок
як вихід. Зареєстрована функція може приймати до 9 значень як параметр. Всі
значення - це рядки.

Аргументи

· ім'я (рядок) -- це назва перетворювача.

· функц (функція) -- це функція Lua, яка викликається як вибірка зразка.

Прототип функції Lua, яка використовується як аргумент:

рядкова функція (txn, [p1 [, p2 [, ... [, p5]]]])

· txn (TXN клас): це об'єкт txn, пов'язаний з поточним запитом.

· p1 .. p5 (рядок): це список рядкових аргументів, оголошених у haroxy
файл конфігурації. Кількість аргументів не перевищує 5. Порядок і
Природу їх умовно вибирає розробник.

· Повернення: рядок, що містить деякі дані, або нуль, якщо значення не може бути повернуто зараз.

приклад коду lua:

core.register_fetches("привіт", function(txn)
повернути "привіт"
кінець)
Приклад конфігурації HAProxy:

приклад інтерфейсу
Місцезнаходження переспрямування http-запиту /%[lua.hello]

core.register_service(назва, режим, функція)
контекст: тіло

Зареєструйте функцію Lua, яка виконується як сервіс. Усі зареєстровані служби можуть бути
використовується в HAProxy з префіксом "lua.". Служба отримує клас об’єкта як вхідні дані
відповідно до необхідного режиму.

Аргументи

· ім'я (рядок) -- це назва перетворювача.

· режим (рядок) -- це рядок, що описує необхідний режим. Тільки 'tcp' або
"http" дозволено.

· функц (функція) -- це функція Lua, викликана для роботи як конвертер.

Прототип функції Lua, яка використовується як аргумент:

функція (аплет)

· аплет аплет буде a AppletTCP клас або AppletHTTP клас. Це залежить від типу
зареєстрованого аплету. Аплет, зареєстрований зі значенням 'http' для режим
параметр отримає a AppletHTTP клас, Якщо режим значення 'tcp', аплет буде
отримує AppletTCP клас.

попередження: Аплети типу 'http' не можуть бути викликані з 'tcp-' набори правил. Only 'http-'
набори правил авторизовані, це означає, що неможливо викликати HTTP-аплет з a
проксі в режимі tcp. Аплети типу 'tcp' можна викликати з будь-якого місця.

Ось зразок реєстрації служби. служба просто надсилає повідомлення "Hello world" як
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")
аплет:start_response()
аплет: відправити (відповідь)
кінець)
Цей приклад коду використовується в конфігурації HAproxy таким чином:

приклад інтерфейсу
http-запит використання служби lua.hello-world

core.register_init(func)
контекст: тіло

Зареєструйте функцію, яка виконується після аналізу конфігурації. Це корисно для
перевірити будь-які параметри.

Аргументи

· функц (функція) -- це функція Lua, яка викликається як ініціалізатор.

Прототип функції Lua, яка використовується як аргумент:

функція()
Він не потребує введення, і не очікується результатів.

core.register_task(func)
контекст: тіло, ініціалізація, завдання, дія, вибірка зразка, конвертер

Зареєструйтеся та розпочніть самостійне завдання. Завдання запускається, коли HAProxy main
запускається планувальник. Наприклад, цей тип завдань можна виконувати для виконання складних
перевірки здоров'я.

Аргументи

· функц (функція) -- це функція Lua, яка викликається як ініціалізатор.

Прототип функції Lua, яка використовується як аргумент:

функція()
Він не потребує введення, і не очікується результатів.

core.set_nice(приємно)
контекст: завдання, дія, вибірка зразка, конвертер

Змініть перевагу поточного завдання або поточного сеансу.

Аргументи

· приємно (ціле) -- гарне значення, воно має бути між -1024 та 1024.

core.set_map(ім'я файлу, ключ значення)
контекст: init, task, action, sample-fetch, converter

встановити значення значення пов'язаний з ключем ключ на карті, на яку посилається ім'я файлу.

Аргументи

· ім'я файлу (рядок) -- посилання на карту

· ключ (рядок) -- ключ для встановлення або заміни

· значення (рядок) -- пов'язане значення

core.sleep(int секунд)
контекст: тіло, ініціал, завдання, дія

Команда core.sleep() функції зупиняють виконання Lua між зазначеними секундами.

Аргументи

· seconds (ціле) -- необхідні секунди.

core.tcp()
контекст: ініціал, завдання, дія

Ця функція повертає новий об’єкт a розетка клас.

Повернення
A Розетка клас об'єкт

core.done(дані)
контекст: тіло, ініціалізація, завдання, дія, вибірка зразка, конвертер

Аргументи

· дані (будь-який) -- Повернути деякі дані для абонента. Це корисно з
вибірки зразків і перетворювачі зразків.

Негайно зупиняє поточне виконання Lua і повертається до абонента, який може бути
вибірку зразка, перетворювач або дію і повертає вказане значення (ігнорується
за дії). Використовується, коли процес LUA закінчує свою роботу і хоче віддати
повернути елемент керування до HAProxy без виконання коду, що залишився. Це можна розглядати як
багаторівневий «повернення».

core.yield()
контекст: завдання, дія, вибірка зразка, конвертер

Поверніть руку планувальнику HAProxy. Використовується при обробці LUA
займає багато часу на обробку.

клас Збирає()
Цей клас містить багато внутрішніх вибірок зразків HAProxy. Дивіться HAProxy
"configuration.txt" документації для отримання додаткової інформації про її використання. вони є
розділи 7.3.2 - 7.3.6.

попередження деякі вибірки зразків недоступні в певному контексті. Ці обмеження
зазначені в цій документації, коли вони корисні.

Читати TXN.f

Читати TXN.sf

Збірки корисні для:

· отримати системний час,

· отримати змінну середовища,

· отримати випадкові числа,

· відомий статус сервера, як-от кількість користувачів у черзі або кількість
встановлені зв'язки,

· інформація про клієнта, наприклад джерело або призначення IP-адреси,

· мати справу з паличками,

· Встановлена ​​інформація SSL,

· Інформація HTTP, як-от заголовки або методи.

функція дія (txn)
-- Отримати вихідний IP
локальний clientip = txn.f:src()
кінець

клас Конвертери()
Цей клас містить багато внутрішніх перетворювачів зразків HAProxy. Дивіться HAProxy
документація "configuration.txt" для отримання додаткової інформації про її використання. Його
розділ 7.3.1.

Читати TXN.c

Читати TXN.sc

Конвертери забезпечують повне перетворення. Вони корисні для:

· перетворення введення в base64,

· застосування хешування до вхідного рядка (djb2, crc32, sdbm, wt6),

· формат дати,

· json escape,

· виділення бажаної мови з порівнянням двох списків,

· перейти до нижніх або верхніх символів,

· мати справу з таблицями-палками.

клас канал()
HAProxy використовує два буфери для обробки запитів. Використовується перший
з даними запиту (від клієнта до сервера), а другий використовується для
дані відповіді (від сервера до клієнта).

Кожен буфер містить два типи даних. Перший тип – це очікування вхідних даних
для обробки. Друга частина – це вихідні дані, які вже оброблені. Зазвичай,
вхідні дані обробляються, після того, як вони позначаються як вихідні дані, і, нарешті, вони
надсилається. Наступні функції надають інструменти для маніпулювання цими даними в a
буфера.

На наступній діаграмі показано, де застосовується функція класу каналу.

попередження: Неможливо прочитати відповідь у дії запиту, і це є
неможливо прочитати для каналу запиту в дії відповіді.
[картина]

Channel.dup(канал)
Ця функція повертає рядок, який містить весь буфер. Даних немає
видалити з буфера і пізніше можна буде повторно обробити.

Якщо буфер не може отримати більше даних, повертається значення 'nil'.

Аргументи

· канал (class_channel) -- Канал, яким маніпулювали.

Повернення
рядок, що містить усі доступні дані, або нуль.

Channel.get(канал)
Ця функція повертає рядок, який містить весь буфер. Дані споживаються
з буфера.

Якщо буфер не може отримати більше даних, повертається значення 'nil'.

Аргументи

· канал (class_channel) -- Канал, яким маніпулювали.

Повернення
рядок, що містить усі доступні дані, або нуль.

Channel.getline(канал)
Ця функція повертає рядок, який містить перший рядок буфера. Дані
споживається. Якщо дані, що повертаються, не містять кінцевого 'n', вважається, що це значення
останні доступні дані в буфері.

Якщо буфер не може отримати більше даних, повертається значення 'nil'.

Аргументи

· канал (class_channel) -- Канал, яким маніпулювали.

Повернення
рядок, що містить доступний рядок або нуль.

Channel.set(канал, рядок)
Ця функція замінює вміст буфера на рядок. Функція повертає
скопійовану довжину, інакше він повертає -1.

Набір даних з цією функцією не надсилається. Вони чекають кінця HAProxy
обробки, тому буфер може бути заповнений.

Аргументи

· канал (class_channel) -- Канал, яким маніпулювали.

· рядок (рядок) -- Дані, які будуть надіслані.

Повернення
ціле число, що містить кількість скопійованих байтів або -1.

Channel.append(канал, рядок)
Ця функція додає рядковий аргумент до вмісту буфера. Функція
повертає скопійовану довжину, інакше повертає -1.

Набір даних з цією функцією не надсилається. Вони чекають кінця HAProxy
обробки, тому буфер може бути заповнений.

Аргументи

· канал (class_channel) -- Канал, яким маніпулювали.

· рядок (рядок) -- Дані, які будуть надіслані.

Повернення
ціле число, що містить кількість скопійованих байтів або -1.

Channel.send(канал, рядок)
Ця функція вимагала негайної відправки даних. Хіба що з’єднання є
close, буфер регулярно очищується, і весь рядок можна відправити.

Аргументи

· канал (class_channel) -- Канал, яким маніпулювали.

· рядок (рядок) -- Дані, які будуть надіслані.

Повернення
ціле число, що містить кількість скопійованих байтів або -1.

Channel.get_in_length(канал)
Ця функція повертає довжину вхідної частини буфера.

Аргументи

· канал (class_channel) -- Канал, яким маніпулювали.

Повернення
ціле число, що містить кількість доступних байтів.

Channel.get_out_length(канал)
Ця функція повертає довжину вихідної частини буфера.

Аргументи

· канал (class_channel) -- Канал, яким маніпулювали.

Повернення
ціле число, що містить кількість доступних байтів.

Channel.forward(канал, 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] = "аудіо/основний q=1"
hdr["accept"][1] = "аудіо/*, 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] = "аудіо/основний q=1"
hdr["accept"][1] = "аудіо/*, q=0.2"
hdr["accept"][2] = "*.*, q=0.1"

HTTP.req_add_header(http, ім'я, значення)
Додає до запиту поле заголовка HTTP, ім'я якого вказано в "name" і
значення якого визначено у «значення».

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

· значення (рядок) -- Значення заголовка.

Читати HTTP.res_add_header()

HTTP.res_add_header(http, ім'я, значення)
додає у відповідь поле заголовка HTTP, ім’я якого вказано в «name» і
значення якого визначено у «значення».

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

· значення (рядок) -- Значення заголовка.

Читати HTTP.req_add_header()

HTTP.req_del_header(http, ім'я)
Видаляє всі поля заголовка HTTP у запиті, ім’я яких вказано в «name».

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

Читати HTTP.res_del_header()

HTTP.res_del_header(http, ім'я)
Видаляє всі поля заголовка HTTP у відповіді, ім'я яких вказано в "name".

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

Читати HTTP.req_del_header()

HTTP.req_set_header(http, ім'я, значення)
Ця змінна замінює всі входження всього заголовка "name" лише одним, що містить
значення".

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

· значення (рядок) -- Значення заголовка.

Читати HTTP.res_set_header()

Ця функція виконує таку ж роботу, як і наступний код:

функція fcn(txn)
TXN.http:req_del_header("заголовок")
TXN.http:req_add_header("заголовок", "значення")
кінець

HTTP.res_set_header(http, ім'я, значення)
Ця змінна замінює всі входження всього заголовка "name" лише одним, що містить
значення".

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

· значення (рядок) -- Значення заголовка.

Читати HTTP.req_rep_header()

HTTP.req_rep_header(http, ім'я, регулярний вираз, замінити)
Збігається з регулярним виразом у всіх входженнях поля заголовка "name" відповідно
на "регулярний вираз" і замінює їх аргументом "replace". Вартість заміни
може містити зворотні посилання, такі як 1, 2, ... Ця функція працює із запитом.

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

· regex (рядок) -- Відповідний регулярний вираз.

· замінювати (рядок) -- Значення заміни.

Читати HTTP.res_rep_header()

HTTP.res_rep_header(http, ім'я, регулярний вираз, рядок)
Збігається з регулярним виразом у всіх входженнях поля заголовка "name" відповідно
на "регулярний вираз" і замінює їх аргументом "replace". Вартість заміни
може містити зворотні посилання, такі як 1, 2, ... Ця функція працює із запитом.

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

· regex (рядок) -- Відповідний регулярний вираз.

· замінювати (рядок) -- Значення заміни.

Читати HTTP.req_replace_header()

HTTP.req_replace_value(http, ім'я, регулярний вираз, замінити)
Працює як "HTTP.req_replace_header()", за винятком того, що він відповідає регулярному виразу
кожне розділене комами значення поля заголовка "name" замість цілого
заголовка.

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· ім'я (рядок) -- Назва заголовка.

· regex (рядок) -- Відповідний регулярний вираз.

· замінювати (рядок) -- Значення заміни.

Читати HTTP.req_replace_header()

Читати HTTP.res_replace_value()

HTTP.res_replace_value(http, ім'я, регулярний вираз, замінити)
Працює як "HTTP.res_replace_header()", за винятком того, що відповідає регулярному виразу
кожне розділене комами значення поля заголовка "name" замість цілого
заголовка.

Аргументи

· 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, шлях)
Переписує шлях запиту з параметром "path".

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· шлях (рядок) -- Новий шлях.

HTTP.req_set_query(http, запит)
Переписує рядок запиту, який з’являється після першого знака питання
("?") з параметром "запит".

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· запит (рядок) -- Новий запит.

HTTP.req_set_uri(http, урі)
Переписує URI запиту з параметром "uri".

Аргументи

· HTTP (class_http) -- Пов'язаний об'єкт http.

· з (рядок) -- Новий uri.

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.запит

Повернення
An Канал клас.

Цей атрибут містить об’єкт класу каналу для буфера запиту.

TXN.res

Повернення
An Канал клас.

Цей атрибут містить об’єкт класу каналу для буфера відповіді.

TXN.http

Повернення
An HTTP клас.

Цей атрибут містить об’єкт класу HTTP. Він доступний лише за наявності проксі
увімкнено "режим http".

TXN.log(TXN, рівень журналу, повідомлення)
Ця функція надсилає журнал. Журнал надсилається відповідно до HAProxy
конфігураційному файлі на сервері системного журналу за замовчуванням, якщо він налаштований, і на
stderr, якщо це дозволено.

Аргументи

· txn (class_txn) -- Об'єкт класу txn, що містить дані.

· LogLevel (ціле) -- Це рівень журналу, пов’язаний із повідомленням. Це
число від 0 до 7.

· MSG (рядок) -- Вміст журналу.

Читати core.emerge, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (визначення рівня журналу)

Читати TXN.deflog

Читати TXN.Debug

Читати TXN.Інфо

Читати TXN. Попередження

Читати TXN.Alert

TXN.deflog(TXN, повідомлення)
Надсилає рядок журналу з рівнем журналу за замовчуванням для проксі, пов’язаного з
транзакція.

Аргументи

· txn (class_txn) -- Об'єкт класу txn, що містить дані.

· MSG (рядок) -- Вміст журналу.

Читати TXN.log

TXN.Debug(txn, повідомлення)

Аргументи

· txn (class_txn) -- Об'єкт класу txn, що містить дані.

· MSG (рядок) -- Вміст журналу.

Читати TXN.log

Виконує таку саму роботу, ніж:

функція Debug(txn, msg)
TXN.log(txn, core.debug, msg)
кінець

TXN.Info(txn, повідомлення)

Аргументи

· txn (class_txn) -- Об'єкт класу txn, що містить дані.

· MSG (рядок) -- Вміст журналу.

Читати TXN.log

функція Debug(txn, msg)
TXN.log(txn, core.info, msg)
кінець

TXN.Попередження(txn, повідомлення)

Аргументи

· txn (class_txn) -- Об'єкт класу txn, що містить дані.

· MSG (рядок) -- Вміст журналу.

Читати TXN.log

функція Debug(txn, msg)
TXN.log(txn, core.warning, msg)
кінець

TXN.Alert(txn, повідомлення)

Аргументи

· txn (class_txn) -- Об'єкт класу txn, що містить дані.

· MSG (рядок) -- Вміст журналу.

Читати TXN.log

функція 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, вар)
Повертає дані, збережені в конвертері змінних у типі 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, що містить дані.

· LogLevel (ціле) -- Необхідний рівень журналу. Ця змінна може бути однією з

Читати ядро.

TXN.set_tos(txn, до)
Використовується для встановлення значення поля TOS або DSCP пакетів, надісланих клієнту до
значення, передане в "tos" на платформах, які підтримують це.

Аргументи

· txn (class_txn) -- Об'єкт класу txn, що містить дані.

· малюк (ціле) -- Нові TOS os DSCP.

TXN.set_mark(txn, позначка)
Використовується для встановлення значення позначки Netfilter для всіх пакетів, надісланих клієнту
передається в «помітку» на платформах, які його підтримують.

Аргументи

· txn (class_txn) -- Об'єкт класу txn, що містить дані.

· позначити (ціле) -- Значення позначки.

клас Socket()
Цей клас повинен бути сумісним з класом Lua Socket. тільки "клієнт"
доступні функції. Дивіться документацію Lua Socket:

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

Socket.close(розетка)
Закриває об’єкт TCP. Внутрішній сокет, який використовується об’єктом, є закритим і локальним
адреса, до якої був прив’язаний об’єкт, стає доступною для інших програм. Немає
подальші операції (крім подальших викликів методу close) дозволені на a
закритий сокет.

Аргументи

· розетка (class_socket) -- Це маніпульований сокет.

Примітка: важливо закрити всі використані сокети, коли вони не потрібні, оскільки в
У багатьох системах кожен сокет використовує дескриптор файлу, який обмежений системою
ресурсів. Об'єкти, що збирають сміття, автоматично закриваються перед знищенням,
хоча.

Socket.connect(розетка, адреса[, порт])
Спроби підключити об’єкт сокета до віддаленого хоста.

У разі помилки метод повертає nil, а потім рядок, що описує помилку.
У разі успіху метод повертає 1.

Аргументи

· розетка (class_socket) -- Це маніпульований сокет.

· адреса (рядок) -- може бути IP-адресою або ім'ям хоста. Дивіться нижче
більше інформації.

· порт (ціле) -- має бути цілим числом у діапазоні [1..64K].

Повернення
1 або нуль.

розширення поля адреси дозволяє використовувати функцію connect() для підключення
інший потік, ніж TCP. Синтаксис, що містить адресу simpleipv4 або ipv6, є
в основному очікуваний формат. Для цього формату потрібен порт.

Іншим прийнятним форматом є шлях до сокета, наприклад "/socket/path", він дозволяє підключатися
до розетки. абстрактні простори імен підтримуються з префіксом "abns@", і нарешті
опис файлу можна передати з префіксом "fd@". Префікс "ipv4@", "ipv6@"
і "unix@" також підтримуються. Порт можна передати в рядок. Синтаксис
"127.0.0.1:1234" дійсний. в даному випадку параметр порт ігнорується.

Socket.connect_ssl(сокет, адреса, порт)
Така ж поведінка, як і функція socket:connect, але використовує SSL.

Аргументи

· розетка (class_socket) -- Це маніпульований сокет.

Повернення
1 або нуль.

Socket.getpeername(сокет)
Повертає інформацію про віддалену сторону підключеного клієнтського об’єкта.

Повертає рядок з IP-адресою однорангового партнера, за яким слідує номер порту
одноранговий пристрій використовує для підключення. У разі помилки метод повертає нуль.

Аргументи

· розетка (class_socket) -- Це маніпульований сокет.

Повернення
рядок, що містить інформацію про сервер.

Socket.getsockname(сокет)
Повертає інформацію про локальну адресу, пов’язану з об’єктом.

Метод повертає рядок з локальною IP-адресою та числом із портом. в
у випадку помилки метод повертає нуль.

Аргументи

· розетка (class_socket) -- Це маніпульований сокет.

Повернення
рядок, що містить інформацію про клієнта.

Socket.receive(socket[, візерунок[, префікс]])
Зчитує дані з клієнтського об’єкта відповідно до вказаного шаблону читання. Візерунки
дотримуйтесь формату введення-виводу файлів Lua і різницю в продуктивності між усіма
візерунки незначні.

Аргументи

· розетка (class_socket) -- Це маніпульований сокет.

· модель (рядок|ціле число) -- Опишіть, що потрібно (див. нижче).

· префікс (рядок) -- рядок, який буде префіксом повернених даних.

Повернення
рядок, що містить необхідні дані або нуль.

Шаблон може бути будь-яким із наступних:

·

`*a`: читає від розетка до зв'язку is closed. Немає
виконується кінцевий переклад;

·

`*l`: читає a лінія of текст від Розетка. Команда лінія is припиняється by a
Символ LF (ASCII 10), перед яким необов'язково стоїть символ CR (ASCII 13).
Символи CR і LF не входять до поверненого рядка. Насправді,
всі символи CR ігноруються шаблоном. Це шаблон за замовчуванням.

·

номер: Причини метод до зчитування a зазначений номер of bytes від
Розетка. Префікс – це необов’язковий рядок, який потрібно з’єднати з початком
будь-яких отриманих даних до повернення.

· порожній: Якщо шаблон залишити порожнім, параметром за замовчуванням є *l.

У разі успіху метод повертає отриманий шаблон. У разі помилки,
метод повертає nil, а потім повідомлення про помилку, яке може бути "закритим" рядком
якщо з'єднання було закрито до завершення передачі або рядка
«тайм-аут» у випадку, якщо під час операції був тайм-аут. Також після помилки
повідомлення, функція повертає частковий результат передачі.

Важлива примітка. Ця функція була серйозно змінена. Раніше він підтримував декілька
шаблони (але я ніколи не бачив, щоб ця функція використовувалася), і тепер вона більше не використовується.
Часткові результати поверталися так само, як і успішні результати. Це
остання функція порушила ідею, що всі функції повинні повертати нуль у разі помилки. Таким чином
це також було змінено.

Socket.send(сокет, дані[, почати[, кінець]])
Відправляє дані через об’єкт клієнта.

Аргументи

· розетка (class_socket) -- Це маніпульований сокет.

· дані (рядок) -- Дані, які будуть надіслані.

· старт (ціле) -- Початкова позиція в буфері даних, які будуть
бути відправлений.

· кінець (ціле) -- Кінцева позиція в буфері даних, яка буде
надісланий.

Повернення
Дивись нижче.

Дані — це рядок, який потрібно надіслати. Необов'язкові аргументи i і j працюють точно так само, як і
стандартна функція string.sub Lua, щоб дозволити вибір підрядка для надсилання.

У разі успіху метод повертає індекс останнього байту в межах [start, end]
що було надіслано. Зауважте, що якщо start дорівнює 1 або його немає, це фактично
загальна кількість надісланих байтів. У разі помилки метод повертає нуль, а потім
повідомлення про помилку, за яким слідує індекс останнього байту в межах [початок, кінець].
був відправлений. Ви можете спробувати ще раз із наступного байта. Помилка
повідомлення можна "закрити", якщо з'єднання було закрито перед передачею
було завершено або рядок 'тайм-аут' у випадку, якщо під час
операції.

Примітка: вихід не буферизований. Для невеликих рядків завжди краще конкатенувати
їх у Lua (з оператором '..') і надішліть результат одним викликом замість
виклик методу кілька разів.

Socket.setoption(розетка, варіант [, значення])
Просто реалізований для сумісності, цей cal нічого не робить.

Socket.settimeout(сокет, значення[, режим])
Змінює значення тайм-ауту для об’єкта. Усі операції введення-виводу блокуються. Це
будь-який виклик методів send, receive та accept блокується на невизначений термін,
до завершення операції. Метод settimeout визначає обмеження на суму
часу, які методи введення-виводу можуть блокувати. Коли час очікування минув, постраждалий
Методи здаються та виходять з ладу з кодом помилки.

Час очікування вказується як параметр значення в секундах.

Режими тайм-ауту реалізовані ботом, єдиний налаштований тайм-аут - це неактивність
час очікування завершення надсилання внутрішнього буфера або очікування отримання даних.

Аргументи

· розетка (class_socket) -- Це маніпульований сокет.

· значення (ціле) -- Значення часу очікування.

клас карта()
Цей клас дозволяє виконувати деякі пошуки в картах HAProxy. Заявлені карти можуть бути
змінено під час виконання через сокет керування HAProxy.

за замовчуванням = "США"

-- Створення та завантаження карти
geo = Map.new("geo.map", Map.ip);

-- Створити нову вибірку, яка повертає країну користувача
core.register_fetches("країна", функція(txn)
локальний src;
місцевий лок;

src = txn.f:fhdr("x-forwarded-for");
if (src == nil), то
src = txn.f:src()
if (src == nil), то
повернути дефолт;
кінець
кінець

-- Виконайте пошук
loc = geo:lookup(src);

if (loc == nil), то
повернути дефолт;
кінець

повернення loc;
кінець);

Map.int
Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Map.ip Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Карта.вул
Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Карта.поч
Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Map.sub
Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Map.dir
Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Map.dom
Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Карта.кінець
Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Map.reg
Дивіться файл HAProxy configuration.txt, розділ «Використання списків керування доступом та отримання зразків»
ans підрозділ «Основи ACL», щоб зрозуміти цей метод відповідності шаблону.

Map.new(файл, метод)
Створює та завантажує карту.

Аргументи

· файл (рядок) -- Це файл, що містить карту.

· метод (ціле) -- Це метод відповідності шаблону карти. Дивіться атрибути
класу Карта.

Повернення
об'єкт класу Map.

Читати Атрибути карти.

Map.lookup(карта, вул.)
Виконайте пошук на карті.

Аргументи

· карта (class_map) -- Це об'єкт класу Map.

· вул (рядок) -- Чи використовується рядок як ключ.

Повернення
рядок, що містить результат або нуль, якщо не збігається.

Map.slookup(карта, вул.)
Виконайте пошук на карті.

Аргументи

· карта (class_map) -- Це об'єкт класу Map.

· вул (рядок) -- Чи використовується рядок як ключ.

Повернення
рядок, що містить результат, або порожній рядок, якщо немає збігу.

клас 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")
аплет:start_response()
аплет: відправити (відповідь)
кінець)

AppletHTTP.c

Повернення
A Перетворювачі клас

Цей атрибут містить об’єкт класу Converters.

AppletHTTP.sc

Повернення
A Перетворювачі клас

Цей атрибут містить об’єкт класу Converters. Функції цього об'єкта
завжди повертає рядок.

AppletHTTP.f

Повернення
A Вибори клас

Цей атрибут містить об’єкт класу Fetches. Зверніть увагу, що виконання аплету
place не може отримати доступ до дійсної транзакції HTTP ядра HAProxy, тому деякий зразок
фекти, пов’язані з залежними від HTTP значеннями (hdr, шлях, ...), недоступні.

AppletHTTP.sf

Повернення
A Вибори клас

Цей атрибут містить об’єкт класу Fetches. Функції цього об'єкта
завжди повертає рядок. Зауважте, що місце виконання аплету не може отримати доступ до a
дійсна транзакція HTTP ядра HAProxy, тому деякі зразки ефектів пов’язані з HTTP
залежні значення (hdr, шлях, ...) недоступні.

AppletHTTP.метод

Повернення
рядок

Метод атрибута повертає рядок, що містить метод HTTP.

AppletHTTP.version

Повернення
рядок

Версія атрибута повертає рядок, що містить версію запиту HTTP.

AppletHTTP.path

Повернення
рядок

Шлях атрибута повертає рядок, що містить шлях запиту HTTP.

AppletHTTP.qs

Повернення
рядок

Атрибут qs повертає рядок, що містить рядок запиту HTTP-запиту.

AppletHTTP.length

Повернення
ціле

Атрибут length повертає ціле число, що містить довжину тіла HTTP.

AppletHTTP.headers

Повернення
масив

Заголовки атрибутів повертають масив, що містить заголовки HTTP. Заголовок
імена завжди пишуться з малої літери. Оскільки ім'я заголовка може зустрічатися більше ніж
один раз у кожному запиті значення індексується 0 як перше значення індексу. Масив
мають таку форму:

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

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

AppletHTTP.headers
Містить масив, що містить усі заголовки запиту.

AppletHTTP.set_status(аплет, код)
Ця функція встановлює код статусу 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(аплет)
Ця функція повертає рядок, що містить один рядок із тіла http. Якщо дані
Повернений не містить кінцевого '\n', він передбачається, ніж останні доступні дані
до кінця потоку.

Аргументи

· аплет (class_AppletHTTP) -- Ан AppletHTTP клас

Повернення
рядок. Рядок може бути порожнім, якщо ми досягнемо кінця потоку.

AppletHTTP.receive(аплет[, розмір])
Зчитує дані з тіла HTTP відповідно до вказаного прочитання розмір, Якщо розмір is
відсутня, функція намагається прочитати весь вміст потоку до кінця. Якщо
розмір більше, ніж тіло http, воно повертає кількість доступних даних.

Аргументи

· аплет (class_AppletHTTP) -- Ан AppletHTTP клас

· розмір (ціле) -- необхідний розмір для читання.

Повернення
завжди повертати рядок, рядок може бути порожнім, якщо з’єднання закрите.

AppletHTTP.send(аплет, повідомлення)
Надіслати повідомлення 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(аплет)
Ця функція повертає рядок, що містить один рядок із потоку. Якщо дані
Повернений не містить кінцевого '\n', він передбачається, ніж останні доступні дані
до кінця потоку.

Аргументи

· аплет (class_AppletTCP) -- Ан AppletTCP клас

Повернення
рядок. Рядок може бути порожнім, якщо ми досягнемо кінця потоку.

AppletTCP.receive(аплет[, розмір])
Зчитує дані з потоку 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
локальний redis = require("redis");

функція do_something(txn)

-- створити та підключити новий сокет tcp
локальний tcp = core.tcp();
tcp:встановити тайм-аут(1);
tcp:connect("127.0.0.1", 6379);

-- використовуйте бібліотеку redis з цим новим сокетом
локальний клієнт = redis.connect({socket=tcp});
клієнт:ping();

кінець

OpenSSL:

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

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

Використовуйте haproxy-lua онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

  • 1
    Zabbix
    Zabbix
    Zabbix є відкритим корпоративним класом
    вихідне розподілене рішення моніторингу
    призначений для моніторингу та відстеження
    продуктивність і доступність мережі
    сервери, пристрій...
    Завантажити Zabbix
  • 2
    KDiff3
    KDiff3
    Це сховище більше не підтримується
    і зберігається для архівних цілей. Подивитися
    https://invent.kde.org/sdk/kdiff3 for
    найновіший код і
    https://download.kde.o...
    Завантажити KDiff3
  • 3
    USBLoaderGX
    USBLoaderGX
    USBLoaderGX - це графічний інтерфейс для
    USB-завантажувач Waninkoko, заснований на
    libwiigui. Це дозволяє перерахувати та
    запуск ігор Wii, ігор Gamecube та
    самоварний на Wii і WiiU...
    Завантажте USBLoaderGX
  • 4
    Жар-птиця
    Жар-птиця
    Firebird RDBMS пропонує функції ANSI SQL
    і працює на Linux, Windows і
    кілька платформ Unix. особливості
    чудова паралельність і продуктивність
    & потужність...
    Завантажити Firebird
  • 5
    KompoZer
    KompoZer
    KompoZer — це HTML-редактор wysiwyg, який використовує
    кодова база Mozilla Composer. Як
    Розвиток Nvu було зупинено
    у 2005 році KompoZer виправляє багато помилок і
    додає ф...
    Завантажити KompoZer
  • 6
    Безкоштовний завантажувач манги
    Безкоштовний завантажувач манги
    Безкоштовний завантажувач манги (FMD) є
    програма з відкритим кодом, написана
    Object-Pascal для управління і
    завантаження манги з різних веб-сайтів.
    Це дзеркало...
    Завантажте безкоштовний завантажувач манги
  • Детальніше »

Команди Linux

Ad