Download PDF
Download page Общие сведения о сценариях.
Общие сведения о сценариях
Общие сведения о сценариях
Сценарии – это Lua-файлы, являющиеся дополнением к основным параметрам конфигурации Виртуальных Серверов.
Сценарии предназначены для:
- выбора Сервера Балансировки: распределения клиентских запросов по нескольким Серверам Балансировки на основе данных в запросе;
- изменения содержимого запросов (HTTPS/HTTPS);
- ответа на запрос (HTTP/HTTPS);
- прерывания нежелательного соединения.
В сценариях можно определять условия выполнения того или иного действия логическими выражениями:
if;elseif;else;end.
Условиями для логических выражений могут быть любые данные, полученные из запроса, а также комбинация эти данных, например:
- выражение для сравнения имени хоста из запроса с именем abc.ru для выполнения какого-либо действия:
If client.http_req.host == "abc.ru” then
- выражение для сравнения имени хоста из запроса с именем abc.ru и принадлежностью к определенному IP-адресу:
if (client.http_req.host == "abc.ru” and client.remote_p.ip == "192.0.2.1")
Для работы с полученными данными можно использовать возможности языка программирования Lua. Примеры выражений для обработки запроса вида qwe.123.ru/abczxc:
выражение сравнения. Результатом будет
true:
If client.http_req.path == "/abcZxc"
- выражение содержания определенного значения. Результатом будет
true:
If (client.http_req.path:find(”zx"))
- выражение для получения определенной части строки. Результатом будет
qwe:
(client.http_req.host:match(”(.*).123.ru")
Обработка правил сценария осуществляется через глобальную переменную client, которая содержит в себе ряд полей. Описание полей приведено в таблице.
Обработка правил сценария останавливается после выражения: client.action = “xxx”.
| Поле | Тип поля | Описание |
|---|---|---|
| Структура | Содержит поля удаленной точки подключения, где:
BASH
|
| Структура | Содержит поля локальной точки подключения, аналогично |
| Структура или | В текущей версии Termidesk Connect значение nil (HTTP-запрос отсутствует). Описание полей приведено в таблице |
| Строка | Определяет имя Сервера Балансировки. Пример:
|
| Целое | Возвращает код ответа |
| Строка | Определяет действие:
|
| Поле | Тип поля | Описание |
|---|---|---|
| Целое | Возвращает версию протокола HTTP: целое число, в котором младший десяток соответствует значению после точки, старший десяток - перед точкой. Поддерживаются версии: 1.0, 1.1. Пример: для HTTP/1.0 будет возвращен ответ: |
| Строка | Возвращает метод запроса (GET, POST, HEAD, DELETE, PATCH, PUT, OPTIONS, CONNECT, TRACE и др.). В примере ниже: |
| Строка | Возвращает путь запроса. В примере ниже: |
| Строка | Возвращает запрос. В примере ниже: |
| Строка | Возвращает полный путь запроса. В примере ниже: |
| Строка | Возвращает значение заголовка В примере ниже: |
| Таблица (словарь) | Возвращает все заголовки со значениями. В примере ниже:
BASH
|
| Строка | Возвращает тело HTTP-запроса |
Примеры из таблицы отражены в этом ответе на запрос к узлу termideskconnect по протоколу HTTP:
GET /termideskconnect?test=query HTTP/1.0
Host: connect.termidesk.ru
User-Agent: Mozilla Firefox/3.0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Cookie: sessionid=100TC