Агенты подхватывают изменения с сервера: каталог и самообновление
CI / test (push) Successful in 1m29s
CI / test (push) Successful in 1m29s
- сервер отдаёт агенту итоговый каталог (встроенный каталог сервера + переопределения клиента); если каталог не подходит версии агента — встроенный каталог агента и предупреждение - самообновление перед бэкапом: версия сервера новее → скачивание с того же сервера (только /dl/...), проверка sha256 и запуска новой версии, подмена с откатом, перезапуск через exec; при ошибке бэкап идёт текущей версией - галочка «Автообновление» у клиента (по умолчанию включена), версия агента в списке и карточке, отставшие подсвечены; версия сервера в шапке - миграция существующей базы: колонки auto_update и agent_version - backupctl backup --no-update Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1947b26913
commit
488abc2d34
21 files changed
+674
-51
No files matched your search
@@ -25,6 +25,8 @@ type Config struct {
|
||||
MaxUpload int64 // максимальный размер одной части, байт
|
||||
// TrustProxy — брать IP клиента из X-Forwarded-For (за Caddy).
|
||||
TrustProxy bool
|
||||
// Version — версия сервера; до неё обновляются агенты с включённым автообновлением.
|
||||
Version string
|
||||
}
|
||||
|
||||
type Server struct {
|
||||
@@ -35,6 +37,9 @@ type Server struct {
|
||||
|
||||
uploadMu sync.Mutex
|
||||
uploads map[int64]bool // бэкапы, в которые сейчас идёт загрузка
|
||||
|
||||
shaMu sync.Mutex
|
||||
shaCache map[string]binarySum // sha256 раздаваемых бинарников
|
||||
}
|
||||
|
||||
func New(cfg Config) (*Server, error) {
|
||||
@@ -54,7 +59,8 @@ func New(cfg Config) (*Server, error) {
|
||||
st.Close()
|
||||
return nil, err
|
||||
}
|
||||
return &Server{cfg: cfg, st: st, pages: pages, login: newLoginLimiter(), uploads: map[int64]bool{}}, nil
|
||||
return &Server{cfg: cfg, st: st, pages: pages, login: newLoginLimiter(), uploads: map[int64]bool{},
|
||||
shaCache: map[string]binarySum{}}, nil
|
||||
}
|
||||
|
||||
func (s *Server) Close() error { return s.st.Close() }
|
||||
|
||||
Reference in new issue
Block a user