37 lines
3.9 KiB
Markdown
37 lines
3.9 KiB
Markdown
## Why
|
||
|
||
Живой запуск моста 12.10.2026 упёрся в сеть: доступ к Jira банка на виртуалке даёт VPN «Континент ZTN», и его пакетный
|
||
фильтр (pf-anchor `continentztn`) закрывает локальную сеть в обе стороны — роутер `192.168.0.1` отвечает, Mac mini
|
||
(`192.168.0.108`) нет, `nc` на порт хаба 8790 — таймаут; входящие на виртуалку (`:22`) тоже режутся. Фильтр включается при
|
||
первом подключении Континента и остаётся загруженным после отключения VPN, до выхода из клиента или перезагрузки. Агенту
|
||
одновременно нужны Jira (только через VPN) и хаб, поэтому сеть для моста не годится. Править правила Континента нельзя —
|
||
это средство защиты банка.
|
||
|
||
Канал, который фильтр не видит, — общая папка гипервизора UTM (VirtioFS): на Mac mini `/Volumes/externalSSD/utm/rshb`,
|
||
на виртуалке `/Volumes/My Shared Files/RSHB`. Проверка 12.10.2026 при включённом Континенте: 30 обменов из 30 через
|
||
временный файл и переименование, время круга 0,75–0,82 с независимо от размера (200 Б – 300 КБ), недописанных и
|
||
«залипших» удалённых файлов 0 с обеих сторон.
|
||
|
||
Решения владельца 12.10.2026 (сессия brainstorming): транспорт через общую папку; вариант A — реле внутри `jira-hub serve`
|
||
(не отдельный процесс и не обмен пакетами целиком); HTTP API хаба и обработчики не меняются; у агента транспорт выбирается
|
||
по `hub_url`; HTTP-транспорт остаётся; дизайн частей 1–4 (формат обмена, ошибки и уборка, настройки и запуск, тесты)
|
||
одобрен.
|
||
|
||
## What Changes
|
||
|
||
- **jira-hub**: поток реле в `serve`, включаемый настройкой `relay_dir`. Реле забирает файлы-запросы агента из
|
||
`<relay_dir>/req/`, пересылает их в свой HTTP на `127.0.0.1:<port>` и кладёт ответы в `<relay_dir>/resp/`.
|
||
Новая настройка `relay_dir` (строка или `null`), проверяется при записи.
|
||
- **jira-agent**: транспорт `folder:` — `hub_url = "folder:<путь>"` создаёт файловый клиент хаба с тем же интерфейсом,
|
||
ошибки сводятся к тем же `ConnectionError`/`HttpError`; `check` сообщает транспорт; версия агента 2.
|
||
- Спеки: `hub-api` (ADDED: реле), `data-model` (MODIFIED: настройки), `agent` (MODIFIED: состав и настройки; ADDED:
|
||
транспорт через общую папку).
|
||
|
||
## Non-goals
|
||
|
||
- Изменения HTTP API, обработчиков, токенов, очереди и контракта команд.
|
||
- Обмен пакетами команд целиком через файлы (вариант C), работа агента без хаба.
|
||
- Несколько агентов на одной папке, шифрование файлов в общей папке.
|
||
- Обход или настройка фильтра Континента; запрос исключения в ИБ банка — вне репозиториев.
|
||
- Исправление находки M-2 (потерянный ответ `claim`) в общем виде; здесь только защита по запасу времени для реле.
|