Работа фоновых плагинов поддерживается для продуктов версии COREmanager 5.377 и выше. Чтобы проверить версию COREmanager, выполните:
/usr/local/mgr5/bin/core -V
Описание
Во всех программных продуктах ISPsystem на базе COREmanager существует возможность выполнения определённых действий при наступлении событий. Например, при успешной авторизации пользователю может быть отправлено уведомление в Telegram.
В отличии от системы Event'ов, которая работает синхронно с наступлением событий и может повлиять на поведение системы, описанный в статье механизм запускается асинхронно с событием и не влияет на поведение системы.
Чтобы обрабатывать события панели управления, необходимо:
- Написать скрипт-обработчик события.
- Зарегистрировать свой скрипт-обработчик, связав его с обрабатываемыми событиями.
Формат общения
Скрипту-обработчику передаётся информация:
- в виде переменных окружения (env):
- параметры запроса c префиксом PARAM_;
- заголовки запроса;
- остальное;
- на вход stdin с результатами обработки события в формате xml, если событие зарегистрировано с атрибутом sessiondata. Без указания sessiondata переданы будут только переменные окружения.
Пример
Ниже приведен пример на простой задаче — отправка сотруднику в Telegram информации о зачислении платежа больше 5000 рублей.
Создание скрипта-обработчика
-
Создайте в директории /usr/local/mgr5/addon/ файл send_notify.sh со следующим содержимым:
#!/usr/bin/sh #env >> var/send_notify.sh.log PAYMENT=$(sbin/mysql-billmgr <<< "SELECT id FROM payment WHERE id = '${PARAM_elid}' AND paymethodamount > 5000" | tail -1) if [ -n "${PAYMENT}" ]; then BOT_TOKEN="{TOKEN}" # Replace {TOKEN} with your bot token CHAT_ID="{CHAT_ID}" # Replace {CHAT_ID} with your channel id curl "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage?chat_id=${CHAT_ID}&text=Payment №${PARAM_elid} is above 5000" fi
-
Установите скрипту права на исполнения:
chmod +x /usr/local/mgr5/addon/send_notify.sh
Регистрация скрипта-обработчика
Чтобы зарегистрировать скрипт-обработчик, создайте файл /usr/local/mgr5/etc/xml/billmgr_mod_send_notification.xml со следующим содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
<handler name="send_notify.sh" type="xml">
<task name="payment.setpaid" get="yes" setvalues="yes" submit="yes" sessiondata="yes"/>
</handler>
</mgrdata>
Пояснения к плагину
Блок, отвечающий за регистрацию обработчика:
<handler name="send_notify.sh" type="xml">
<task name="payment.setpaid" get="yes" setvalues="yes" submit="yes" sessiondata="yes"/>
</handler>
Свойство name узла handler указывает файл, который выполняет обработку события. Этот файл разместите в директории /usr/local/mgr5/addon/, имя файла должно полностью совпадать с указанным в свойстве name.
Узел task специализирует событие для отслеживания и имеет следующие атрибуты:
-
name — событие, которое нужно отслеживать. Событиями выступают запросы к системе по протоколам http/https или CLI (/usr/local/mgr5/sbin/mgrctl). Чтобы посмотреть список всех событий, выполните:
/usr/local/mgr5/sbin/mgrctl -m billmgr actionlist
- get — нужно отслеживать событие без параметров sv_field={param} и sok=ok в запросе;
- setvalues — нужно отслеживать события с параметром sv_field={param} в запросе;
- submit — нужно отслеживать события с параметром sok=ok в запросе;
- sessiondata — в скрипт будет передан результат обработки события в формате xml.