From 42ae5ed12b72f7e0232530c26e214e4f7856c962 Mon Sep 17 00:00:00 2001 From: fontvielle Date: Wed, 21 Oct 2026 10:00:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BB=D1=8E=D1=87:=20igate-traverse=20?= =?UTF-8?q?=D0=BA=20staging=20(/var/lib/bj)=20=E2=80=94=20=D1=87=D0=B8?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=20=D0=BB=D0=BE=D0=B6=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=C2=AB=D0=BD=D0=B5=D1=82=20local.pse=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Пересборку справочника crestor запускает igate, а /var/lib/bj был 0750 bj:bj — igate не мог пройти в staging и выдавал ложное «нет local.pse». bj-server при старте даёт /var/lib/bj traverse (0751) — доезжает обновлением. Воркер bj-keymedia-install тоже даёт права и показывает реальную ошибку crestor вместо спама «dropped older CRL» (для новых ISO). Убрана ошибочная подсказка про ГСЧ. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn --- deploy/linux/sbin/bj-keymedia-install | 3 ++- internal/lkgateway/keywizard.go | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/deploy/linux/sbin/bj-keymedia-install b/deploy/linux/sbin/bj-keymedia-install index 2c86695..1e5b3e8 100755 --- a/deploy/linux/sbin/bj-keymedia-install +++ b/deploy/linux/sbin/bj-keymedia-install @@ -264,8 +264,9 @@ sleep 2 # ---- ПЕРЕСОБРАТЬ совместимый справочник на флешке (архивный gdbm malformed) ---- REBUILD_RES="skip" if [ -n "$SPRNAME" ] && [ -x "$REBUILD" ] && [ -f "$FLASH_SPR/local.pse" ]; then + chmod o+x /var/lib/bj 2>/dev/null; chmod -R a+rX "$FLASH_SPR" 2>/dev/null # igate (crestor) должен читать staging под /var/lib/bj RB=$("$REBUILD" "$FLASH_SPR" 2>&1) - if echo "$RB" | grep -q '"ok":true'; then REBUILD_RES="ok"; else REBUILD_RES="fail: $(echo "$RB"|tr -d '\n"'|head -c160)"; fi + if echo "$RB" | grep -q '"ok":true'; then REBUILD_RES="ok"; else e=$(echo "$RB" | grep -o '"error":"[^"]*"' | head -1 | sed 's/^"error":"//;s/"$//'); [ -n "$e" ] || e=$(echo "$RB"|tr -d '\n"'|head -c160); REBUILD_RES="fail: $e"; fi sync fi diff --git a/internal/lkgateway/keywizard.go b/internal/lkgateway/keywizard.go index c7aff5c..c6cb5b9 100644 --- a/internal/lkgateway/keywizard.go +++ b/internal/lkgateway/keywizard.go @@ -255,6 +255,10 @@ func (h *setupHandlers) registerKeyWizard(mux *http.ServeMux) { h.keyWiz = newKeyWizardState() } mux.HandleFunc("/admin/setup/keywizard", h.renderKeyWizard) + // igate (пересборка справочника воркером bj-keymedia-install) должен проходить в staging + // под /var/lib/bj: даём каталогу traverse (bj — владелец). Без этого пересборка падала + // ложным «нет local.pse». Доезжает обновлением bj-server. + _ = os.Chmod(filepath.Dir(keymediaReqDir), 0o751) mux.HandleFunc("/admin/setup/keywizard/upload", h.keyWizardUpload) mux.HandleFunc("/admin/setup/keywizard/install", h.keyWizardInstall) mux.HandleFunc("/admin/setup/keywizard/reset", h.keyWizardReset) @@ -659,7 +663,7 @@ func keyInstallProblem(res map[string]any) string { check, _ := res["keycheck"].(string) switch { case rebuild != "ok" && rebuild != "as-is": - return "справочник сертификатов не собран — " + rebuildRu(rebuild) + " Если не инициализирован датчик случайных чисел Валидаты (блок «Датчик случайных чисел» выше) — пересборка не подпишется: поводите мышью в поле до заполнения полосы и повторите." + return "справочник сертификатов не собран — " + rebuildRu(rebuild) case igate != "connected" && igate != "pending-channel": return "профиль ИШ не сформирован — " + strings.TrimSuffix(igateRu(igate), ":") case strings.HasPrefix(check, "fail"):