Расширения¶
Вы можете загрузить подключаемые функции, или расширения, в 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 согласно инструкции.
Подключение новых функций¶
Warning
Подключение новых функций в 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 согласно инструкции.