Расширение функциональности TLS Terminator
Расширение функциональности TLS Terminator
Механизм плагинов расширяет функциональность TLS Terminator, позволяя внедрять пользовательскую логику в работу компонента TLS Terminator без изменения его исходного кода. Плагины для компонента TLS Terminator представляют собой динамические библиотеки. Чтобы использовать механизм плагинов, необходимо выполнить следующие действия:
- Разработать плагин, реализующий интерфейс, определенный в файле
/opt/KasperskyOS-Community-Edition-<platform>-<version>/sysroot-*-kos/include/tls/tls_plugin_interface.h. Обязательны для реализации следующие функции интерфейса:plugin_init()– инициализация плагина.plugin_fini()– завершение работы плагина.plugin_get_version()– получение версии плагина.
Реализация остальных функций интерфейса опциональна и зависит от задач, для которых разрабатывается плагин.
- При запуске TLS Terminator необходимо передать путь к разработанному плагину через параметр запуска
--plugin_path. Подробнее см. "Параметры запуска и переменные окружения TLS Terminator".
Детали работы механизма плагинов:
- Плагин загружается в память с использованием POSIX-функции
dlopen(). - Проверяется совместимость версий с использованием функции
plugin_get_version()и инициализация плагина через вызовplugin_init(). - При вызове функции, которая может быть перехвачена компонентом TLS Terminator, компонент
- Проверяет наличие реализации вызываемой функции в плагине с использованием POSIX-функции
dlsym(). - Если функция реализована в плагине, то выполняется плагинная версия функции. В противном случае выполняется собственная версия функции компонента TLS Terminator.
Компонент TLS Terminator при инициализации передает плагину набор указателей на свои собственные реализации функций через структуру
tls_functions. Это позволяет плагину вызывать эти реализации, если необходимо. - Проверяет наличие реализации вызываемой функции в плагине с использованием POSIX-функции
- При завершении работы компонент TLS Terminator завершает работу плагина вызовом функции
plugin_fini(). - Плагин выгружается из памяти с использованием POSIX-функции
dlclose().
Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!