From d88963bd8d6a2b4b4ca5491e0d962df643225bdb Mon Sep 17 00:00:00 2001 From: zuevav Date: Mon, 5 Oct 2026 18:09:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=86=D0=B5=D0=BF=D0=BE=D1=87=D0=BA=D0=B8:=20=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=B7=D0=B2=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=BF=D0=B8=D1=81=D0=B8=20=E2=80=94=20=D0=BF=D0=B0=D0=BA?= =?UTF-8?q?=D0=B5=D1=82=D1=8B=20=D0=9D=D0=A0=D0=94=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=20=D1=88=D0=BB?= =?UTF-8?q?=D1=8E=D0=B7=20(=D0=98=D0=A8=20=E2=80=94=20=D0=B5=D0=B4=D0=B8?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D0=B2=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=B2?= =?UTF-8?q?=D0=BB=D0=B0=D0=B4=D0=B5=D0=BB=D0=B5=D1=86=20=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B0),=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B7=D0=B2=D0=B5=D0=BD=D0=BE=D0=BC=20=D0=9D=D0=A0?= =?UTF-8?q?=D0=94;=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7:=20=D0=B4=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=B8=D0=B1=D1=83=D1=82=D0=B8=D0=B2=20=D0=98=D0=A8?= =?UTF-8?q?=20=D0=B2=20=D1=81=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=B5=20(IGATE?= =?UTF-8?q?=3D=E2=80=A6),=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=81=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B0=20?= =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=BD=D0=B5?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi --- internal/lkgateway/chaintest.go | 25 +++---------------- .../lkgateway/web/templates/part_letters.html | 2 +- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/internal/lkgateway/chaintest.go b/internal/lkgateway/chaintest.go index d093085..8a60ae9 100644 --- a/internal/lkgateway/chaintest.go +++ b/internal/lkgateway/chaintest.go @@ -5,14 +5,13 @@ package lkgateway // - учёт DEPO: проверочное событие BJ_PING обработано процедурами обмена; // - QUIK МНП: объекты, инструменты, справочник получателей (только чтение); // - QUIK МНП, по желанию: пробная блокировка 1 шт. бумаги клиента («Вывод ЦБ (M2M)») и сразу снятие; -// - подпись ключом организации (Валидата); -// - НРД: запрос справочника участников уходит через шлюз и подписывается, ответ приходит во входящие. +// - НРД: запрос справочника участников уходит через шлюз — шлюз подписывает его ключом организации (ИШ — +// единственный владелец ключа для НРД), НРД принимает и отвечает, ответ приходит во входящие. // Звенья идут по очереди; упавшее не останавливает остальные — видно всю картину. import ( "context" "encoding/json" - "fmt" "net/http" "regexp" "sort" @@ -20,8 +19,6 @@ import ( "strings" "sync" "time" - - "git.zetit.ru/zuevav/Bridge-and-Join-s/internal/cryptocli" ) // ChainStep — звено проверки. @@ -69,7 +66,7 @@ func chainRun(rc *RuntimeConfig, nsdReal bool, blk *chainQuikBlock) { steps = append(steps, ChainStep{Key: "quik-block", Title: "QUIK МНП: пробная блокировка 1 бумаги и снятие"}) } } - steps = append(steps, ChainStep{Key: "sign", Title: "Подпись ключом организации"}, ChainStep{Key: "nsd", Title: "НРД: запрос через шлюз — ответ получен"}) + steps = append(steps, ChainStep{Key: "nsd", Title: "НРД: запрос через шлюз подписан ключом, доставлен, ответ получен"}) for i := range steps { steps[i].State = "wait" } @@ -126,20 +123,6 @@ func chainStepRun(rc *RuntimeConfig, s Settings, key string, nsdReal bool, blk * return "ok", "подключение, объекты M2M, инструменты и справочник получателей на месте" case "quik-block": return chainQuikBlockRun(s, blk) - case "sign": - if s.Crypto.Provider == "" || s.Crypto.Provider == "stub" { - return "err", "средство подписи не настроено" - } - cli := cryptocli.New(cryptocli.Config{Provider: cryptocli.Provider(s.Crypto.Provider), SocketPath: s.Crypto.SocketPath, ModulePath: s.Crypto.ModulePath}) - defer cli.Close() - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() - payload := []byte("") - sig, err := cli.SignXMLDSig(ctx, payload, "", s.Crypto.Profile) - if err != nil { - return "err", "подпись не получилась: " + err.Error() - } - return "ok", fmt.Sprintf("подпись получена (%d байт)", len(sig)) case "nsd": if !nsdReal { return "err", "шлюз НРД не настроен — bj работает в режиме имитации (раздел «Шлюз НРД»)" @@ -159,7 +142,7 @@ func chainStepRun(rc *RuntimeConfig, s Settings, key string, nsdReal bool, blk * return "err", "шлюз не доставил пакет в НРД: " + delErr } if reply.After(start) { - d := "НРД ответил за " + humanDur(reply.Sub(sent)) + " — подпись, шлюз, доставка и входящие работают" + d := "НРД ответил за " + humanDur(reply.Sub(sent)) + " — ключ организации, шлюз, доставка и входящие работают" if deliv.After(start) { d = "пакет доставлен в НРД, " + d } diff --git a/internal/lkgateway/web/templates/part_letters.html b/internal/lkgateway/web/templates/part_letters.html index 0a1f46c..7f20dda 100644 --- a/internal/lkgateway/web/templates/part_letters.html +++ b/internal/lkgateway/web/templates/part_letters.html @@ -16,7 +16,7 @@ {{define "chainTest"}}

Проверить всю цепочку

-

Сквозная проверка без настоящего перевода: bj по очереди проходит каждое звено и показывает, какое работает, а какое нет.{{if .DepoLicensed}} Учёт DEPO — проверочное событие, QUIK — только чтение (пробная блокировка — по желанию, ниже).{{end}} Подпись — ключом организации. НРД — запрос справочника участников через шлюз с ответом НРД.

+

Сквозная проверка без настоящего перевода: bj по очереди проходит каждое звено и показывает, какое работает, а какое нет.{{if .DepoLicensed}} Учёт DEPO — проверочное событие, QUIK — только чтение (пробная блокировка — по желанию, ниже).{{end}} НРД — запрос справочника участников через шлюз: шлюз подписывает его ключом организации, НРД отвечает.

{{if .DepoLicensed}}
Добавить пробную блокировку в QUIK (1 бумага клиента — заблокировать и сразу снять)