outbound v0.5.2 [base]


Главный шлюз внешних подключений

versiondatecommitфайлов
0.5.22026-09-1746803aa3a92717

README

# outbound

Шлюз внешних подключений: точки, потребители, привязки, health, журнал.

Тип: Модуль. Категория: `base`. Зависимости: pip-пакеты `urllib3`, `paho-mqtt`, `pysmb`, `pywinrm` (по видам точек); системные `openssh-client`, `sshpass`, `iputils-ping`, `nfs-common` (ssh/sftp, ping, NFS).

## Описание

Правило простое: ни один модуль не ходит наружу сам — все ходят через шлюз.

Шлюз оперирует тремя сущностями. **Точка** — это «куда подключаться»: вид, адрес и опции. **Потребитель** — модуль, который заявляет о своей потребности сам при старте. **Привязка** — связь «кто к какой точке». Вызов без привязки отклоняется с подсказкой, что привязать.

Секреты (пароли и ключи) живут только в `.env` модуля и подтягиваются по ссылке точки. В самих файлах точек секретов нет. Отключение проверки TLS действует только для локальных адресов.

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

## Возможности

- `endpoint_list {}` → все точки подключения (без секретов)
- `endpoint_add {name, kind, address, opts?, auth_ref?, via?, proxy?, health?, note?}` → добавить точку (с пробным подключением до сохранения)
- `endpoint_update {name, patch: {...}}` → частичное обновление точки
- `endpoint_delete {name}` → удалить точку (привязки к ней сбрасываются)
- `endpoint_test {name}` → ручная проверка health точки
- `consumer_list {}` → клиенты-потребители и их привязки
- `consumer_ensure {module, need, desc}` → заявить потребность (первый вызов — статус pending)
- `bind {module, endpoint|null}` → привязать клиента к точке (null — отвязать)
- `unbind {module}` → снять привязку (возврат в pending)
- `call {consumer, op, params?}` → единый вызов наружу от имени модуля (требует привязки)
- `health {}` → сводка health всех точек
- `log {limit?}` → кольцевой журнал вызовов (последние N)
- `kinds {}` → поддерживаемые kind точек
- `endpoint_base {consumer, field=base_url}` → адрес привязанной точки для потребителя

## Права

- `outbound_manage` — Точки подключения и привязки клиентов (кабинет outbound)
- `outbound_view` — Просмотр точек, health и журнала outbound

## Web

- `GET /api/outbound/endpoints` — точки подключения
- `POST /api/outbound/endpoint` — добавить/обновить точку
- `POST /api/outbound/endpoint_test` — проверка точки
- `GET /api/outbound/consumers` — потребители и привязки
- `POST /api/outbound/bind` — привязка клиента к точке
- `GET /api/outbound/health` — здоровье точек
- `GET /api/outbound/log` — журнал вызовов
- `POST /api/outbound/call` — отладочный вызов

## Конфигурация (`config.schema.json`)

- Опциональные: `HEALTH_INTERVAL` = `60`, `LOG_LIMIT` = `200`, `DEFAULT_TIMEOUT` = `15`

Манифест

{
  "name": "outbound",
  "version": "0.5.2",
  "category": "base",
  "description": "Шлюз внешних подключений: точки (ssh/http/tcp/udp/icmp/dns/wol/mqtt/ws/sftp/smb/ftp/nfs/winrm/docker/proxmox/telnet), клиенты-потребители, привязки, health, журнал. Режимы: via (jump-host), proxy, dry-run. Фронтенд — web/view.html+view.js (модульная вьюха).",
  "requires": [],
  "rights": [],
  "api_methods": [],
  "web_routes": [],
  "commit": "46803aa3a927a3a188c2249f494e5ea5ecf92dc6",
  "updated": "2026-09-17 12:54:21 +0300",
  "integrity": "sha256:fbe86d7a9cc6357e03f0cf0c8be3f91e19701ec623b3abe517b62d6f1a4da88d",
  "files": "[17 файлов — см. вкладки ниже]",
  "note": "Главный шлюз внешних подключений",
  "wdesc": "Главный шлюз внешних подключений",
  "wbody": "",
  "_extra": {
    "api": "",
    "events_emitted": "[]",
    "events_subscribed": "[]",
    "audit_allow": "",
    "shared_routes": "",
    "config_schema": "config.schema.json",
    "env_example": ".env.example"
  }
}

Файлы и исходники

Дерево файлов

  • · корень
    • 4.2 КБ
    • 0.1 КБ
    • 4.0 КБ
    • 17.1 КБ
    • 1.0 КБ
    • 1.8 КБ
    • 4.7 КБ
  • drivers/
    • 3.1 КБ
    • 2.4 КБ
    • 13.5 КБ
    • 12.4 КБ
    • 10.7 КБ
    • 8.5 КБ
    • 7.8 КБ
    • 3.6 КБ
  • web/
    • 2.7 КБ
    • 9.2 КБ

Предпросмотр

Выберите файл в дереве выше — код откроется здесь.