chore(test): подтвердить импорт WireGuard на двух CHR
This commit is contained in:
1 parent
d13c773856
commit
7ce43adc07
9 files changed
+937
-6
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# UX/UI: протокол внешней приёмки 12.5
|
||||
|
||||
Статус на2026-10-09: backend/frontend c16fc0c, backend healthy. В12.5.67 исправленный Peer .conf принят как клиентский шаблон: API6/6, browser4/4, server endpoint и placeholders; настоящий import ещё не принят. Мобильная ширина WireGuard Sheets принята в12.5.64. Мобильная GRE форма и native сохранение на обоих CHR приняты в12.5.57. WireGuard handshake/короткий Ping/native API/read-only UI приняты в границах12.5.58; 12.5.59 воспроизвёл оставшиеся peers/IP; 12.5.60 развернул исправление и принял обычное удаление own WG интерфейса с peer/IPv4 адресом на обоих CHR. 12.5.62 принял полный WireGuard UI create/peer/disable/enable/Ping/delete на обоих CHR; устойчивое меню развёрнуто. Устойчивость меню GRE при live refresh на обоих CHR принята в12.5.55. GRE peer metadata и реальный lifecycle/API/UI/двусторонний Ping подтверждены в12.5.53. Browser retry/checkpoint на реальном HTTP/PG принят в границах12.5.43–45; Telegram sender responses подменены, реальная доставка не проверена. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md).
|
||||
Статус на2026-10-09: backend/frontend c16fc0c, backend healthy. В12.5.67 исправленный Peer .conf принят как клиентский шаблон: API6/6, browser4/4, server endpoint и placeholders; настоящий RSC roundtrip через UI/native/handshake/Ping принят в12.5.68, .conf и ошибки импорта открыты. Мобильная ширина WireGuard Sheets принята в12.5.64. Мобильная GRE форма и native сохранение на обоих CHR приняты в12.5.57. WireGuard handshake/короткий Ping/native API/read-only UI приняты в границах12.5.58; 12.5.59 воспроизвёл оставшиеся peers/IP; 12.5.60 развернул исправление и принял обычное удаление own WG интерфейса с peer/IPv4 адресом на обоих CHR. 12.5.62 принял полный WireGuard UI create/peer/disable/enable/Ping/delete на обоих CHR; устойчивое меню развёрнуто. Устойчивость меню GRE при live refresh на обоих CHR принята в12.5.55. GRE peer metadata и реальный lifecycle/API/UI/двусторонний Ping подтверждены в12.5.53. Browser retry/checkpoint на реальном HTTP/PG принят в границах12.5.43–45; Telegram sender responses подменены, реальная доставка не проверена. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md).
|
||||
|
||||
## Паспорт стенда
|
||||
|
||||
@@ -539,3 +539,17 @@ Server allowed-address не обозначает клиентские маршр
|
||||
Fixture завершён exit0 и удалён. Проверенные WG interfaces/peers/IP/routes/IPv4 filter/nat/mangle совпали с baseline на обоих CHR. Очистка только собственных объектов; audit revisions намеренно сохранены. DB controls до/после совпали:servers2,speedHistory9,retentionDays14,migrations9. Дополнительно сохранён ранее полученный screenshot создания на CHR2 в12.5.64 с исходной датой2026-10-08. Product code в этом блоке не менялся после уже проверенного c16fc0c; общая регрессия не повторялась.
|
||||
|
||||
Следующий12.5.68 — import roundtrip собственного конфигурационного файла с независимой проверкой параметров и очисткой. Client-allowed-address/готовый client import, private-key export modes/UI download,throughput/IPv6/RBAC/внешние failures/multi-instance/Telegram/Portal и остальные протоколы/интеграции остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.68 — реальный .rsc roundtrip WireGuard через UI (2026-10-09)
|
||||
|
||||
Runtime backend/frontend c16fc0c не менялся. На обоих CHR создана собственная временная WG пара с уникальными name/comment,port51879,MTU1420 и198.18.255.241/30↔198.18.255.242/30. Исходный handshake/Ping3/3 подтверждены. POST export rsc с includePrivateKey=true получен только в памяти; исходные native keys и содержимое конфигураций не записывались в файлы, screenshots, traces или Git. Это собственные ключи тестовой пары, доступы серверов не менялись.
|
||||
|
||||
На обоих устройствах POST import dryRun=true вернул200; native интерфейс/пир/IP остались прежними. Затем обычный API DELETE удалил собственный исходный интерфейс и связанные объекты без остатков. Реальный UI импорт восстановил RSC на CHR1 при1280px и CHR2 при320px без HTTP mocks: server context изURL сохранился, локальный preview распознал собственное имя и одного пира, POST import dryRun=false вернул200 с applied.interfaceName и peersCreated=1, Sheet закрылся после подтверждения, интерфейс появился в таблице. Page errors/API errors/горизонтального page overflow нет.
|
||||
|
||||
Native проверка после UI восстановила name/comment,listen-port,MTU,один IPv4 address,одного peer,allowed-address,configured endpoint/port,keepalive и peer comment. Публичные ключи интерфейсов/пиров совпали с исходными. На CHR2 текстовая private-key запись после импорта отличается; нормализованные32байтные Curve25519 scalar совпали, а public identity сохранилась. Приёмка сравнивает эквивалентность scalar и public key, не обещает byte-for-byte неизменность raw encoding. Правило clamping проверено по [официальному исходнику WireGuard](https://git.zx2c4.com/wireguard-tools/tree/src/curve25519.h): изменения затрагивают предусмотренные биты. После восстановления настоящий handshake и Ping3/3 в обе стороны passed.
|
||||
|
||||
[Final native report](ux-ui/acceptance/wg-import-rsc-native-2026-10-09.json), [browser report](ux-ui/acceptance/browser-wg-import-rsc-c16fc0c-2026-10-09.json), [предыдущая диагностика raw-key](ux-ui/acceptance/wg-import-rsc-raw-key-check-2026-10-09.json), [DB controls](ux-ui/acceptance/wg-import-db-controls-2026-10-09.json). Первый browser запуск не завершил import; следующая native проверка отклонила raw private-key equality наCHR2. Каждая попытка очищена с совпавшим baseline; диагностическая проверка не объявлена успешной. В окончательном запуске поэлементные native checks passed на обоих устройствах и fixture exit0. Readiness ожидание наблюдателя добавлено в тестовый harness, данные конфигов не выводились при ошибках.
|
||||
|
||||
Own interfaces/peers/IP/connected routes удалены; WG/peers/IP/routes/IPv4 filter/nat/mangle совпали с исходным baseline на обоих CHR. Остались три основные службы, backend healthy. Business DB controls совпадают с контрольной точкой67:servers2,speedHistory9,retentionDays14,migrations9; audit revisions намеренно сохранены. Публичные JSON проверены на отсутствие ключей/конфигураций/паролей. Общие ReUI компоненты и product source не менялись; общая регрессия не повторялась для внешней приёмки.
|
||||
|
||||
Граница результата: правильный RSC собственного туннеля, preview и успешное применение с независимой связностью. Импорт .conf не принят: exporter не сохраняет имя/комментарии, parser использует wg0 по умолчанию; incomplete Peer .conf template требует отдельной проверки до применения. Partial failure/rollback, повторный import/коллизии, private-key UI download,IPv6/throughput/RBAC/внешние failures/multi-instance/Telegram/Portal и остальные протоколы/интеграции остаются открытыми. Следующий12.5.69 — preflight/ошибки .conf и затем безопасный собственный roundtrip. Локальный коммит без push.
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.67 развернул backend/frontend c16fc0c и подтвердил исправленный Peer .conf на собственной WireGuard паре двух CHR. API export6/6 и browser preview/live4/4 на1280/320px passed; endpoint экспортирующего сервера, client placeholders и отсутствие private-key подтверждены. Handshake, Ping3/3 в обе стороны, cleanup/baseline и DB controls passed. Все три сервера доступны с прежними доступами. Следующий12.5.68 — безопасный import roundtrip собственного WG конфига с проверкой native параметров и очисткой. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.68 подтвердил настоящий .rsc export → dry-run → delete → UI import на обоих CHR. Native параметры, публичная идентичность и эквивалентность private scalar сохранены; handshake/Ping3/3 в обе стороны, cleanup/baseline и DB controls passed. Runtime backend/frontend c16fc0c healthy. Следующий12.5.69 — проверить безопасный импорт .conf: имя устройства/интерфейса, неполный клиентский шаблон и ошибки до применения; затем собственный native roundtrip. Этап12.5 открыт.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
|
||||
+16
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.67 развернул backend/frontend c16fc0c и подтвердил исправленный Peer .conf на собственной WireGuard паре двух CHR. API export6/6 и browser preview/live4/4 на1280/320px passed; endpoint экспортирующего сервера, client placeholders и отсутствие private-key подтверждены. Handshake, Ping3/3 в обе стороны, cleanup/baseline и DB controls passed. Все три сервера доступны с прежними доступами. Следующий12.5.68 — безопасный import roundtrip собственного WG конфига с проверкой native параметров и очисткой. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.68 подтвердил настоящий .rsc export → dry-run → delete → UI import на обоих CHR. Native параметры, публичная идентичность и эквивалентность private scalar сохранены; handshake/Ping3/3 в обе стороны, cleanup/baseline и DB controls passed. Runtime backend/frontend c16fc0c healthy. Следующий12.5.69 — проверить безопасный импорт .conf: имя устройства/интерфейса, неполный клиентский шаблон и ошибки до применения; затем собственный native roundtrip. Этап12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -34,7 +34,21 @@
|
||||
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
|
||||
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–67 и ограничения ниже. Runtime backend/frontend c16fc0c. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–68 и ограничения ниже. Runtime backend/frontend c16fc0c. |
|
||||
|
||||
## 12.5.68 — реальный .rsc roundtrip WireGuard через UI (2026-10-09)
|
||||
|
||||
Runtime backend/frontend c16fc0c не менялся. На обоих CHR создана собственная временная WG пара с уникальными name/comment,port51879,MTU1420 и198.18.255.241/30↔198.18.255.242/30. Исходный handshake/Ping3/3 подтверждены. POST export rsc с includePrivateKey=true получен только в памяти; исходные native keys и содержимое конфигураций не записывались в файлы, screenshots, traces или Git. Это собственные ключи тестовой пары, доступы серверов не менялись.
|
||||
|
||||
На обоих устройствах POST import dryRun=true вернул200; native интерфейс/пир/IP остались прежними. Затем обычный API DELETE удалил собственный исходный интерфейс и связанные объекты без остатков. Реальный UI импорт восстановил RSC на CHR1 при1280px и CHR2 при320px без HTTP mocks: server context изURL сохранился, локальный preview распознал собственное имя и одного пира, POST import dryRun=false вернул200 с applied.interfaceName и peersCreated=1, Sheet закрылся после подтверждения, интерфейс появился в таблице. Page errors/API errors/горизонтального page overflow нет.
|
||||
|
||||
Native проверка после UI восстановила name/comment,listen-port,MTU,один IPv4 address,одного peer,allowed-address,configured endpoint/port,keepalive и peer comment. Публичные ключи интерфейсов/пиров совпали с исходными. На CHR2 текстовая private-key запись после импорта отличается; нормализованные32байтные Curve25519 scalar совпали, а public identity сохранилась. Приёмка сравнивает эквивалентность scalar и public key, не обещает byte-for-byte неизменность raw encoding. Правило clamping проверено по [официальному исходнику WireGuard](https://git.zx2c4.com/wireguard-tools/tree/src/curve25519.h): изменения затрагивают предусмотренные биты. После восстановления настоящий handshake и Ping3/3 в обе стороны passed.
|
||||
|
||||
[Final native report](ux-ui/acceptance/wg-import-rsc-native-2026-10-09.json), [browser report](ux-ui/acceptance/browser-wg-import-rsc-c16fc0c-2026-10-09.json), [предыдущая диагностика raw-key](ux-ui/acceptance/wg-import-rsc-raw-key-check-2026-10-09.json), [DB controls](ux-ui/acceptance/wg-import-db-controls-2026-10-09.json). Первый browser запуск не завершил import; следующая native проверка отклонила raw private-key equality наCHR2. Каждая попытка очищена с совпавшим baseline; диагностическая проверка не объявлена успешной. В окончательном запуске поэлементные native checks passed на обоих устройствах и fixture exit0. Readiness ожидание наблюдателя добавлено в тестовый harness, данные конфигов не выводились при ошибках.
|
||||
|
||||
Own interfaces/peers/IP/connected routes удалены; WG/peers/IP/routes/IPv4 filter/nat/mangle совпали с исходным baseline на обоих CHR. Остались три основные службы, backend healthy. Business DB controls совпадают с контрольной точкой67:servers2,speedHistory9,retentionDays14,migrations9; audit revisions намеренно сохранены. Публичные JSON проверены на отсутствие ключей/конфигураций/паролей. Общие ReUI компоненты и product source не менялись; общая регрессия не повторялась для внешней приёмки.
|
||||
|
||||
Граница результата: правильный RSC собственного туннеля, preview и успешное применение с независимой связностью. Импорт .conf не принят: exporter не сохраняет имя/комментарии, parser использует wg0 по умолчанию; incomplete Peer .conf template требует отдельной проверки до применения. Partial failure/rollback, повторный import/коллизии, private-key UI download,IPv6/throughput/RBAC/внешние failures/multi-instance/Telegram/Portal и остальные протоколы/интеграции остаются открытыми. Следующий12.5.69 — preflight/ошибки .conf и затем безопасный собственный roundtrip. Локальный коммит без push.
|
||||
|
||||
## 12.5.67 — Docker deploy и реальный экспорт клиентского шаблона WireGuard (2026-10-09)
|
||||
|
||||
|
||||
+15
-1
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.67 развернул backend/frontend c16fc0c и подтвердил исправленный Peer .conf на собственной WireGuard паре двух CHR. API export6/6 и browser preview/live4/4 на1280/320px passed; endpoint экспортирующего сервера, client placeholders и отсутствие private-key подтверждены. Handshake, Ping3/3 в обе стороны, cleanup/baseline и DB controls passed. Все три сервера доступны с прежними доступами. Следующий12.5.68 — безопасный import roundtrip собственного WG конфига с проверкой native параметров и очисткой. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.68 подтвердил настоящий .rsc export → dry-run → delete → UI import на обоих CHR. Native параметры, публичная идентичность и эквивалентность private scalar сохранены; handshake/Ping3/3 в обе стороны, cleanup/baseline и DB controls passed. Runtime backend/frontend c16fc0c healthy. Следующий12.5.69 — проверить безопасный импорт .conf: имя устройства/интерфейса, неполный клиентский шаблон и ошибки до применения; затем собственный native roundtrip. Этап12.5 открыт.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -1704,3 +1704,17 @@ Server allowed-address не обозначает клиентские маршр
|
||||
Fixture завершён exit0 и удалён. Проверенные WG interfaces/peers/IP/routes/IPv4 filter/nat/mangle совпали с baseline на обоих CHR. Очистка только собственных объектов; audit revisions намеренно сохранены. DB controls до/после совпали:servers2,speedHistory9,retentionDays14,migrations9. Дополнительно сохранён ранее полученный screenshot создания на CHR2 в12.5.64 с исходной датой2026-10-08. Product code в этом блоке не менялся после уже проверенного c16fc0c; общая регрессия не повторялась.
|
||||
|
||||
Следующий12.5.68 — import roundtrip собственного конфигурационного файла с независимой проверкой параметров и очисткой. Client-allowed-address/готовый client import, private-key export modes/UI download,throughput/IPv6/RBAC/внешние failures/multi-instance/Telegram/Portal и остальные протоколы/интеграции остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.68 — реальный .rsc roundtrip WireGuard через UI (2026-10-09)
|
||||
|
||||
Runtime backend/frontend c16fc0c не менялся. На обоих CHR создана собственная временная WG пара с уникальными name/comment,port51879,MTU1420 и198.18.255.241/30↔198.18.255.242/30. Исходный handshake/Ping3/3 подтверждены. POST export rsc с includePrivateKey=true получен только в памяти; исходные native keys и содержимое конфигураций не записывались в файлы, screenshots, traces или Git. Это собственные ключи тестовой пары, доступы серверов не менялись.
|
||||
|
||||
На обоих устройствах POST import dryRun=true вернул200; native интерфейс/пир/IP остались прежними. Затем обычный API DELETE удалил собственный исходный интерфейс и связанные объекты без остатков. Реальный UI импорт восстановил RSC на CHR1 при1280px и CHR2 при320px без HTTP mocks: server context изURL сохранился, локальный preview распознал собственное имя и одного пира, POST import dryRun=false вернул200 с applied.interfaceName и peersCreated=1, Sheet закрылся после подтверждения, интерфейс появился в таблице. Page errors/API errors/горизонтального page overflow нет.
|
||||
|
||||
Native проверка после UI восстановила name/comment,listen-port,MTU,один IPv4 address,одного peer,allowed-address,configured endpoint/port,keepalive и peer comment. Публичные ключи интерфейсов/пиров совпали с исходными. На CHR2 текстовая private-key запись после импорта отличается; нормализованные32байтные Curve25519 scalar совпали, а public identity сохранилась. Приёмка сравнивает эквивалентность scalar и public key, не обещает byte-for-byte неизменность raw encoding. Правило clamping проверено по [официальному исходнику WireGuard](https://git.zx2c4.com/wireguard-tools/tree/src/curve25519.h): изменения затрагивают предусмотренные биты. После восстановления настоящий handshake и Ping3/3 в обе стороны passed.
|
||||
|
||||
[Final native report](ux-ui/acceptance/wg-import-rsc-native-2026-10-09.json), [browser report](ux-ui/acceptance/browser-wg-import-rsc-c16fc0c-2026-10-09.json), [предыдущая диагностика raw-key](ux-ui/acceptance/wg-import-rsc-raw-key-check-2026-10-09.json), [DB controls](ux-ui/acceptance/wg-import-db-controls-2026-10-09.json). Первый browser запуск не завершил import; следующая native проверка отклонила raw private-key equality наCHR2. Каждая попытка очищена с совпавшим baseline; диагностическая проверка не объявлена успешной. В окончательном запуске поэлементные native checks passed на обоих устройствах и fixture exit0. Readiness ожидание наблюдателя добавлено в тестовый harness, данные конфигов не выводились при ошибках.
|
||||
|
||||
Own interfaces/peers/IP/connected routes удалены; WG/peers/IP/routes/IPv4 filter/nat/mangle совпали с исходным baseline на обоих CHR. Остались три основные службы, backend healthy. Business DB controls совпадают с контрольной точкой67:servers2,speedHistory9,retentionDays14,migrations9; audit revisions намеренно сохранены. Публичные JSON проверены на отсутствие ключей/конфигураций/паролей. Общие ReUI компоненты и product source не менялись; общая регрессия не повторялась для внешней приёмки.
|
||||
|
||||
Граница результата: правильный RSC собственного туннеля, preview и успешное применение с независимой связностью. Импорт .conf не принят: exporter не сохраняет имя/комментарии, parser использует wg0 по умолчанию; incomplete Peer .conf template требует отдельной проверки до применения. Partial failure/rollback, повторный import/коллизии, private-key UI download,IPv6/throughput/RBAC/внешние failures/multi-instance/Telegram/Portal и остальные протоколы/интеграции остаются открытыми. Следующий12.5.69 — preflight/ошибки .conf и затем безопасный собственный roundtrip. Локальный коммит без push.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Тестовый сервер UX/UI — 2026-10-09
|
||||
|
||||
Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Активные backend/frontend sourcec16fc0c5b53ba8fcb6690ef6f0a695f59875f171/version1.0.0-test.c16fc0c обновлены в12.5.67; backend healthy, frontend HTTP200. SSH и оба CHR доступны с прежними доступами.
|
||||
Сервер161.104.46.222 предоставлен пользователем для временного тестирования с последующим удалением. Активные backend/frontend sourcec16fc0c5b53ba8fcb6690ef6f0a695f59875f171/version1.0.0-test.c16fc0c обновлены в12.5.67; backend healthy, frontend HTTP200. SSH и оба CHR доступны с прежними доступами. В12.5.68 RSC roundtrip принят на обоих CHR; исходный baseline восстановлен.
|
||||
|
||||
| Параметр | Проверенное состояние |
|
||||
| --- | --- |
|
||||
@@ -547,3 +547,17 @@ Server allowed-address не обозначает клиентские маршр
|
||||
Fixture завершён exit0 и удалён. Проверенные WG interfaces/peers/IP/routes/IPv4 filter/nat/mangle совпали с baseline на обоих CHR. Очистка только собственных объектов; audit revisions намеренно сохранены. DB controls до/после совпали:servers2,speedHistory9,retentionDays14,migrations9. Дополнительно сохранён ранее полученный screenshot создания на CHR2 в12.5.64 с исходной датой2026-10-08. Product code в этом блоке не менялся после уже проверенного c16fc0c; общая регрессия не повторялась.
|
||||
|
||||
Следующий12.5.68 — import roundtrip собственного конфигурационного файла с независимой проверкой параметров и очисткой. Client-allowed-address/готовый client import, private-key export modes/UI download,throughput/IPv6/RBAC/внешние failures/multi-instance/Telegram/Portal и остальные протоколы/интеграции остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.68 — реальный .rsc roundtrip WireGuard через UI (2026-10-09)
|
||||
|
||||
Runtime backend/frontend c16fc0c не менялся. На обоих CHR создана собственная временная WG пара с уникальными name/comment,port51879,MTU1420 и198.18.255.241/30↔198.18.255.242/30. Исходный handshake/Ping3/3 подтверждены. POST export rsc с includePrivateKey=true получен только в памяти; исходные native keys и содержимое конфигураций не записывались в файлы, screenshots, traces или Git. Это собственные ключи тестовой пары, доступы серверов не менялись.
|
||||
|
||||
На обоих устройствах POST import dryRun=true вернул200; native интерфейс/пир/IP остались прежними. Затем обычный API DELETE удалил собственный исходный интерфейс и связанные объекты без остатков. Реальный UI импорт восстановил RSC на CHR1 при1280px и CHR2 при320px без HTTP mocks: server context изURL сохранился, локальный preview распознал собственное имя и одного пира, POST import dryRun=false вернул200 с applied.interfaceName и peersCreated=1, Sheet закрылся после подтверждения, интерфейс появился в таблице. Page errors/API errors/горизонтального page overflow нет.
|
||||
|
||||
Native проверка после UI восстановила name/comment,listen-port,MTU,один IPv4 address,одного peer,allowed-address,configured endpoint/port,keepalive и peer comment. Публичные ключи интерфейсов/пиров совпали с исходными. На CHR2 текстовая private-key запись после импорта отличается; нормализованные32байтные Curve25519 scalar совпали, а public identity сохранилась. Приёмка сравнивает эквивалентность scalar и public key, не обещает byte-for-byte неизменность raw encoding. Правило clamping проверено по [официальному исходнику WireGuard](https://git.zx2c4.com/wireguard-tools/tree/src/curve25519.h): изменения затрагивают предусмотренные биты. После восстановления настоящий handshake и Ping3/3 в обе стороны passed.
|
||||
|
||||
[Final native report](ux-ui/acceptance/wg-import-rsc-native-2026-10-09.json), [browser report](ux-ui/acceptance/browser-wg-import-rsc-c16fc0c-2026-10-09.json), [предыдущая диагностика raw-key](ux-ui/acceptance/wg-import-rsc-raw-key-check-2026-10-09.json), [DB controls](ux-ui/acceptance/wg-import-db-controls-2026-10-09.json). Первый browser запуск не завершил import; следующая native проверка отклонила raw private-key equality наCHR2. Каждая попытка очищена с совпавшим baseline; диагностическая проверка не объявлена успешной. В окончательном запуске поэлементные native checks passed на обоих устройствах и fixture exit0. Readiness ожидание наблюдателя добавлено в тестовый harness, данные конфигов не выводились при ошибках.
|
||||
|
||||
Own interfaces/peers/IP/connected routes удалены; WG/peers/IP/routes/IPv4 filter/nat/mangle совпали с исходным baseline на обоих CHR. Остались три основные службы, backend healthy. Business DB controls совпадают с контрольной точкой67:servers2,speedHistory9,retentionDays14,migrations9; audit revisions намеренно сохранены. Публичные JSON проверены на отсутствие ключей/конфигураций/паролей. Общие ReUI компоненты и product source не менялись; общая регрессия не повторялась для внешней приёмки.
|
||||
|
||||
Граница результата: правильный RSC собственного туннеля, preview и успешное применение с независимой связностью. Импорт .conf не принят: exporter не сохраняет имя/комментарии, parser использует wg0 по умолчанию; incomplete Peer .conf template требует отдельной проверки до применения. Partial failure/rollback, повторный import/коллизии, private-key UI download,IPv6/throughput/RBAC/внешние failures/multi-instance/Telegram/Portal и остальные протоколы/интеграции остаются открытыми. Следующий12.5.69 — preflight/ошибки .conf и затем безопасный собственный roundtrip. Локальный коммит без push.
|
||||
@@ -0,0 +1,111 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"backendSource": "c16fc0c",
|
||||
"frontendSource": "c16fc0c",
|
||||
"name": "mm-acceptance-wg-1791509323535",
|
||||
"httpMocks": false,
|
||||
"cases": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"width": 1280,
|
||||
"format": "rsc",
|
||||
"localPreviewPassed": true,
|
||||
"selectedServerPreserved": true,
|
||||
"status": 200,
|
||||
"receiptConfirmed": true,
|
||||
"dialogClosedAfterReceipt": true,
|
||||
"noPageOverflow": true
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"width": 320,
|
||||
"format": "rsc",
|
||||
"localPreviewPassed": true,
|
||||
"selectedServerPreserved": true,
|
||||
"status": 200,
|
||||
"receiptConfirmed": true,
|
||||
"dialogClosedAfterReceipt": true,
|
||||
"noPageOverflow": true
|
||||
}
|
||||
],
|
||||
"native": {
|
||||
"ok": true,
|
||||
"handshakeConfirmed": true,
|
||||
"pings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"received": 3
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"received": 3
|
||||
}
|
||||
],
|
||||
"roundtrip": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"format": "rsc",
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceComment": true,
|
||||
"interfacePrivateScalarEquivalent": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerComment": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfacePublicIdentityUnchanged": true,
|
||||
"privateScalarEquivalent": true,
|
||||
"privateEncodingUnchanged": true,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"format": "rsc",
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceComment": true,
|
||||
"interfacePrivateScalarEquivalent": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerComment": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfacePublicIdentityUnchanged": true,
|
||||
"privateScalarEquivalent": true,
|
||||
"privateEncodingUnchanged": false,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"pageErrors": [],
|
||||
"badApi": [],
|
||||
"limits": [
|
||||
"Private RSC configs used only in memory; no traces/screenshots/config files persisted",
|
||||
"Only own objects restored; no .conf/client template import, failures or RBAC tested"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"runtime": "backend/frontend c16fc0c",
|
||||
"beforeSource": "Final control point 12.5.67; no unrelated data mutations during 12.5.68",
|
||||
"before": {
|
||||
"servers": 2,
|
||||
"speedHistory": 9,
|
||||
"retentionDays": 14,
|
||||
"migrations": 9
|
||||
},
|
||||
"after": {
|
||||
"servers": 2,
|
||||
"speedHistory": 9,
|
||||
"retentionDays": 14,
|
||||
"migrations": 9
|
||||
},
|
||||
"backendHealthy": true,
|
||||
"mainServices": 3,
|
||||
"temporaryFixtureContainersRemaining": 0,
|
||||
"auditRevisionsIntentionallyRetained": true
|
||||
}
|
||||
@@ -0,0 +1,380 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"backendSource": "c16fc0c",
|
||||
"frontendSource": "c16fc0c",
|
||||
"name": "mm-acceptance-wg-1791509323535",
|
||||
"subnet": "198.18.255.240/30",
|
||||
"listenPort": 51879,
|
||||
"realRouterOs": true,
|
||||
"changes": [
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/interfaces",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/interfaces",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/peers",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/peers",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/wireguard/interfaces/1/*15",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/wireguard/interfaces/1/*15",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/api/wireguard",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/export",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/import",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/export",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/import",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/1/*15",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/2/*11",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/peers/1/*12",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/1/*16",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/peers/2/*F",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/2/*12",
|
||||
"status": 200
|
||||
}
|
||||
],
|
||||
"pings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"target": "198.18.255.242",
|
||||
"interface": "mm-acceptance-wg-1791509323535",
|
||||
"received": 3,
|
||||
"rows": [
|
||||
{
|
||||
"sent": "1",
|
||||
"received": "1",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms494us",
|
||||
"avg-rtt": "54ms494us"
|
||||
},
|
||||
{
|
||||
"sent": "2",
|
||||
"received": "2",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms470us",
|
||||
"avg-rtt": "54ms482us"
|
||||
},
|
||||
{
|
||||
"sent": "3",
|
||||
"received": "3",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms557us",
|
||||
"avg-rtt": "54ms507us"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"target": "198.18.255.241",
|
||||
"interface": "mm-acceptance-wg-1791509323535",
|
||||
"received": 3,
|
||||
"rows": [
|
||||
{
|
||||
"sent": "1",
|
||||
"received": "1",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms683us",
|
||||
"avg-rtt": "54ms683us"
|
||||
},
|
||||
{
|
||||
"sent": "2",
|
||||
"received": "2",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms570us",
|
||||
"avg-rtt": "54ms626us"
|
||||
},
|
||||
{
|
||||
"sent": "3",
|
||||
"received": "3",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms773us",
|
||||
"avg-rtt": "54ms675us"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"/interface/wireguard": true,
|
||||
"/interface/wireguard/peers": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"/interface/wireguard": true,
|
||||
"/interface/wireguard/peers": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true
|
||||
}
|
||||
],
|
||||
"nativeKeyGenerationConfirmed": true,
|
||||
"connectedState": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"interface": {
|
||||
"rosId": "*15",
|
||||
"appId": "1:*15",
|
||||
"name": "mm-acceptance-wg-1791509323535",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509323535"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.241/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*11",
|
||||
"name": "mm-acceptance-wg-1791509323535-peer",
|
||||
"allowedAddresses": "198.18.255.242/32",
|
||||
"endpoint": "104.165.244.7:51879",
|
||||
"handshake": "1s",
|
||||
"rx": "180",
|
||||
"tx": "272",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509323535"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"interface": {
|
||||
"rosId": "*11",
|
||||
"appId": "2:*11",
|
||||
"name": "mm-acceptance-wg-1791509323535",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509323535"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.242/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*E",
|
||||
"name": "mm-acceptance-wg-1791509323535-peer",
|
||||
"allowedAddresses": "198.18.255.241/32",
|
||||
"endpoint": "194.226.121.150:51879",
|
||||
"handshake": "1s",
|
||||
"rx": "124",
|
||||
"tx": "180",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509323535"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"handshakeConfirmed": true,
|
||||
"bidirectionalPingPassed": true,
|
||||
"catalogMatchesNative": true,
|
||||
"roundtrip": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"format": "rsc",
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceComment": true,
|
||||
"interfacePrivateScalarEquivalent": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerComment": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfacePublicIdentityUnchanged": true,
|
||||
"privateScalarEquivalent": true,
|
||||
"privateEncodingUnchanged": true,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"format": "rsc",
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceComment": true,
|
||||
"interfacePrivateScalarEquivalent": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerComment": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfacePublicIdentityUnchanged": true,
|
||||
"privateScalarEquivalent": true,
|
||||
"privateEncodingUnchanged": false,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
}
|
||||
],
|
||||
"importedHandshakeConfirmed": true,
|
||||
"importedPings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"received": 3
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"received": 3
|
||||
}
|
||||
],
|
||||
"afterBrowser": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"interface": {
|
||||
"rosId": "*16",
|
||||
"appId": "1:*16",
|
||||
"name": "mm-acceptance-wg-1791509323535",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509323535"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.241/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*12",
|
||||
"name": "mm-acceptance-wg-1791509323535-peer",
|
||||
"allowedAddresses": "198.18.255.242/32",
|
||||
"endpoint": "104.165.244.7:51879",
|
||||
"handshake": "2s",
|
||||
"rx": "756",
|
||||
"tx": "848",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509323535"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"interface": {
|
||||
"rosId": "*12",
|
||||
"appId": "2:*12",
|
||||
"name": "mm-acceptance-wg-1791509323535",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509323535"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.242/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*F",
|
||||
"name": "mm-acceptance-wg-1791509323535-peer",
|
||||
"allowedAddresses": "198.18.255.241/32",
|
||||
"endpoint": "194.226.121.150:51879",
|
||||
"handshake": "2s",
|
||||
"rx": "700",
|
||||
"tx": "756",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509323535"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Only own WireGuard interface/peer/IP and connected route changed; no default routes/firewall changes",
|
||||
"Own private-key RSC used in memory for UI import; no config files or keys persisted",
|
||||
"Private/public/preshared keys omitted from report; native generation and peer association checked in memory",
|
||||
"Handshake and short ICMP connectivity, not throughput, RBAC or interrupted mutation",
|
||||
"WireGuard audit revisions intentionally retained"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,363 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"backendSource": "c16fc0c",
|
||||
"frontendSource": "c16fc0c",
|
||||
"name": "mm-acceptance-wg-1791509243055",
|
||||
"subnet": "198.18.255.240/30",
|
||||
"listenPort": 51879,
|
||||
"realRouterOs": true,
|
||||
"changes": [
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/interfaces",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/interfaces",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/peers",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/peers",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/wireguard/interfaces/1/*13",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/wireguard/interfaces/1/*13",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/api/wireguard",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/export",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/import",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/export",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/import",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/1/*13",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/2/*F",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/peers/1/*10",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/1/*14",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/peers/2/*D",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/2/*10",
|
||||
"status": 200
|
||||
}
|
||||
],
|
||||
"pings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"target": "198.18.255.242",
|
||||
"interface": "mm-acceptance-wg-1791509243055",
|
||||
"received": 3,
|
||||
"rows": [
|
||||
{
|
||||
"sent": "1",
|
||||
"received": "1",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms687us",
|
||||
"avg-rtt": "54ms687us"
|
||||
},
|
||||
{
|
||||
"sent": "2",
|
||||
"received": "2",
|
||||
"packet-loss": "0",
|
||||
"time": "55ms213us",
|
||||
"avg-rtt": "54ms950us"
|
||||
},
|
||||
{
|
||||
"sent": "3",
|
||||
"received": "3",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms924us",
|
||||
"avg-rtt": "54ms941us"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"target": "198.18.255.241",
|
||||
"interface": "mm-acceptance-wg-1791509243055",
|
||||
"received": 3,
|
||||
"rows": [
|
||||
{
|
||||
"sent": "1",
|
||||
"received": "1",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms475us",
|
||||
"avg-rtt": "54ms475us"
|
||||
},
|
||||
{
|
||||
"sent": "2",
|
||||
"received": "2",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms790us",
|
||||
"avg-rtt": "54ms632us"
|
||||
},
|
||||
{
|
||||
"sent": "3",
|
||||
"received": "3",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms563us",
|
||||
"avg-rtt": "54ms609us"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"/interface/wireguard": true,
|
||||
"/interface/wireguard/peers": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"/interface/wireguard": true,
|
||||
"/interface/wireguard/peers": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true
|
||||
}
|
||||
],
|
||||
"nativeKeyGenerationConfirmed": true,
|
||||
"connectedState": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"interface": {
|
||||
"rosId": "*13",
|
||||
"appId": "1:*13",
|
||||
"name": "mm-acceptance-wg-1791509243055",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509243055"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.241/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*F",
|
||||
"name": "mm-acceptance-wg-1791509243055-peer",
|
||||
"allowedAddresses": "198.18.255.242/32",
|
||||
"endpoint": "104.165.244.7:51879",
|
||||
"handshake": "0s",
|
||||
"rx": "180",
|
||||
"tx": "272",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509243055"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"interface": {
|
||||
"rosId": "*F",
|
||||
"appId": "2:*F",
|
||||
"name": "mm-acceptance-wg-1791509243055",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509243055"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.242/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*C",
|
||||
"name": "mm-acceptance-wg-1791509243055-peer",
|
||||
"allowedAddresses": "198.18.255.241/32",
|
||||
"endpoint": "194.226.121.150:51879",
|
||||
"handshake": "1s",
|
||||
"rx": "124",
|
||||
"tx": "180",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509243055"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"handshakeConfirmed": true,
|
||||
"bidirectionalPingPassed": true,
|
||||
"catalogMatchesNative": true,
|
||||
"roundtrip": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"format": "rsc",
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceComment": true,
|
||||
"interfacePrivateIdentity": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerComment": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfaceKeysUnchanged": true,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"format": "rsc",
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceComment": true,
|
||||
"interfacePrivateIdentity": false,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerComment": true,
|
||||
"address": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"verifyFailure": "Imported native field mismatch",
|
||||
"afterBrowser": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"interface": {
|
||||
"rosId": "*14",
|
||||
"appId": "1:*14",
|
||||
"name": "mm-acceptance-wg-1791509243055",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509243055"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.241/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*10",
|
||||
"name": "mm-acceptance-wg-1791509243055-peer",
|
||||
"allowedAddresses": "198.18.255.242/32",
|
||||
"endpoint": "104.165.244.7:51879",
|
||||
"handshake": "0s",
|
||||
"rx": "180",
|
||||
"tx": "272",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509243055"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"interface": {
|
||||
"rosId": "*10",
|
||||
"appId": "2:*10",
|
||||
"name": "mm-acceptance-wg-1791509243055",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509243055"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.242/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*D",
|
||||
"name": "mm-acceptance-wg-1791509243055-peer",
|
||||
"allowedAddresses": "198.18.255.241/32",
|
||||
"endpoint": "194.226.121.150:51879",
|
||||
"handshake": "1s",
|
||||
"rx": "124",
|
||||
"tx": "180",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791509243055"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Only own WireGuard interface/peer/IP and connected route changed; no default routes/firewall changes",
|
||||
"Own private-key RSC used in memory for UI import; no config files or keys persisted",
|
||||
"Private/public/preshared keys omitted from report; native generation and peer association checked in memory",
|
||||
"Handshake and short ICMP connectivity, not throughput, RBAC or interrupted mutation",
|
||||
"WireGuard audit revisions intentionally retained"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user