Мастер настройки — 4 главы (Сервер, Учёт и организация, НРД, Запуск) вместо 10 шагов: в пути только нужное этой установке — без лицензии учёта DEPO, QUIK и модулей их шагов нет, сделанное установщиком (база, Валидата) показано строкой; общая навигация «Назад/Далее»; раздел «Время и сеть» с часовым поясом; модули по лицензии (кабинет, ЕСИА Финанс, экспорт QUIK, НПР) с переходом в раздел и возвратом в мастер; «Проверить всю цепочку» (DEPO, QUIK, пробная блокировка по желанию, подпись, НРД); готовые письма в НРД, ARQA и администратору DEPO; ИШ с образа без интернета
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package lkgateway
|
||||
|
||||
// Интеграционный шлюз НРД (ИШ, служба igate) на этом сервере: состояние для мастера (шаг 7).
|
||||
// Интеграционный шлюз НРД (ИШ, служба igate) на этом сервере: состояние для мастера (глава «НРД»).
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -14,6 +14,8 @@ import (
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/release"
|
||||
)
|
||||
|
||||
const igateDefaultURL = "http://localhost:8090"
|
||||
@@ -120,6 +122,7 @@ func registerIgateAdmin(mux *http.ServeMux, rc *RuntimeConfig) {
|
||||
res["deponent"] = pickStr(s.NSD.DeponentCode, orgCode(s))
|
||||
res["depo_db"] = s.Fancy.DepoDB()
|
||||
res["depo_db_test"], res["depo_db_prod"] = s.NSD.DepoDBTest, s.NSD.DepoDBProd
|
||||
res["bundled"] = igateBundledVersion()
|
||||
jsonOut(w, res)
|
||||
})
|
||||
// установка или обновление ИШ: загруженный архив НРД или версия для скачивания с nsd.ru
|
||||
@@ -150,6 +153,12 @@ func registerIgateAdmin(mux *http.ServeMux, rc *RuntimeConfig) {
|
||||
return
|
||||
}
|
||||
params["file"] = dst
|
||||
} else if r.FormValue("bundled") == "1" {
|
||||
if igateBundledVersion() == "" {
|
||||
jsonOut(w, map[string]any{"ok": false, "error": "в образе нет дистрибутива ИШ — скачайте с сайта НРД или загрузите файл"})
|
||||
return
|
||||
}
|
||||
params["bundled"] = "1"
|
||||
} else if v := strings.TrimSpace(r.FormValue("version")); igateVersionRe.MatchString(v) {
|
||||
params["version"] = v
|
||||
} else {
|
||||
@@ -187,7 +196,7 @@ func registerIgateAdmin(mux *http.ServeMux, rc *RuntimeConfig) {
|
||||
}
|
||||
dep := pickStr(s.NSD.DeponentCode, orgCode(s))
|
||||
if dep == "" {
|
||||
jsonOut(w, map[string]any{"ok": false, "error": "сначала укажите депозитарный код организации (шаг 4)"})
|
||||
jsonOut(w, map[string]any{"ok": false, "error": "сначала укажите депозитарный код организации (мастер, раздел «Организация»)"})
|
||||
return
|
||||
}
|
||||
extra, _ := json.Marshal(map[string]string{"contour": contour, "crypto": crypto, "deponent": dep})
|
||||
@@ -300,7 +309,7 @@ func registerIgateAdmin(mux *http.ServeMux, rc *RuntimeConfig) {
|
||||
name := map[string]string{"prod": "боевой", "test3": "тестовый TEST3"}[contour]
|
||||
msg := "bj переключён на " + name + " контур (база DEPO " + rc.Snapshot().Fancy.DepoDB() + ") и перезапускается — обновите страницу через 15 секунд"
|
||||
if !rc.Snapshot().Fancy.DepoTablesCheckOK {
|
||||
msg += ". База DEPO сменилась — пройдите шаг 3 (таблицы обмена и обработка в этой базе)"
|
||||
msg += ". База DEPO сменилась — пройдите в мастере раздел «Учёт DEPO» (таблицы обмена и обработка в этой базе)"
|
||||
}
|
||||
jsonOut(w, map[string]any{"ok": true, "output": msg})
|
||||
})
|
||||
@@ -318,3 +327,16 @@ func refreshCertStore(rc *RuntimeConfig) {
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
// igateBundledVersion — версия ИШ, лежащего на сервере с образа (/var/lib/bj/igate-dist; "" — нет).
|
||||
func igateBundledVersion() string {
|
||||
m, _ := filepath.Glob("/var/lib/bj/igate-dist/igate-*-amd64.zip")
|
||||
best := ""
|
||||
for _, f := range m {
|
||||
v := strings.ReplaceAll(strings.TrimSuffix(strings.TrimPrefix(filepath.Base(f), "igate-"), "-amd64.zip"), "-", ".")
|
||||
if igateVersionRe.MatchString(v) && (best == "" || release.IsNewer(v, best)) {
|
||||
best = v
|
||||
}
|
||||
}
|
||||
return best
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user