ADAudit Plus умеет отправлять алерты по SMS. Telegram — это почти SMS, если закрыть глаза. Осталось убедить в этом сам ADAudit. Спойлер: ему всё равно, что отправлять, лишь бы URL проходил валидацию. А валидация там — та ещё боль.
Если вы когда-нибудь пытались настроить Telegram-оповещения в ADAudit, то знаете: готового решения нет. Есть форумы, где люди годами просят вендора добавить Webhook. Есть костыли с Python-скриптами, батниками и планировщиками. А есть способ, за который не стыдно.
Никаких внешних скриптов. Никаких «запустить программу». Только нативная настройка SMS-шлюза и одна правка в клиентском JavaScript.
❌ Почему Telegram нельзя вставить просто так
Вы заходите в Admin (Server Settings) → SMS Configuration, выбираете Custom-провайдер, вводите URL:
https://api.telegram.org/bot7443611865:AAHSmw.../sendMessage
И видите:
«Enter valid HTTP URL»
Форма не принимает URL. Почему? Потому что фронтенд ADAudit проверяет введённую строку регулярным выражением, которое не разрешает двоеточие в пути запроса.
Вот оно, то самое регулярное выражение из файла emberapp-auditplus.js:
js
var regexp = /^(ftp|http|https)://([a-zA-Z0-9._-~])+(:+([0-9]+))*([a-zA-Z0-9._-~/!*])+(([a-zA-Z0-9._-~!*/]))$/i;
Оно ожидает, что после хоста может идти только порт (:8443), а не строка вида :AAHSmw.... В результате легитимный URL Telegram API не проходит валидацию.
Разработчики просто не предусмотрели, что кто-то будет использовать их SMS-шлюз не по назначению. Но мы это исправим.
✅ Лечим заменой одной строки
Открываем файл:
C:Program FilesManageEngineADAudit Pluswebappsadapassetsemberapp-auditplus.js
Находим 19401 строку (или просто ищем regexp = /^(ftp|http|https)).
Заменяем содержимое на это:
js
var regexp = /^(ftp|http|https)://[a-zA-Z0-9._-~]+(:[0-9]+)?(/[a-zA-Z0-9._-~!*',;:@&=+$/%-]*)?$/i;
Что изменилось:
-
Разрешены любые символы в пути (
@,:,=,&,;) -
Убрана привязка к порту как единственному месту с двоеточием
-
Всё остальное осталось безопасным
Важно: Регулярка живёт на клиенте. После сохранения файла достаточно обновить страницу в браузере (Ctrl+F5). Перезагружать сервер не нужно.
📲 Настраиваем SMS-шлюз на Telegram
Теперь форма примет любой URL. Заходим в Admin (Server Settings)→ SMS Configuration и выставляем:
|
Параметр |
Значение |
|---|---|
|
SMS Provider |
|
|
Send SMS via |
|
|
HTTP Method |
|
|
HTTP URL |
|
|
HTTP Parameters |
|
|
Select Response Type |
|
Разбор полёта:
-
%message%— это тело СМС. Сюда будет подставляться текст алерта. -
%mobNo%— номер телефона. Мы его не используем, но параметр обязателен. Уходит вdummyMobи игнорируется Telegram. -
chat_id— может быть отрицательным (для каналов и групп).
При желании можно добавить &parse_mode=HTML прямо в строку параметров — Telegram будет форматировать сообщение.
🔔 Создаём правило оповещения
Идём в Alerts → Create New Alert.
-
Выбираем событие (например, User Added to Privileged Group)
-
В блоке Action указываем Send SMS
-
В выпадающем списке выбираем только что созданный SMS-провайдер
-
Поле Mobile Number — любой текст (например,
111) -
Поле Message — сам текст уведомления
Пример сообщения:
text
🚨 ADAudit ALERT
Событие: %eventname%
Инициатор: %caller%
Объект: %objectname%
Макросы работают точно так же, как в email-оповещениях. Полный список можно подсмотреть при создании почтового правила.
🤔 А что с обновлениями?
При обновлении ADAudit файл emberapp-auditplus.js перезаписывается. Регулярка сбрасывается.
Вариантов два:
-
Включить замену регулярки в процесс обновления (Ansible, PowerShell, chocolatey).
-
Ждать, когда вендор официально включит фикс в релиз.
Хорошая новость: на форуме ManageEngine представитель вендора ответил, что они рассмотрят возможность добавить поддержку Telegram в будущих версиях. Наш тикет не остался незамеченным.
💀 Итог: ни одного костыля
Мы получили:
-
✅ Нативную интеграцию без скриптов и батников
-
✅ Поддерживаемую — при обновлении ломается только регулярка, а не вся схема
-
✅ Гибкую — можно использовать любые макросы ADAudit
-
✅ Быструю — сообщения уходят мгновенно, без очередей SMTP
Никакого Python. Никакого curl. Никаких задач в планировщике.
Только одна правка в JS-файле и пять минут времени.
Пробовали прикрутить Telegram к другим продуктам ManageEngine? Делитесь способами в комментариях. Безопасность не терпит задержек, а мессенджеры — лучший способ достучаться до дежурного инженера в 3 часа ночи.
P.S. Если вам помогла эта статья — нажмите «плюс» в профиле и оставьте комментарий на форуме вендора. Там это действительно читают.
Автор: TakezoKensay
