You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ CLI и HTTP-сервер для отправки сообщений в корп
15
15
-**Отправка сообщений** из CLI, скриптов, пайплайнов CI/CD
16
16
-**API-запросы** — произвольные вызовы eXpress BotX API из командной строки с автоаутентификацией
17
17
-**HTTP-сервер** с API для отправки и приёма вебхуков
18
-
-**Alertmanager, Grafana и GitLab** — готовые эндпоинты для мониторинга; универсальный приёмник любых событий GitLab с фильтрами и шаблонами ([examples/gitlab/](examples/gitlab/))
18
+
-**Alertmanager, Grafana и GitLab** — готовые эндпоинты для мониторинга; универсальный приёмник любых событий GitLab с фильтрами, шаблонами и изоляцией команд по своим токенам ([examples/gitlab/](examples/gitlab/))
19
19
-**Асинхронная очередь** — RabbitMQ или Kafka для надёжной доставки
20
20
-**Секреты** — поддержка переменных окружения и HashiCorp Vault
В режиме веб-сервера есть методы для интеграции с alertmanager, grafana и gitlab (универсальный приёмник любых событий GitLab с фильтрами `only`/`exclude`, шаблонами по типам и `error_events`).
170
+
В режиме веб-сервера есть методы для интеграции с alertmanager, grafana и gitlab (универсальный приёмник любых событий GitLab с фильтрами `only`/`exclude`, шаблонами по типам и `error_events`). Несколько команд могут делить один GitLab-эндпоинт с изоляцией по своим `X-Gitlab-Token` — см. [senders](docs/integrations.md#изоляция-команд-senders-несколько-токенов) и пример [examples/gitlab/config-senders.yaml](examples/gitlab/config-senders.yaml).
- Обязательные поля: `host` и `id` для ботов, `secret` или `token` (но не оба)
714
+
- Обязательные поля: `host` и `id` для ботов, `secret` или `token` (но не оба); для `server.gitlab` — `secret`/`secret_token` или непустой `senders` (у каждого sender'а — секрет и непустой `chats`; байт-идентичные значения токенов — одинаковые литералы или одинаковые `env:`/`vault:` ссылки — не дублируются, разные ссылки на одно значение проверяются на старте `serve`)
715
715
- Форматы: UUID для `id` и `chat_id`, длительности (`timeout`, `retry_backoff`), допустимые enum-значения (`cache.type`, `queue.driver`, `routing_mode`)
716
-
- Перекрёстные ссылки: `bot` в чате ссылается на существующего бота, не более одного чата по умолчанию, `default_chat_id` в alertmanager/grafana/gitlab ссылается на существующий алиас
716
+
- Перекрёстные ссылки: `bot` в чате ссылается на существующего бота, не более одного чата по умолчанию, `default_chat_id` в alertmanager/grafana/gitlab и чаты в `server.gitlab.routes`/`senders` ссылаются на существующие алиасы
| `template_files` | Мапа `event-ключ → путь к файлу шаблона`. Один ключ нельзя задать и в `templates`, и в `template_files`. |
101
106
| `error_events` | Список event-ключей, доставляемых с `notification.status=error` (та же грануляция матчинга). |
102
107
| `routes` | Опциональный упорядоченный список правил роутинга. Событие уходит в чаты **всех** совпавших правил (объединение+дедуп), `stop:true` обрывает перебор. Каждое правило: `match`(селектор → паттерны glob/`/regex/`; `event` — по event-ключу), `chats` (непустой список алиасов/UUID), `stop`. Без секции — прежнее поведение (один чат). Подробнее и приоритет чатов — в [docs/integrations.md](integrations.md#роутинг-событий-по-чатам-routes). |
108
+
| `senders` | Опциональный список дополнительных входящих токенов с жёсткой привязкой к чатам (изоляция команд). Каждый элемент: `secret`/`secret_token` (ссылка `literal`/`env:`/`vault:`, обязателен) и непустой `chats` (алиасы/UUID существующих чатов). Совпал sender-токен → событие уходит **только** в его `chats`; `?chat_id`, `?bot`, `routes` и `default_chat_id` игнорируются. Глобальные `events.only/exclude`, `templates` и `error_events` применяются как обычно. Дубликаты разрезолвленных токенов (sender↔sender, sender↔`secret`) — ошибка на старте. Подробнее — в [docs/integrations.md](integrations.md#изоляция-команд-senders-несколько-токенов). |
0 commit comments