- PVSM.RU - https://www.pvsm.ru -
ADAudit Plus умеет отправлять алерты по SMS. Telegram — это почти SMS, если закрыть глаза. Осталось убедить в этом сам ADAudit. Спойлер: ему всё равно, что отправлять, лишь бы URL проходил валидацию. А валидация там — та ещё боль.
Если вы когда-нибудь пытались настроить Telegram-оповещения в ADAudit, то знаете: готового решения нет. Есть форумы, где люди годами просят вендора добавить Webhook. Есть костыли с Python-скриптами, батниками и планировщиками. А есть способ, за который не стыдно.
Никаких внешних скриптов. Никаких «запустить программу». Только нативная настройка SMS-шлюза и одна правка в клиентском JavaScript.
Вы заходите в Admin (Server Settings) → SMS Configuration, выбираете Custom-провайдер, вводите URL:
https://api.telegram.org/bot7443611865:AAHSmw.../sendMessage [1]
И видите:
«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). Перезагружать сервер не нужно.
Теперь форма примет любой 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 [4] представитель вендора ответил, что они рассмотрят возможность добавить поддержку Telegram в будущих версиях. Наш тикет не остался незамеченным.
Мы получили:
✅ Нативную интеграцию без скриптов и батников
✅ Поддерживаемую — при обновлении ломается только регулярка, а не вся схема
✅ Гибкую — можно использовать любые макросы ADAudit
✅ Быструю — сообщения уходят мгновенно, без очередей SMTP
Никакого Python. Никакого curl. Никаких задач в планировщике.
Только одна правка в JS-файле и пять минут времени.
Пробовали прикрутить Telegram к другим продуктам ManageEngine? Делитесь способами в комментариях. Безопасность не терпит задержек, а мессенджеры — лучший способ достучаться до дежурного инженера в 3 часа ночи.
P.S. Если вам помогла эта статья — нажмите «плюс» в профиле и оставьте комментарий на форуме вендора. Там это действительно читают.
Автор: TakezoKensay
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/opoveshheniya/444719
Ссылки в тексте:
[1] https://api.telegram.org/bot7443611865:AAHSmw.../sendMessage: https://api.telegram.org/bot7443611865:AAHSmw.../sendMessage
[2] Image: https://sourcecraft.dev/
[3] https://api.telegram.org/bot<ТОКЕН_БОТА>/sendMessage: https://api.telegram.org/bot<%D0%A2%D0%9E%D0%9A%D0%95%D0%9D_%D0%91%D0%9E%D0%A2%D0%90>/sendMessage
[4] на форуме ManageEngine: https://pitstop.manageengine.com/portal/en/community/topic/send-alert-to-telegram
[5] Источник: https://habr.com/ru/articles/996472/?utm_source=habrahabr&utm_medium=rss&utm_campaign=996472
Нажмите здесь для печати.