From 365ec1196d54e46948f61d64377156222ce49019 Mon Sep 17 00:00:00 2001 From: fontvielle Date: Wed, 21 Oct 2026 11:29:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=82=D0=B0=D1=82=D1=83=D1=81:=20=D0=BA?= =?UTF-8?q?=D0=B0=D1=80=D1=82=D0=BE=D1=87=D0=BA=D0=B0=20=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B0=20=D0=BE=D1=80=D0=B3=D0=B0=D0=BD=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=E2=80=94=20=D0=BA=D0=BE=D0=BD=D1=82=D1=83?= =?UTF-8?q?=D1=80=20=D0=B8=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=82=D0=BA=D0=B0=20?= =?UTF-8?q?=C2=AB=D0=98=D0=A1=D0=A2=D0=81=D0=9A=C2=BB;=20SMB-=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=BE=D0=BB=D1=8C=20=D0=BF=D0=B0=D0=BF=D0=BE=D0=BA=20?= =?UTF-8?q?=D1=88=D0=BB=D1=8E=D0=B7=D0=B0=20=E2=80=94=20=D0=B3=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B8=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ключ организации на странице «Статус» теперь строится из своего сертификата в справочнике активного профиля ИШ (ownStoreCerts), включая истёкший: карточка показывает владельца, издателя, контур (боевой/тестовый) и срок. Истёкший ключ виден явной пометкой «ИСТЁК» и отдельным заголовком, а не маскируется под «ключ не подключён». Показать владельца ДО установки ключа нельзя — сертификата нет в файлах флешки, он появляется в справочнике профиля только после установки. Папки шлюза по сети (простой режим): кнопка «Сгенерировать» создаёт надёжный пароль (16 символов, crypto.getRandomValues) прямо в поле, поле теперь видимое; после сохранения пароль показывается один раз с кнопкой «Скопировать» — записать, так как позже bj его не покажет. Пустое поле по-прежнему оставляет прежний пароль при повторном сохранении. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn --- internal/lkgateway/admin.go | 16 ++++++++++------ .../lkgateway/web/templates/part_igate.html | 18 ++++++++++++++++-- .../lkgateway/web/templates/part_status.html | 12 ++++++------ 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/internal/lkgateway/admin.go b/internal/lkgateway/admin.go index c7cefcf..25bb391 100644 --- a/internal/lkgateway/admin.go +++ b/internal/lkgateway/admin.go @@ -68,17 +68,21 @@ var templateFuncs = template.FuncMap{ if globalRC == nil { return nil } - own := ownValidCerts(storeCertsForUI(globalRC.Snapshot())) + // Свой сертификат из справочника активного профиля ИШ — включая истёкший, + // чтобы «Статус» показал владельца и пометку «ИСТЁК», а не просто «не подключён». + own := ownStoreCerts(globalRC.Snapshot()) if len(own) == 0 { return nil } - c := own[0] - for _, x := range own[1:] { // самый долгий — тот, что в работе - if x.NotAfter.After(c.NotAfter) { - c = x + c, ca := own[0], storeNotAfter(own[0]) + for _, x := range own[1:] { // самый долгий срок — тот ключ, что в работе + if t := storeNotAfter(x); t.After(ca) { + c, ca = x, t } } - return map[string]any{"Owner": c.SubjectCN, "Issuer": c.IssuerCN, "Until": c.NotAfter.Format("02.01.2006"), "Days": certDaysLeft(c.NotAfter)} + contour := map[string]string{"prod": "боевой", "guest": "гостевой", "test3": "тестовый"}[contourOf(currentNSDProfile())] + return map[string]any{"Owner": c.SubjectCN, "Issuer": c.IssuerCN, "Until": ca.Format("02.01.2006"), + "Days": certDaysLeft(ca), "Expired": !ca.IsZero() && ca.Before(time.Now()), "Contour": contour} }, // СКЗИ готова: Валидата установлена и ключ организации подключён (как шаги мастера «Валидата» и «Ключ») "cryptoReady": func() bool { diff --git a/internal/lkgateway/web/templates/part_igate.html b/internal/lkgateway/web/templates/part_igate.html index 5984873..57775e2 100644 --- a/internal/lkgateway/web/templates/part_igate.html +++ b/internal/lkgateway/web/templates/part_igate.html @@ -94,8 +94,9 @@
- +
+ Пароль вводят в Windows при первом открытии папок. Запишите его: bj передаёт пароль в Samba и показать позже не сможет. Пустое поле при повторном сохранении оставляет прежний пароль.