Первичная настройка, повторная проверка: копии без ключевых носителей СКЗИ (--one-file-system, без keymedia), без отпечатка железа и списка компонентов; восстановление на новый сервер — пароль базы bj из копии, база и пользователь ИШ; ключ для контура без канала запоминается и подключается при настройке канала; первый настроенный канал становится рабочим контуром; справочник сертификатов перечитывается после ключа и смены контура; шлюз НРД — шаг 7, ключ — шаг 8 (ключ ставится в профиль ИШ); подсказка контура ключа по сертификату; ИШ: параметры работающего шлюза не перезаписываются; без чужого кода отправителя и получателя по умолчанию; прокси для выхода в интернет; установка с образа без интернета; HTTPS — новый сертификат при смене адреса; bj-network — без cloud-init; проверка готовности: справочник участников, сетевые доступы, учётные записи, последний обмен с НРД

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-05 17:33:10 +03:00
parent 765d7b5994
commit 10305a095e
25 changed files with 634 additions and 95 deletions
+5
View File
@@ -93,6 +93,11 @@ func registerFirstRunRestore(mux *http.ServeMux) {
mux.HandleFunc("/first-run/backup/list", op("list"))
mux.HandleFunc("/first-run/backup/restore", op("restore"))
mux.HandleFunc("/first-run/backup/status", func(w http.ResponseWriter, r *http.Request) {
// без входа — только пока сервер ждёт первичной настройки или восстановление шло в последние полчаса
if st, err := os.Stat(restoreStatusFile); !firstRunPending() && (err != nil || time.Since(st.ModTime()) > 30*time.Minute) {
http.NotFound(w, r)
return
}
out := map[string]any{}
if raw, err := os.ReadFile(restoreStatusFile); err == nil {
var rs map[string]any