9737c787f9
Инфраструктура M2M (живой обмен с НРД через ИШ): - обработка M2MTransferResponse: ERROR(M2Mxx) → заявка Отклонена, сохранение ответа; INFO → ждём Decision; идемпотентность поллера - fallback-корреляция ответов с нулевым GUID (M2M14/M2M17) по FIFO - сырой XML ответа НРД в карточке заявки (для пересылки в ТП) - тестовый пакет роботу приведён к эталону m2m_robot_samples (CostInfo=Yes, 4 бумаги, IsolationStatus, DocumentSeries=сценарий); override паспорта - редирект из теста сразу в карточку заявки Мастер установки ключа Валидаты на флешку (admin/setup/keywizard): - пошаговый: загрузка .7z+пароль → выбор флешки → запись → справочник сертификатов (CRL) → перезапуск+проверка ИШ → готово - привилегированный воркер (bj-keymedia) в host-namespace через файл-обмен, bj-server остаётся в песочнице - сохранение структуры профиля архива (spr<N>), перечисление съёмных USB Прочее: - пакет-доказательство для ТП НРД + форма регистрации участника M2M - эталонные образцы робота (DOC/m2m_robot_samples) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
111 lines
4.8 KiB
HTML
111 lines
4.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>bj-installer — мастер установки Bridge-and-Join-s</title>
|
|
<link rel="stylesheet" href="/style.css">
|
|
</head>
|
|
<body>
|
|
<header class="topbar">
|
|
<div class="logo">Bridge-and-Join-s</div>
|
|
<div class="subtitle">мастер установки</div>
|
|
</header>
|
|
|
|
<main id="app">
|
|
<!-- ===== Stepper ===== -->
|
|
<nav class="stepper" id="stepper">
|
|
<span data-stage="welcome">1. Старт</span>
|
|
<span data-stage="precheck">2. Проверка</span>
|
|
<span data-stage="config">3. Настройка</span>
|
|
<span data-stage="installing">4. Установка</span>
|
|
<span data-stage="done">5. Готово</span>
|
|
</nav>
|
|
|
|
<!-- ===== Welcome ===== -->
|
|
<section class="page" data-stage="welcome">
|
|
<h1>Добро пожаловать</h1>
|
|
<p>Этот мастер установит на сервер <b>СКЗИ «Валидата Клиент L»</b>,
|
|
<b>bj-server</b>, <b>bj-crypto</b> и <b>ИШ НРД</b>, настроит
|
|
systemd-сервисы и подготовит окружение для подписи документов
|
|
по ГОСТ 34.10-2012.</p>
|
|
<p class="muted">После установки откроется <code>/admin/setup</code> в bj-server, где можно
|
|
загрузить тестовый профиль от MOEX (.7z) и активировать подпись.</p>
|
|
<div class="buttons">
|
|
<button class="primary" onclick="startPrecheck()">Начать →</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ===== Precheck ===== -->
|
|
<section class="page" data-stage="precheck">
|
|
<h1>Проверка системы</h1>
|
|
<div id="precheck-results" class="checks"></div>
|
|
<div class="buttons">
|
|
<button onclick="goWelcome()">← Назад</button>
|
|
<button class="primary" id="goConfigBtn" onclick="goConfig()">Дальше →</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ===== Config ===== -->
|
|
<section class="page" data-stage="config">
|
|
<h1>Настройка</h1>
|
|
<form id="config-form" onsubmit="event.preventDefault(); startInstall();">
|
|
<label>ИНН организации
|
|
<input type="text" name="orgInn" placeholder="7702077840" pattern="\d{10}|\d{12}">
|
|
</label>
|
|
<label>Название организации (для отображения)
|
|
<input type="text" name="orgName" placeholder="ПАО Московская Биржа">
|
|
</label>
|
|
<label>Email администратора
|
|
<input type="email" name="adminEmail" placeholder="admin@example.com">
|
|
</label>
|
|
<label>Лицензионный ключ (опционально)
|
|
<input type="text" name="licenseKey" placeholder="BJ-XXXX-XXXX-XXXX">
|
|
<span class="muted">Без ключа сервис работает, но обновления заблокированы. Получить можно в личном кабинете.</span>
|
|
</label>
|
|
<div class="buttons">
|
|
<button type="button" onclick="goPrecheck()">← Назад</button>
|
|
<button class="primary" type="submit">Установить →</button>
|
|
</div>
|
|
</form>
|
|
</section>
|
|
|
|
<!-- ===== Installing ===== -->
|
|
<section class="page" data-stage="installing">
|
|
<h1>Установка</h1>
|
|
<ol id="step-list" class="steps"></ol>
|
|
<div class="progress"><div id="progress-bar" class="progress-bar"></div></div>
|
|
</section>
|
|
|
|
<!-- ===== Done ===== -->
|
|
<section class="page" data-stage="done">
|
|
<h1>✓ Готово</h1>
|
|
<p>bj-server и все сервисы запущены. Откройте панель администратора и
|
|
импортируйте профиль:</p>
|
|
<div class="next-link">
|
|
<a href="" id="adminLink" class="primary-link">Перейти в /admin/setup →</a>
|
|
</div>
|
|
<p class="muted">Что дальше:</p>
|
|
<ol>
|
|
<li>Подключите USB с .vdk → он автоматически смонтируется в <code>/var/lib/bj/usb/</code></li>
|
|
<li>На <code>/admin/setup</code> загрузите .7z с профилем от MOEX и введите пароль</li>
|
|
<li>Нажмите «Активировать» — bj-crypto подтянет ключ и подтвердит готовность</li>
|
|
</ol>
|
|
</section>
|
|
|
|
<!-- ===== Error ===== -->
|
|
<section class="page" data-stage="error">
|
|
<h1>✗ Установка прервана</h1>
|
|
<p>Произошла ошибка:</p>
|
|
<pre id="error-message" class="error"></pre>
|
|
<p class="muted">Логи: <code>journalctl -u bj-installer</code> и <code>journalctl -u bj-crypto</code></p>
|
|
<div class="buttons">
|
|
<button onclick="resetWizard()">Начать заново</button>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<script src="/app.js"></script>
|
|
</body>
|
|
</html>
|