Автоматический режим M2M по умолчанию; контуры НРД карточками; адрес папок шлюза для проводника; Zabbix — в «Диагностике»

- M2M: «bj сам — автоматически» — режим по умолчанию (где ни разу не выбирали; момент включения записывается, берутся переводы не старше суток до него); «Оператор» — запасной; явный выбор не меняется.
- Контуры НРД: TEST3 и боевой — карточки с состоянием (Активный / Готов / Нужен ключ / Канала нет); «Сделать активным» видна всегда, без ключа неактивна с пояснением; «Установить ключ», «Обновить канал».
- Папки шлюза по сети: после открытия — адреса для проводника (\\IP\igate_exchange и по имени сервера, боевой — igate_exchange_prod) с кнопкой «Скопировать»; bj-igate-admin share status отдаёт ip, host, shares.
- Zabbix перенесён из «Оповещений» в «Диагностику».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-07 08:29:25 +03:00
parent 50303c1790
commit a53b9f9e9f
8 changed files with 138 additions and 43 deletions
+9 -2
View File
@@ -1,6 +1,7 @@
package lkgateway
import (
"log"
"encoding/json"
"errors"
"os"
@@ -364,10 +365,16 @@ func NewRuntimeConfig(path string) (*RuntimeConfig, error) {
path = filepath.Join(home, ".bj", "setup.json")
}
rc := &RuntimeConfig{path: path}
if err := rc.load(); err != nil && !errors.Is(err, os.ErrNotExist) {
return nil, err
loadErr := rc.load()
if loadErr != nil && !errors.Is(loadErr, os.ErrNotExist) {
return nil, loadErr
}
migrateNotifyRoutes(&rc.data) // и на новой установке: версия маршрутов сохранится с первой записью настроек
if migrateM2MAutoDefault(&rc.data, time.Now()) && loadErr == nil {
if err := rc.save(); err != nil { // момент включения — отсчёт «за сутки до» для автоматики; должен пережить перезапуск
log.Printf("setup: автоматический режим M2M по умолчанию не записан: %v", err)
}
}
// Гарантируем разумные дефолты.
if rc.data.Crypto.Provider == "" {
rc.data.Crypto.Provider = "stub"