Files
XTLS_Xray-docs-next/docs/ru/development/lua/index.md
T

4.3 KiB

Скрипты Lua

Скрипты Lua позволяют гибко расширять Xray, реализовывать собственные функции и взаимодействовать с ядром.

Начало работы

Сначала прочитайте Среда выполнения и загрузка скриптов, чтобы узнать о поддержке Lua, загрузке модулей и правилах поиска файлов скриптов.

Руководства по написанию

Выберите руководство для нужной функции, начните с минимального примера и постепенно создайте собственный скрипт:

Руководство Назначение Содержание
Скрипты маршрутизации Собственные правила маршрутизации Выбор исходящего подключения, балансировка нагрузки и маршрутизация по IP после явного разрешения домена
Скрипты DNS Собственная обработка DNS-запросов Выбор вышестоящего сервера, резервные запросы и фильтрация результатов

Текущие скрипты маршрутизации и DNS используют экземпляры из пула. При написании скриптов учитывайте жизненный цикл пула, чтобы понимать, когда выполняется инициализация верхнего уровня и как сохраняется состояние.

Справочник

Hook

Hook — это функция Lua, которую ядро вызывает в определённый момент. Точка входа скрипта определяет доступные Hook и соглашения об их вызове; одной точке входа могут соответствовать несколько Hook. Какие именно Hook нужно реализовать, указано в описании соответствующей точки входа.

Сейчас поддерживаются следующие точки входа и Hook. Параметры, возвращаемые значения и поведение при ошибках описаны на справочных страницах каждого Hook:

Точка входа скрипта Hook
routing.script HandleRoute
dns.script HandleDNSQuery

Типы данных

Помимо встроенных типов Lua, Xray Lua использует net.IP, срезы Go и error. Их представление и способы работы с ними в Lua описаны в разделе Типы данных.

API модулей

Выберите API модуля по назначению:

Модуль Назначение
xray.router Маршрутизация по правилам
xray.dns Разрешение доменных имён
xray.geodata Сопоставление и фильтрация доменов и IP
xray.log Запись журналов