- moduleForPath: quik-mnp (QUIK, обмен с DEPO, ручной поиск в DEPO), quik-export, web-cabinet (bj-lk);
- в настройках каждый модуль по своему признаку (раньше Экспорт QUIK и Кабинет шли общим условием);
- разделы Fancy/QUIK открыты при лицензии QUIK МНП без пароля перспективных модулей.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- редакция SQL Server определяется (Express/PostgreSQL — обработку запускает bj);
- создание джобы и таблиц — логином администратора, который не сохраняется;
- настройки обмена с DEPO открыты без пароля перспективных модулей, если QUIK МНП в лицензии.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- /admin/setup/update/progress: этап, байты, целевая версия ядра; ApplyUpdate/ApplyBundle отчитываются;
- окно в layout: формы установки обновлений отправляются скриптом, окно ждёт перезапуска ядра и сверяет версию;
- шаг 1 мастера: «Ключ продукта введён», смена ключа — под ссылкой.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- deploy/iso/build-ubuntu-updates-layer.sh: слой ubuntu-server-minimal.ubuntu-server.bj.squashfs поверх
«Ubuntu Server» (оригинальные слои и среда установщика не меняются) + debs/ для bj-installer;
- build-iso-ubuntu.sh LAYER=<каталог>: слой — источник установки по умолчанию, старые ядро HWE и прошивки
из репозитория образа убираются;
- bj-installer: пакеты из /var/lib/bj/debs ставятся с диска, иначе — из репозитория.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
- мастер запоминает пройденный шаг и продолжает со следующего, выполненные шаги показываются с пояснением;
- шаг 5: мастер установки ключа + описание автоматического ведения сертификатов НРД (контуры не смешиваются);
- образ: bj-installer и crypto-service.jar в комплекте; установщик пропускает недостающие файлы, кроме ядра.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
Раньше 2026.09.24.11 и 2026.09.24.5 считались одной версией, и обновление в пределах
одного дня не предлагалось. Исправление выпускается как 2026.09.25.1, чтобы его увидели
установки со старым сравнением.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
Правки установки приезжают обновлением с сервера лицензий, образ ISO пересобирать не нужно.
Прежний установщик обновлений bj-installer не знает — он откладывается и ставится после
перезапуска bj-server (ensureSplitModules).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
По результатам первого реального boot-теста образа (QEMU/OVMF, BIOS + UEFI +
UEFI Secure Boot — все три доходят до меню, наш пункт по умолчанию):
- подписи пунктов латиницей: vesamenu (BIOS) кириллицу не отображает — были
кракозябры; в grub тот же риск со шрифтом темы;
- подсказка обратного отсчёта своя («Bridge&Join install starts in # seconds»)
и пишется в конец isolinux.cfg ПОСЛЕ include menu.cfg — внутри menu.cfg
подменю Advanced повторно включает stdmenu.cfg и перебивало autoboot из txt.cfg;
- горячая клавиша b (i занята родным «Install» в grub);
- без «(Debian 13)» в подписи — обрезалось краем бокса темы UEFI, и так в заголовке;
- chmod u+w перед >> в isolinux.cfg: файлы, извлечённые xorriso из ISO, 0444.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
- L2b: CSRF для изменяющих запросов админки — проверка Origin (иначе Referer)
против Host на всех не-GET под /admin (sameOriginRequest в authMiddleware);
за loopback-прокси учитывается X-Forwarded-Host. Второй слой поверх
SameSite=Lax, без правки десятков форм настроек.
- L3: /back-to-admin меняет состояние — только POST + csrfOK (форма уже с токеном,
проверки в обработчике не было).
- L6: EXEC процедуры DEPO по имени из настроек — через execProc с проверкой
идентификатора (sqlident.go, см. коммит строчных событий).
- L7: сессия просмотра (impersonate) снимает IsAdmin цели — сотрудник не действует
от имени другого администратора; свои действия — из своей сессии.
- L8: bootstrap администратора кабинета под замком lkBootstrapMu — два
параллельных запроса не заведут двух админов (TOCTOU).
- L10: allowlist перезапуска служб не пропускает пустое имя.
- L11: ретранслятор — лимит тела проверяется по Content-Length до чтения и
чтение ограничено RELAY_MAX_BODY+1.
- M4: .htaccess дополнительно запрещает *.lock (код установки), если данные
оказались в веб-корне; nginx-запрет /data уже в README.
L4 (привязка сессии к сети по умолчанию выкл.) и L9 (косметическая cookie
bj_lk_admin, арбитр — ядро) оставлены как есть, отмечены в отчёте.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL