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

3.1 KiB

Среда выполнения и загрузка скриптов

Среда Lua

Сейчас используется GopherLua, который поддерживает синтаксис Lua 5.1, оператор goto из Lua 5.2 и собственный channel.

Xray загружает скрипты Lua согласно файлу конфигурации. Положение настройки определяет назначение скрипта и доступные Hook. Hook каждой точки входа и соглашения об их вызове описаны в справочнике Hook.

Загрузка модулей

Модули API организованы по назначению и загружаются через require:

local geodata = require("xray.geodata")
local log = require("xray.log")

Список модулей приведён в разделе API модулей, а использование функций — в соответствующих справочниках API.

Когда выполняется инициализация верхнего уровня, включая загрузку модулей Lua и создание объектов, описано в разделе Экземпляры и жизненный цикл.

Пути к файлам скриптов

Поле script в конфигурации задаёт путь к файлу скрипта Lua. Пустая строка или отсутствие поля отключает скрипт; абсолютный путь указывает файл напрямую.

Относительные пути проверяются в следующем порядке. Если путь не существует, поиск продолжается; если он существует, но не является обычным файлом, сразу возникает ошибка:

  1. Каталог, указанный переменной окружения XRAY_LOCATION_CONFDIR;
  2. Каталог, указанный переменной окружения XRAY_LOCATION_CONFIG;
  3. Текущий рабочий каталог процесса Xray;
  4. Каталог исполняемого файла Xray.

Настройка этих каталогов описана в разделе Переменные окружения. Относительные пути не отсчитываются автоматически от каталога файла конфигурации.

Например, если путь скрипта задан как routing.lua, Xray ищет файл в указанном выше порядке. Абсолютный путь Windows можно записать как C:/Xray/routing.lua; при использовании обратной косой черты экранируйте её согласно требованиям формата конфигурации.