From 0deeb281eaa5be317325d8eec7c1faa54754fe8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sat, 10 Jan 2026 00:40:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=9D=A2=E6=9D=BF=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/job/job.go | 2 +- internal/job/panel_task.go | 10 ++++++++-- internal/service/cli.go | 5 ++++- internal/service/home.go | 6 ++++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/internal/job/job.go b/internal/job/job.go index 34543343..cb985621 100644 --- a/internal/job/job.go +++ b/internal/job/job.go @@ -46,7 +46,7 @@ func (r *Jobs) Register(c *cron.Cron) error { if _, err := c.AddJob("0 4 * * *", NewCertRenew(r.conf, r.db, r.log, r.setting, r.cert, r.certAccount)); err != nil { return err } - if _, err := c.AddJob("0 2 * * *", NewPanelTask(r.db, r.log, r.backup, r.cache, r.task, r.setting)); err != nil { + if _, err := c.AddJob("0 2 * * *", NewPanelTask(r.conf, r.db, r.log, r.backup, r.cache, r.task, r.setting)); err != nil { return err } diff --git a/internal/job/panel_task.go b/internal/job/panel_task.go index 0b001b6e..bfae9ade 100644 --- a/internal/job/panel_task.go +++ b/internal/job/panel_task.go @@ -1,12 +1,14 @@ package job import ( + "fmt" "log/slog" "math/rand/v2" "runtime" "runtime/debug" "time" + "github.com/acepanel/panel/pkg/config" "github.com/hashicorp/go-version" "github.com/libtnb/utils/collect" "gorm.io/gorm" @@ -19,6 +21,7 @@ import ( // PanelTask 面板每日任务 type PanelTask struct { api *api.API + conf *config.Config db *gorm.DB log *slog.Logger backupRepo biz.BackupRepo @@ -27,9 +30,10 @@ type PanelTask struct { settingRepo biz.SettingRepo } -func NewPanelTask(db *gorm.DB, log *slog.Logger, backup biz.BackupRepo, cache biz.CacheRepo, task biz.TaskRepo, setting biz.SettingRepo) *PanelTask { +func NewPanelTask(conf *config.Config, db *gorm.DB, log *slog.Logger, backup biz.BackupRepo, cache biz.CacheRepo, task biz.TaskRepo, setting biz.SettingRepo) *PanelTask { return &PanelTask{ api: api.NewAPI(app.Version, app.Locale), + conf: conf, db: db, log: log, backupRepo: backup, @@ -141,7 +145,9 @@ func (r *PanelTask) updatePanel() { return } if download := collect.First(panel.Downloads); download != nil { - if err = r.backupRepo.UpdatePanel(panel.Version, download.URL, download.Checksum); err != nil { + url := fmt.Sprintf("https://%s%s", r.conf.App.DownloadEndpoint, download.URL) + checksum := fmt.Sprintf("https://%s%s", r.conf.App.DownloadEndpoint, download.Checksum) + if err = r.backupRepo.UpdatePanel(panel.Version, url, checksum); err != nil { r.log.Warn("[PanelTask] failed to update panel", slog.Any("err", err)) _ = r.backupRepo.FixPanel() } diff --git a/internal/service/cli.go b/internal/service/cli.go index 714cfcf4..72c06218 100644 --- a/internal/service/cli.go +++ b/internal/service/cli.go @@ -111,7 +111,10 @@ func (s *CliService) Update(ctx context.Context, cmd *cli.Command) error { return errors.New(s.t.Get("Download URL is empty")) } - return s.backupRepo.UpdatePanel(panel.Version, download.URL, download.Checksum) + url := fmt.Sprintf("https://%s%s", s.conf.App.DownloadEndpoint, download.URL) + checksum := fmt.Sprintf("https://%s%s", s.conf.App.DownloadEndpoint, download.Checksum) + + return s.backupRepo.UpdatePanel(panel.Version, url, checksum) } func (s *CliService) Sync(ctx context.Context, cmd *cli.Command) error { diff --git a/internal/service/home.go b/internal/service/home.go index 925cd84e..b7643b77 100644 --- a/internal/service/home.go +++ b/internal/service/home.go @@ -316,10 +316,12 @@ func (s *HomeService) Update(w http.ResponseWriter, r *http.Request) { Error(w, http.StatusInternalServerError, s.t.Get("failed to get the latest version download link")) return } - ver, url, checksum := panel.Version, download.URL, download.Checksum + + url := fmt.Sprintf("https://%s%s", s.conf.App.DownloadEndpoint, download.URL) + checksum := fmt.Sprintf("https://%s%s", s.conf.App.DownloadEndpoint, download.Checksum) app.Status = app.StatusUpgrade - if err = s.backupRepo.UpdatePanel(ver, url, checksum); err != nil { + if err = s.backupRepo.UpdatePanel(panel.Version, url, checksum); err != nil { app.Status = app.StatusFailed Error(w, http.StatusInternalServerError, "%v", err) return