From 1990f8c6df0c204fce9b2a92964c67f1b969165b Mon Sep 17 00:00:00 2001 From: henrygd Date: Mon, 25 Aug 2025 20:18:31 -0400 Subject: [PATCH] use mirror for asset download in update command (#1035) --- beszel/internal/ghupdate/ghupdate.go | 9 ++++++++- supplemental/CHANGELOG.md | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/beszel/internal/ghupdate/ghupdate.go b/beszel/internal/ghupdate/ghupdate.go index 52c5f22..9c99af2 100644 --- a/beszel/internal/ghupdate/ghupdate.go +++ b/beszel/internal/ghupdate/ghupdate.go @@ -108,6 +108,8 @@ func (p *plugin) update() (updated bool, err error) { } var latest *release + var useMirror bool + latest, err = fetchLatestRelease( p.config.Context, p.config.HttpClient, @@ -116,6 +118,7 @@ func (p *plugin) update() (updated bool, err error) { // if the first fetch fails, try the beszel.dev API (fallback for China) if err != nil { ColorPrint(ColorYellow, "Failed to fetch release. Trying beszel.dev mirror...") + useMirror = true latest, err = fetchLatestRelease( p.config.Context, p.config.HttpClient, @@ -147,7 +150,7 @@ func (p *plugin) update() (updated bool, err error) { // download the release asset assetPath := filepath.Join(releaseDir, asset.Name) - if err := downloadFile(p.config.Context, p.config.HttpClient, asset.DownloadUrl, assetPath); err != nil { + if err := downloadFile(p.config.Context, p.config.HttpClient, asset.DownloadUrl, assetPath, useMirror); err != nil { return false, err } @@ -275,7 +278,11 @@ func downloadFile( client HttpClient, url string, destPath string, + useMirror bool, ) error { + if useMirror { + url = strings.Replace(url, "github.com", "gh.beszel.dev", 1) + } req, err := http.NewRequestWithContext(ctx, "GET", url, nil) if err != nil { return err diff --git a/supplemental/CHANGELOG.md b/supplemental/CHANGELOG.md index 2109a22..5dff84e 100644 --- a/supplemental/CHANGELOG.md +++ b/supplemental/CHANGELOG.md @@ -2,6 +2,8 @@ - Add battery charge monitoring. +- Add fallback mirror to the `update` commands. (#1035) + - Fix blank token field in insecure contexts. - Allow opening internal router links in new tab.