From 9dae87c80c013400e80b2eab2107242c1b15a632 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Thu, 10 Sep 2015 14:16:44 +0200 Subject: [PATCH] Allow configuration of releases URL --- cmd/syncthing/gui.go | 4 ++-- cmd/syncthing/main.go | 4 ++-- lib/config/config.go | 1 + lib/config/config_test.go | 2 ++ lib/config/testdata/overridenvalues.xml | 1 + lib/upgrade/upgrade_supported.go | 8 ++++---- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cmd/syncthing/gui.go b/cmd/syncthing/gui.go index 4e333c477..9061883ef 100644 --- a/cmd/syncthing/gui.go +++ b/cmd/syncthing/gui.go @@ -773,7 +773,7 @@ func (s *apiSvc) getSystemUpgrade(w http.ResponseWriter, r *http.Request) { http.Error(w, upgrade.ErrUpgradeUnsupported.Error(), 500) return } - rel, err := upgrade.LatestRelease(Version) + rel, err := upgrade.LatestRelease(cfg.Options().ReleasesURL, Version) if err != nil { http.Error(w, err.Error(), 500) return @@ -816,7 +816,7 @@ func (s *apiSvc) getLang(w http.ResponseWriter, r *http.Request) { } func (s *apiSvc) postSystemUpgrade(w http.ResponseWriter, r *http.Request) { - rel, err := upgrade.LatestRelease(Version) + rel, err := upgrade.LatestRelease(cfg.Options().ReleasesURL, Version) if err != nil { l.Warnln("getting latest release:", err) http.Error(w, err.Error(), 500) diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 446dec53a..061cf30be 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -347,7 +347,7 @@ func main() { } if doUpgrade || doUpgradeCheck { - rel, err := upgrade.LatestRelease(Version) + rel, err := upgrade.LatestRelease(cfg.Options().ReleasesURL, Version) if err != nil { l.Fatalln("Upgrade:", err) // exits 1 } @@ -1060,7 +1060,7 @@ func autoUpgrade() { case <-timer.C: } - rel, err := upgrade.LatestRelease(Version) + rel, err := upgrade.LatestRelease(cfg.Options().ReleasesURL, Version) if err == upgrade.ErrUpgradeUnsupported { events.Default.Unsubscribe(sub) return diff --git a/lib/config/config.go b/lib/config/config.go index 98782081a..3e4e18083 100644 --- a/lib/config/config.go +++ b/lib/config/config.go @@ -248,6 +248,7 @@ type OptionsConfiguration struct { PingTimeoutS int `xml:"pingTimeoutS" json:"pingTimeoutS" default:"30"` PingIdleTimeS int `xml:"pingIdleTimeS" json:"pingIdleTimeS" default:"60"` MinHomeDiskFreePct float64 `xml:"minHomeDiskFreePct" json:"minHomeDiskFreePct" default:"1"` + ReleasesURL string `xml:"releasesURL" json:"releasesURL" default:"https://api.github.com/repos/syncthing/syncthing/releases?per_page=30"` } func (orig OptionsConfiguration) Copy() OptionsConfiguration { diff --git a/lib/config/config_test.go b/lib/config/config_test.go index 6924de156..2bffd6f69 100644 --- a/lib/config/config_test.go +++ b/lib/config/config_test.go @@ -63,6 +63,7 @@ func TestDefaultValues(t *testing.T) { URURL: "https://data.syncthing.net/newdata", URInitialDelayS: 1800, URPostInsecurely: false, + ReleasesURL: "https://api.github.com/repos/syncthing/syncthing/releases?per_page=30", } cfg := New(device1) @@ -181,6 +182,7 @@ func TestOverriddenValues(t *testing.T) { URURL: "https://localhost/newdata", URInitialDelayS: 800, URPostInsecurely: true, + ReleasesURL: "https://localhost/releases", } cfg, err := Load("testdata/overridenvalues.xml", device1) diff --git a/lib/config/testdata/overridenvalues.xml b/lib/config/testdata/overridenvalues.xml index 655cedd82..6677f48cc 100755 --- a/lib/config/testdata/overridenvalues.xml +++ b/lib/config/testdata/overridenvalues.xml @@ -35,5 +35,6 @@ https://localhost/newdata 800 true + https://localhost/releases diff --git a/lib/upgrade/upgrade_supported.go b/lib/upgrade/upgrade_supported.go index 974a1513a..68b7cfd04 100644 --- a/lib/upgrade/upgrade_supported.go +++ b/lib/upgrade/upgrade_supported.go @@ -46,8 +46,8 @@ var insecureHTTP = &http.Client{ // LatestGithubReleases returns the latest releases, including prereleases or // not depending on the argument -func LatestGithubReleases(version string) ([]Release, error) { - resp, err := insecureHTTP.Get("https://api.github.com/repos/syncthing/syncthing/releases?per_page=30") +func LatestGithubReleases(releasesURL, version string) ([]Release, error) { + resp, err := insecureHTTP.Get(releasesURL) if err != nil { return nil, err } @@ -74,8 +74,8 @@ func (s SortByRelease) Less(i, j int) bool { return CompareVersions(s[i].Tag, s[j].Tag) > 0 } -func LatestRelease(version string) (Release, error) { - rels, _ := LatestGithubReleases(version) +func LatestRelease(releasesURL, version string) (Release, error) { + rels, _ := LatestGithubReleases(releasesURL, version) return SelectLatestRelease(version, rels) }