Ключ: «У меня уже есть подготовленная флешка — использовать ключ с неё» — без записи на флешку

- Флешка с готовым ключом (например, с другого сервера bj) используется как есть:
  bj-keymedia-install use-media ничего на неё не пишет — справочник для ИШ
  пересобирается в копии на диске, из неё — профиль ИШ; этапы и кнопки — «использовать
  ключ с флешки», «на неё ничего не записывается».
- Ключевая флешка подключается к ИШ постоянно и только на чтение, как на рабочем
  сервере: строка fstab по UUID на /var/lib/igate/keymedia с автомонтированием
  (прежний fstab — копией), ссылка реестра ключей igate на флешку. И при обычной
  установке (запись архива) — тоже: на свежем сервере Валидата иначе не находила ключ.

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-06 18:28:08 +03:00
parent 0a0408a3cc
commit dd59c47dc0
4 changed files with 152 additions and 6 deletions
@@ -42,6 +42,29 @@
</form>
</div>
</div>
{{else if and $s.StagingID $s.MediaDevice}}
{{/* ключ с подготовленной флешки — используется как есть, на флешку ничего не пишется */}}
<div class="card">
<h2>Шаг 2 — использовать ключ с флешки</h2>
<p class="muted">На флешке уже подготовленный ключ: <code>{{fallbackTpl $s.VDK "—"}}</code>{{if $s.MediaProfile}}, профиль <code>{{$s.MediaProfile}}</code>{{end}}.
bj подключит его к шлюзу НРД <b>как есть</b>: на флешку ничего не записывается — справочник для ИШ собирается на диске сервера, флешка подключается только для чтения.</p>
<form method="post" action="/admin/setup/keywizard/install" style="margin-top:12px;display:grid;gap:12px;max-width:640px"
onsubmit="this.querySelector('button[type=submit]').disabled=true;this.querySelector('button[type=submit]').textContent='Подключаю… (до пары минут)';">
{{template "keyWizRet" .}}
<input type="hidden" name="as_is" value="1">
<div>
<label style="font-weight:600;display:block;margin-bottom:6px">Для какого контура НРД этот ключ</label>
{{$c := .SuggestContour}}{{if not $c}}{{$c = .WantContour}}{{end}}{{if not $c}}{{$c = currentContour}}{{end}}
{{if .SuggestIssuer}}<p class="muted" style="font-size:12px;margin:0 0 4px">Сертификат от «{{.SuggestIssuer}}» — это {{if eq .SuggestContour "test3"}}тестовый{{else}}боевой{{end}} контур.</p>{{end}}
<label style="display:flex;gap:8px;align-items:center;font-weight:400"><input type="radio" name="contour" value="test3" style="width:auto" {{if ne $c "prod"}}checked{{end}}> Тестовый TEST3</label>
<label style="display:flex;gap:8px;align-items:center;font-weight:400"><input type="radio" name="contour" value="prod" style="width:auto" {{if eq $c "prod"}}checked{{end}}> Боевой</label>
</div>
<button type="submit" class="btn btn-ok">Использовать ключ с флешки</button>
</form>
<form method="post" action="/admin/setup/keywizard/reset" style="margin-top:8px">{{template "keyWizRet" .}}
<button type="submit" class="btn btn-secondary">Отмена</button>
</form>
</div>
{{else if $s.StagingID}}
{{/* Архив загружен — выбор флешки + запись */}}
<div class="card">
@@ -107,7 +130,7 @@
<button type="submit" class="btn btn-ok">Загрузить и распаковать</button>
</form>
<div style="margin-top:18px;padding-top:14px;border-top:1px solid var(--border)">
<p class="muted" style="margin:0 0 8px"><b>Ключ уже на флешке</b> (готовили раньше или получили с ключом и справочником): bj возьмёт ключ и справочник с флешки — она только читается — и подключит их к шлюзу НРД. Архив не нужен.</p>
<p class="muted" style="margin:0 0 8px"><b>У меня уже есть подготовленная флешка</b> — использовать ключ с неё (например, флешка с другого сервера bj). Флешка используется как есть: bj её только читает, ничего на неё не записывает. Архив не нужен.</p>
{{if .Drives}}
<form method="post" action="/admin/setup/keywizard/from-media" style="display:grid;gap:8px;max-width:640px">
{{template "keyWizRet" .}}
@@ -118,7 +141,7 @@
<span class="muted" style="font-size:12px">{{$d.Device}}{{if $d.IsKeymedia}} · <b style="color:var(--accent)">сейчас ключевой носитель ИШ</b>{{end}}</span></span>
</label>
{{end}}
<button type="submit" class="btn btn-secondary" onclick="this.textContent='Читаю флешку…'">Взять ключ с флешки</button>
<button type="submit" class="btn btn-secondary" onclick="this.textContent='Читаю флешку…'">Использовать ключ с флешки</button>
</form>
{{else}}<p class="muted" style="font-size:13px;margin:0">Флешка не найдена — вставьте её в сервер и обновите страницу.</p>{{end}}
</div>