2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 14:57:16 +08:00

fix: 面板更新

This commit is contained in:
2026-01-10 00:40:50 +08:00
parent cdc0ac72ae
commit 0deeb281ea
4 changed files with 17 additions and 6 deletions

View File

@@ -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
}

View File

@@ -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()
}

View File

@@ -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 {

View File

@@ -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