Ваш опыт = наш роадмап!
Расскажите, как мы можем усилить платформы
ISPsystem для вашего бизнеса. Опрос займет 5 минут.
Пройти опрос
Режим фокусировки

Плагины и модули в BILLmanager

Перед изучением этого раздела рекомендуется ознакомиться с документацией разработчиков COREmanager, поскольку BILLmanager наследует часть механизмов из базовой платформы. 

 В статье описаны способы расширения функциональности BILLmanager: плагины и модули. Плагины позволяют изменять поведение платформы без модификации исходного кода, а модули реализуют интеграцию с внешними системами, такими как платёжные шлюзы, регистраторы доменов и провайдеры услуг.

Определения плагинов и модулей

Плагин

Плагин — механизм для изменения существующего и добавления нового поведения платформы BILLmanager без модификации исходного кода. Плагины можно писать на практически любом языке программирования, однако предпочтительнее использовать Python. ISPsystem предоставляет SDK (Software Development Kit), упрощающий работу с:

  • XML-данными;
  • сессиями и параметрами запросов;
  • базой данных;
  • обработкой ошибок.

Некоторая функциональность доступна только на C++. В таких случаях следует использовать C++ и заголовочные файлы из директории /usr/local/mgr5/include. 

Подробнее см. статью Плагины. Общие принципы.

Модуль

Модуль — механизм расширения и автоматизации, который не изменяет поведение платформы BILLmanager, а реализует интеграцию с внешними системами. Модули также можно писать на практически любом языке программирования. Использование Python и SDK сокращает время разработки. В отличие от плагинов, модули позволяют реализовать любую функциональность.

Подробнее см. статью Модули. Общие принципы.

Отличия плагинов и модулей

Плагины и модули имеют разные точки входа, способы вызова и форматы взаимодействия с платформой:

Критерий

Плагин

Модуль

Точка входа

BILLmanager запускает скрипт при наступлении события или обращении к функции. Имя функции или события читается через session.get_query_param("func").

Скрипт запускается с аргументом --command <имя_команды>.

Кто вызывает

BILLmanager автоматически:

  • при наступлении события. Например, открытии выделенного сервера или завершении действия;
  • при обращении пользователя к функции интерфейса. Например, при переходе пользователя к настройкам лицензий виртуальных машин или при проверке значения пользовательского поля.

BILLmanager в следующих случаях:

  • по расписанию (планировщик);
  • по действию пользователя (открытие или закрытие услуги);
  • при изменении параметров.

Формат ввода-вывода

  • Ввод (stdin): XML-файл с параметрами запроса;
  • Вывод (stdout): XML-ответ (<doc/> для событий, данные формы для func, <error> при ошибке).
  • Ввод (stdin): XML-файл с параметрами (опционально, если команда их требует);
  • Вывод (stdout): XML-ответ (<doc> с данными) или ничего. Аргументы: --item, --module, --command и др.

Регистрация

XML-файл: <handler name="script.py" type="xml"> с вложенными <event>, <func> или <task>.

XML-файл: <plugin name="..."><group>processing_module</group>.

Язык

Python (SDK), C++ или любой другой. Часть функциональности доступна только на C++.

Python (SDK) или любой другой. Ограничений по функциональности нет.

Для чего использовать

Чтобы изменить существующее поведение платформы. Например:

  • перехватить событие;
  • добавить кнопку;
  • расширить форму;
  • валидировать поле при заказе.

Чтобы реализовать интеграцию BILLmanager с внешней системой. Например, добавить:

  • новый тип услуги;
  • платёжный метод;
  • шлюз сообщений.
Может быть полезно