fix(network): защитить ключи WireGuard и режим просмотра операций
This commit is contained in:
1 parent
c8f9c83f45
commit
a404da768d
23 files changed
+1648
-36
No files matched your search
+15
-1
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-13:207 history restore rights всех6 caller: defaultdeny, reader/disabled/write guards,40 E2E и24 live UI passed; GRE reader50 enabled baseline закрыт. Frontend ux-history207/backend ux-lock200. Следующий208 — WireGuard includePrivateKey GET иread-only controls сетевыхworkspaces.12.5 открыта.
|
||||
Актуальное продолжение 2026-10-13:208 закрывает WireGuard private-key GET дляreader иread-only операции пятисетевыхразделов; baseline/fixed SQL11, WireGuard profile56,53 unique E2E,20 live UI и2 own native интерфейса passed/cleaned. Backend/frontend ux-native208, source470/527 иcompiled1044 matched. Следующий209 — секреты GRE вGET /gre/tunnels и/filters/gre-tunnels.12.5 открыта.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -38,6 +38,20 @@
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–196 и ограничения ниже. Runtime backend/frontend ux-peak196. |
|
||||
|
||||
## 12.5.208 — приватные ключи WireGuard и режим просмотра сетевых разделов (2026-10-13)
|
||||
|
||||
Старый production backend выдавал синтетический непустой приватный ключ reader при GET WireGuard с includePrivateKey=1/true. Baseline подтверждён actual compiled auth/mapper на собственной ограниченной PostgreSQL БД и локальном RouterOS HTTP fixture. Теперь явный запрос приватного ключа требует mm:network:write/admin, иначе403 до любых native requests. Обычный GET200 сохраняет public key и не содержит private key. is_admin без необходимого permission не заменяет право. Writer/admin сохраняют прежнее действие, legacy AUTH_REQUIRED=false не менялся.
|
||||
|
||||
WireGuard, IPsec, GRE, Firewall и Filters показывают режим просмотра и запрещают writer controls при read-only JWT. Использованы существующие readiness/mutation helpers; WireGuard toolbar/import/key-export/peer actions и callbacks дополнительно защищены. Backend RBAC остаётся авторитетной проверкой. Установленные ReUI primitives, vendor files и theme не менялись: добавлены operation-state props/copy.
|
||||
|
||||
11 fixed SQL cases: reader/writer/admin ×обычный GET/два private flags, is_admin alone, безJWT401; reader denied native request count0. Baseline/fixed/profile own DB/role/container удалены. WireGuard profile прошёл14.6s, включая56 node:test проверок; другие скрипты профиля не прибавляются к этому числу. Скопированный JSON label ошибочно называл traffic-rate, фактически runner запускал test:wireguard; label исправлен с сохранением originalReportedCommand. TypeScript/backend build/ESLint0errors,12 старых warnings Filters остаются.53 unique E2E:20 readonly PC/mobile +33 history/readiness/refresh. Два первоначальных GRE writer failures были некорректной fixture без обязательного ipsec:null; исправлены только данные теста,20 повторных cases прошли. Повторы не складываются.
|
||||
|
||||
Backend/frontend ux-native208 развёрнуты;470/527 source files и1044 compiled artifacts совпали, backend healthy. На каждом CHR через реальный admin API создан собственный WG-интерфейс с уникальным именем/свободным портом. Real reader обычный GET200 безключа, private flags403, admin получает ключ/public key сохранён. Private material вevidence не сохранялся.20 live UI5sections×reader/admin×1440/320 проверили создание/import/key-export controls, mutation requests0. Затем оба собственных интерфейса иPortal reader удалены; отсутствие интерфейсов проверено. Пароли и исходные native объекты не менялись. Это API privacy/UI proof, не WireGuard handshake/data-plane тест.
|
||||
|
||||
Протоколы: [baseline](ux-ui/acceptance/wireguard208-baseline-result.json), [fixed SQL11](ux-ui/acceptance/wireguard208-fixed-result.json), [profile](ux-ui/acceptance/native208-profile-result.json), [E2E53](ux-ui/acceptance/native208-e2e-2026-10-13.json), [live UI20](ux-ui/acceptance/native208-live-ui-2026-10-13.json), [native privacy/cleanup2](ux-ui/acceptance/wireguard208-native-live-2026-10-13.json), [compiled](ux-ui/acceptance/compiled208-result.json), [deployment](ux-ui/acceptance/native208-deployment-2026-10-13.json).
|
||||
|
||||
Следующий209: GRE mapper содержит ipsecSecret иipsec.secret, проверить оба публичных GET иограничить выдачу секретов reader, сохранив crypto-state/public metadata иwriter editing.12.5 открыта.
|
||||
|
||||
## 12.5.207 — права отката общей истории конфигураций (2026-10-13)
|
||||
|
||||
Actual Portal reader настаром frontend ux-accessibility205 видел50 enabled restore buttons GRE; безнажатия подтверждёнbaseline.5 из6 ConfigHistorySheet caller не передавалиrestoreDisabled,defaultfalse. Теперь propобязателен, defaulttrue дляuntyped omission; GRE/WireGuard/IPsec/Filters/Firewall передаютpermission/device/busy guards. Recursive routes ужеимелиguard. Reader требуетnetwork:write (Filters filters:write), disabled/missing device запрещаетaction; GRE/IPsec/Firewall используютexisting readiness guards. Callbacks пятиcaller повторно проверяютpermission непосредственно передrequest. ШаблоныReUI/Timeline/Sheet/vendor unchanged; текст объясняет недоступностьотката.
|
||||
|
||||
Reference in new issue
Block a user