Статус: карточка ключа организации — контур и пометка «ИСТЁК»; SMB-пароль папок шлюза — генерация и показ
Ключ организации на странице «Статус» теперь строится из своего сертификата в справочнике активного профиля ИШ (ownStoreCerts), включая истёкший: карточка показывает владельца, издателя, контур (боевой/тестовый) и срок. Истёкший ключ виден явной пометкой «ИСТЁК» и отдельным заголовком, а не маскируется под «ключ не подключён». Показать владельца ДО установки ключа нельзя — сертификата нет в файлах флешки, он появляется в справочнике профиля только после установки. Папки шлюза по сети (простой режим): кнопка «Сгенерировать» создаёт надёжный пароль (16 символов, crypto.getRandomValues) прямо в поле, поле теперь видимое; после сохранения пароль показывается один раз с кнопкой «Скопировать» — записать, так как позже bj его не покажет. Пустое поле по-прежнему оставляет прежний пароль при повторном сохранении. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user