diff --git a/internal/lkgateway/updater.go b/internal/lkgateway/updater.go index 7b2809b..5022094 100644 --- a/internal/lkgateway/updater.go +++ b/internal/lkgateway/updater.go @@ -27,13 +27,16 @@ import ( var BuildVersion = "0.1.0" // DefaultUpdatePublicKey — публичный ключ артефактории, зашитый в релиз. -// Пустой в исходниках; подставляется при официальной сборке. Если задан в +// Открытая часть ключа подписи релизов. Если задан в // настройках (UpdateSettings.PublicKey) — приоритет у настроек (для проверки // в bj; root-установщик верит только /etc/bj/update.pub). -var DefaultUpdatePublicKey = "" +var DefaultUpdatePublicKey = "GHC/gJdQOAEVuBmq8pRpfG+CoIwtcjpNlSf6bPFtr/Y=" // ~/keys/release-signing.pub (закрытый ключ хранится вне сервера лицензий) const updateStagingDir = "/var/lib/bj/update-staging" +// DefaultUpdateURL — сервер обновлений по умолчанию (встроен в сервер лицензий). +const DefaultUpdateURL = "https://lic.zetit.ru/updates" + type Updater struct{ rc *RuntimeConfig } func NewUpdater(rc *RuntimeConfig) *Updater { return &Updater{rc: rc} } @@ -55,14 +58,23 @@ func (u *Updater) updateClient() (*release.Client, error) { if pub == "" { pub = DefaultUpdatePublicKey } - if cfg.BaseURL == "" || pub == "" { - return nil, fmt.Errorf("обновления не настроены (нужны URL артефактории и публичный ключ)") + base := cfg.BaseURL + if base == "" { + base = DefaultUpdateURL + } + if pub == "" { + return nil, fmt.Errorf("обновления не настроены: в этой сборке нет открытого ключа подписи релизов") } channel := cfg.Channel if channel == "" { channel = "stable" } - return release.NewClient(cfg.BaseURL, channel, pub) + cl, err := release.NewClient(base, channel, pub) + if err != nil { + return nil, err + } + cl.Token = strings.TrimSpace(u.rc.Snapshot().License.Key) // лицензионный токен установки + return cl, nil } // CheckForUpdate — манифест и состояние каждого компонента. diff --git a/internal/lkgateway/web/templates/admin_setup.html b/internal/lkgateway/web/templates/admin_setup.html index 72d044a..6902a7a 100644 --- a/internal/lkgateway/web/templates/admin_setup.html +++ b/internal/lkgateway/web/templates/admin_setup.html @@ -947,10 +947,10 @@

Источник обновлений

-

Артефактория раздаёт подписанные релизы. Обновления проверяются по подписи Ed25519 и sha256 — без валидной подписи установка не выполняется.

+

Обновления раздаёт сервер лицензий по лицензии этой установки: модуль скачивается, только если он входит в лицензию. Каждый релиз проверяется по подписи Ed25519 и контрольным суммам, без действительной подписи установка не выполняется.

- +