fix(settings): проверять резервные копии и исключить секреты из журнала

This commit is contained in:
Denozordec committed 2026-10-03 14:36:12 +07:00
1 parent e5842b415b
commit ff8b04bddf
7 files changed
+78 -47

No files matched your search

+9 -1
View File
@@ -28,7 +28,7 @@
| 9 | VPN, Firewall и Filters | Завершён в границах локальной приёмки 2026-09-30; блоки 9.1–9.64, ограничения в 9.64 |
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.3.6.1.2; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.3.6.2.1; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
@@ -36,6 +36,14 @@
## Блок 11Б.3.6.2.1 — system database API и журнал (2026-10-03)
- Export reader проверяет PGDMP prefix/nonempty binary вместо принятия HTML/JSON, безопасное leaf filename (RFC5987/quoted/plain) и fallback .dump вместо .db. Restore проверяет размер ≤512 МБ, PGDMP prefix и caller abort до POST; после запроса нужен strict literal ok receipt, false/204/malformed/contradictory error не дают успеха. Нет автоматического повтора; 10 минут timeout/caller signal не отменяет серверное восстановление.
- Helper возвращает отдельные event/listener/scheduler warnings в receipt для следующего backend/UI блока; действующий backend пока отдаёт ok:true. Prefix — проверка формата, не полная проверка целостности архива или доказательство восстановления.
- Из новых backup/restore event payload удалён databasePath=DATABASE_URL, который мог содержать пароль подключения. Ненужный getSystemDatabasePath удалён; прежние строки журнала не переписывались, реальная БД недоступна. Unused readFile import и blank EOF исправлены по lint/diff gate.
- 3 API unit группы (valid/unsafe exports; invalid/oversize/abort без POST; strict receipts/errors без повтора), общий typecheck, backend build, профильный lint и production frontend/contracts build прошли; окончательный strict receipt дополнительно проверен unit после build.
- UI system DB/source/locks/unknown review и backend restart/event partial outcomes ещё не приняты. Текущий pg_restore пока без single transaction; реальное восстановление не запускалось. Следующий блок 11Б.3.6.2.2 — backend transaction/partial outcomes и DI HTTP/JWT; затем отдельная форма 11Б.3.6.2.3.
## Блок 11Б.3.6.1.2 — достоверный health источника (2026-10-03)
- DataSource health привязан к immutable token каждой смены backend URL, revision/AbortController и active lifetime; старый success/error и ABA не меняют новый статус. Новый источник не наследует прежний available status. Checking отличается от not checked; повторная проверка отменяет прежний reader.