From bdaef4dc397a4981e6cff722b43b12adb5e8b596 Mon Sep 17 00:00:00 2001 From: zuevav Date: Fri, 18 Sep 2026 14:46:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D0=BA=D0=B8:=20=C2=AB=D0=9A=D0=B0=D0=B1=D0=B8=D0=BD=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0=C2=BB=20(?= =?UTF-8?q?=D0=BD=D0=B0=D1=88=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C)=20?= =?UTF-8?q?=D0=B8=20=C2=AB=D0=95=D0=A1=D0=98=D0=90=20=D0=A4=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D0=BD=D1=81=C2=BB=20(=D0=B2=D0=BD=D0=B5=D1=88=D0=BD?= =?UTF-8?q?=D1=8F=D1=8F=20=D0=BF=D0=BB=D0=B0=D1=82=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0)=20=E2=80=94=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D1=80=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL --- internal/lkgateway/lkdist.go | 10 +++++----- .../lkgateway/web/templates/admin_help_lk.html | 2 +- .../lkgateway/web/templates/admin_setup.html | 16 ++++++++++++---- modules/lk/install.go | 2 +- modules/lk/relay-php/index.php | 8 ++++---- modules/lk/templates.go | 6 +++--- 6 files changed, 26 insertions(+), 18 deletions(-) diff --git a/internal/lkgateway/lkdist.go b/internal/lkgateway/lkdist.go index 02dc469..c280295 100644 --- a/internal/lkgateway/lkdist.go +++ b/internal/lkgateway/lkdist.go @@ -102,7 +102,7 @@ func lkDistFiles(s Settings, coreURL string) ([]struct { BJ_MODE=%s # Адрес ядра bj, к которому обращается кабинет (только для режима direct): %s -# Ключ доступа модуля — из настроек ядра, раздел «Личный кабинет». Оставьте пустым, +# Ключ доступа модуля — из настроек ядра, раздел «Кабинет клиента». Оставьте пустым, # чтобы ввести его в установщике; заполните — если ставите без браузера. BJ_KEY= # Адрес и порт, на которых кабинет слушает (за ним обычно стоит nginx с TLS): @@ -186,7 +186,7 @@ echo "Проверка службы: curl -s http://127.0.0.1:8099/health" спросит способ связи с ядром и ключ доступа, проверит связь и предложит завести администратора кабинета. Настройки он сохранит в файл lk.json (каталог LK_DATA, права 0600). Ключа в этом архиве нет — берите его из - настроек ядра, раздел «Личный кабинет». + настроек ядра, раздел «Кабинет клиента». 4. Проверка службы: curl -s http://127.0.0.1:8099/health — "ok":true. Установка без браузера: заполните BJ_KEY (и BJ_URL для режима direct) в lk.env и @@ -194,7 +194,7 @@ echo "Проверка службы: curl -s http://127.0.0.1:8099/health" Настройки (файл /etc/bj-lk/lk.env): BJ_URL — адрес ядра bj: %s - BJ_KEY — ключ доступа модуля, он же в настройках ядра, раздел «Личный кабинет» + BJ_KEY — ключ доступа модуля, он же в настройках ядра, раздел «Кабинет клиента» LISTEN — адрес и порт кабинета (по умолчанию 127.0.0.1:8099) LK_TITLE — заголовок кабинета: %s После изменения файла: sudo systemctl restart bj-lk @@ -220,7 +220,7 @@ echo "Проверка службы: curl -s http://127.0.0.1:8099/health" ждёт, пока ядро само подключится к нему по имени %s, заберёт запросы клиентов и вернёт ответы. Наружу из сети депозитария идёт только исходящее соединение, порты открывать не нужно. В настройках ядра - («Личный кабинет» → связь) выберите «Ядро подключается к кабинету» и + («Кабинет клиента» → связь) выберите «Ядро подключается к кабинету» и укажите адрес этого сервера. Сеть и безопасность: @@ -236,7 +236,7 @@ echo "Проверка службы: curl -s http://127.0.0.1:8099/health" страница не запрашивает; Обновления. Кабинет обновляется отдельно от ядра: новую версию скачивайте на -странице настроек ядра, раздел «Личный кабинет», и ставьте тем же install.sh — +странице настроек ядра, раздел «Кабинет клиента», и ставьте тем же install.sh — настройки при этом сохраняются. Версии кабинета и ядра должны быть совместимы; если ядро старше, кабинет покажет предупреждение администратору. diff --git a/internal/lkgateway/web/templates/admin_help_lk.html b/internal/lkgateway/web/templates/admin_help_lk.html index 775d12a..03ec0b0 100644 --- a/internal/lkgateway/web/templates/admin_help_lk.html +++ b/internal/lkgateway/web/templates/admin_help_lk.html @@ -14,7 +14,7 @@

В обоих случаях ключа в архиве нет — его вводят в установщике, открыв адрес кабинета в браузере. Способы связи с ядром (кабинет → ядро или ядро → кабинет) одинаковы для всех вариантов.

Шаг 1. Ключ и архив

-

Настройки → «Личный кабинет» → «Кабинет клиента на своём сервере»: создайте ключ доступа (он показан на странице целиком — его нужно ввести в установщике) и скачайте архив. В архиве — исполняемый файл, служба systemd, файл настроек службы, установщик и README. Ключа в архиве нет.

+

Настройки → «Кабинет клиента» → «Кабинет клиента на своём сервере»: создайте ключ доступа (он показан на странице целиком — его нужно ввести в установщике) и скачайте архив. В архиве — исполняемый файл, служба systemd, файл настроек службы, установщик и README. Ключа в архиве нет.

Шаг 2а. PHP-хостинг: файлы в каталог сайта

Создайте в панели хостинга домен (например, lk.депозитарий.ru) с сертификатом, скопируйте index.php и .htaccess в его каталог и откройте адрес в браузере — запустится установщик (шаг 3). Настройки ретранслятор положит в каталог bj-lk-data рядом с сайтом, если хостинг разрешает туда писать, иначе — в data внутри сайта, закрытый правилами .htaccess. Если у хостинга nginx без .htaccess — правила из README архива.

diff --git a/internal/lkgateway/web/templates/admin_setup.html b/internal/lkgateway/web/templates/admin_setup.html index bbf22b7..95a0c51 100644 --- a/internal/lkgateway/web/templates/admin_setup.html +++ b/internal/lkgateway/web/templates/admin_setup.html @@ -12,7 +12,8 @@ - + + @@ -614,9 +615,10 @@ function hbBind(inp,box,list,onPick){ {{/* ============ ЛИЧНЫЙ КАБИНЕТ ============ */}} -
-

Личный кабинет · ЕСИА Финанс

-

Интеграция с платформой ЛК ЕСИА Финанс: адрес для клиента, приём заявок M2M, возврат статуса и подключение к API (тест/бой). НРД настраивается отдельно — в разделе «НРД».

+ {{/* ============ КАБИНЕТ КЛИЕНТА (наш модуль bj-lk) ============ */}} +
+

Кабинет клиента

+

Наш личный кабинет для клиентов депозитария: модуль bj-lk на своём сервере или PHP-хостинге, связь с ядром, учётные записи клиентов и сотрудников. Интеграция с платформой ЕСИА Финанс — отдельный раздел.

{{template "verline" (.Versions.Get "bj-lk")}}
@@ -728,6 +730,12 @@ function hbBind(inp,box,list,onPick){
+
+ + {{/* ============ ЕСИА ФИНАНС (внешняя платформа ЛК) ============ */}} +
+

ЕСИА Финанс

+

Интеграция с внешней платформой личного кабинета ЕСИА Финанс: адрес для клиента, приём заявок M2M, возврат статуса и подключение к API (тест/бой). Наш собственный кабинет настраивается в разделе «Кабинет клиента».

Личный кабинет — интеграция

Адрес ЛК (стенд/бой), куда клиент подаёт заявку M2M. Заявка приходит к нам по контракту POST /api/v1/back_office/claims/, а мы возвращаем статус через Callback URL.

diff --git a/modules/lk/install.go b/modules/lk/install.go index 6a45fe2..019ec45 100644 --- a/modules/lk/install.go +++ b/modules/lk/install.go @@ -217,7 +217,7 @@ func (s *Server) installConnect(w http.ResponseWriter, r *http.Request, d instal d.Cfg = cfg switch { case cfg.BJKey == "": - d.Error = "Укажите ключ доступа модуля — он создаётся в настройках ядра, раздел «Личный кабинет»." + d.Error = "Укажите ключ доступа модуля — он создаётся в настройках ядра, раздел «Кабинет клиента»." case !cfg.Agent && cfg.BJURL == "": d.Error = "Укажите адрес ядра или выберите режим «ядро подключается к кабинету»." case !cfg.Agent && !strings.HasPrefix(cfg.BJURL, "https://") && cfg.insecureCore(): diff --git a/modules/lk/relay-php/index.php b/modules/lk/relay-php/index.php index 9ab473f..1b83a96 100644 --- a/modules/lk/relay-php/index.php +++ b/modules/lk/relay-php/index.php @@ -486,7 +486,7 @@ function installer(array $cfg): never $vals['bj_url'] = rtrim($vals['bj_url'], '/'); $new = ['mode' => $vals['mode'] === 'agent' ? 'agent' : 'direct', 'bj_url' => $vals['bj_url'], 'bj_key' => $vals['bj_key'], 'title' => $vals['title']]; if ($new['bj_key'] === '') { - $error = 'Укажите ключ доступа модуля — он создаётся в настройках ядра, раздел «Личный кабинет».'; + $error = 'Укажите ключ доступа модуля — он создаётся в настройках ядра, раздел «Кабинет клиента».'; } elseif ($new['mode'] === 'direct' && $new['bj_url'] === '') { $error = 'Укажите адрес ядра или выберите режим «ядро подключается к кабинету».'; } elseif ($new['mode'] === 'direct' && !str_starts_with($new['bj_url'], 'https://') && !preg_match('~^http://(127\.0\.0\.1|localhost)~', $new['bj_url'])) { @@ -557,7 +557,7 @@ function installer(array $cfg): never . '' . '
' . '
' - . '

Создаётся в настройках ядра: «Личный кабинет» → «Создать ключ».

' + . '

Создаётся в настройках ядра: «Кабинет клиента» → «Создать ключ».

' . ''; page('Три шага — и кабинет работает', $f, $side, $steps); } @@ -578,13 +578,13 @@ function adminForm(string $csrf, string $notice, string $error, array $steps, st function done(string $side): never { - page('Кабинет установлен', '

Готово

Клиенты входят по логину и паролю, которые выдаёт депозитарий. Учётные записи заводятся в настройках ядра, раздел «Личный кабинет». Настройки ретранслятора — в ' . h(dataDir()) . '/config.php; чтобы пройти установку заново, удалите его.

Перейти ко входу
', $side); + page('Кабинет установлен', '

Готово

Клиенты входят по логину и паролю, которые выдаёт депозитарий. Учётные записи заводятся в настройках ядра, раздел «Кабинет клиента». Настройки ретранслятора — в ' . h(dataDir()) . '/config.php; чтобы пройти установку заново, удалите его.

Перейти ко входу
', $side); } function installWait(array $cfg): never { securityHeaders(); - $side = 'В настройках ядра (раздел «Личный кабинет») выберите «Ядро подключается к кабинету» и укажите адрес этого сайта. Ключ должен совпадать.'; + $side = 'В настройках ядра (раздел «Кабинет клиента») выберите «Ядро подключается к кабинету» и укажите адрес этого сайта. Ключ должен совпадать.'; if (coreSeen()) { adminForm(csrfToken(), 'Ядро подключилось к кабинету. Осталось завести администратора.', '', [['Проверка сервера', true], ['Связь с ядром', true], ['Администратор кабинета', true]], $side); } diff --git a/modules/lk/templates.go b/modules/lk/templates.go index e23ea0c..6388f45 100644 --- a/modules/lk/templates.go +++ b/modules/lk/templates.go @@ -331,7 +331,7 @@ input[type=checkbox]{width:20px;min-height:20px;height:20px} {{if $d.Waiting}}
Настройки сохранены. Ждём, когда ядро подключится к кабинету по адресу {{$d.Host}}… Страница обновляется сама.
-

В настройках ядра (раздел «Личный кабинет») выберите «Ядро подключается к кабинету» и укажите этот адрес. Ключ должен совпадать.

+

В настройках ядра (раздел «Кабинет клиента») выберите «Ядро подключается к кабинету» и укажите этот адрес. Ключ должен совпадать.

{{else}} @@ -356,7 +356,7 @@ input[type=checkbox]{width:20px;min-height:20px;height:20px}
-

Создаётся в настройках ядра: «Личный кабинет» → «Создать ключ».

+

Создаётся в настройках ядра: «Кабинет клиента» → «Создать ключ».

{{end}} @@ -382,7 +382,7 @@ input[type=checkbox]{width:20px;min-height:20px;height:20px} {{define "install_done"}}{{template "head" .}} +

Готово

Клиенты входят по логину и паролю, которые выдаёт депозитарий. Учётные записи заводятся в настройках ядра, раздел «Кабинет клиента».

{{end}} {{define "installed"}}{{template "head" .}}