Расширения¶
Вы можете загрузить подключаемые функции, или расширения, в TDG вместе с конфигурацией приложения.
Для этого поместите расширения в корень проекта в директорию extensions.
При применении конфигурации в TDG:
подключается модуль global.lua (при его наличии), который содержит глобальные изменения поведения приложения;
становятся доступны подключенные расширения в окружении
sandbox.
Расширение global.lua¶
Модуль global.lua используется, чтобы задать в TDG глобальные изменения поведения,
например, для настройки пользовательского HTTP-маршрута или функции IPROTO.
Код из файла модуля запускается при обновлении конфигурации на всех экземплярах и выполняется вне окружения sandbox.
Чтобы добавить это расширение, выполните следующие действия:
В корневой директории TDG создайте директорию
extensions.Создайте файл модуля
global.lua, напишите в нем необходимый код, а затем разместите файл в директорииextensions. Модуль должен возвращать функциюinit(), которая вызывается при применении конфигурации.Упакуйте в zip-архив:
папку
extensions, внутри которой лежит файл модуля;файл конфигурации
config.yml.
Загрузите архив в TDG согласно инструкции.
Подключение новых функций¶
Предупреждение
Подключение новых функций в TDG может приводить к проблемам с безопасностью. Чтобы предупредить эти проблемы, рекомендуется:
самостоятельно проверять функции на уязвимости перед подключением;
включить режим обязательной аутентификации.
Чтобы подключить новые функции (расширения) к Sandbox API, выполните следующие действия:
В корневой директории TDG создайте директорию
extensions/sandbox. На следующем шаге в нее будет добавлен модуль с подключаемыми функциями. Также нужно проследить, чтобы у пользователей были необходимые права для чтения данной директории.Разместите в директории
sandboxфайл Lua-модуля, который вы хотите подключить. Модуль при этом должен возвращать объект с определяемыми модулем функциями. Кроме того, в добавленном модуле все используемые встроенные библиотеки должны быть явно подключены с использованиемrequire(). Пример файла с Lua-модулем:-- ./extensions/sandbox/csv.lua -- По умолчанию в TDG не доступен модуль ``csv`` return require('csv')
Упакуйте в zip-архив:
папку
extensions/sandbox, внутри которой лежит файл модуля;файл конфигурации
config.yml.
Загрузите архив в TDG согласно инструкции.