diff --git a/AGHTechDoc.md b/AGHTechDoc.md index 7564a007..e88bb055 100644 --- a/AGHTechDoc.md +++ b/AGHTechDoc.md @@ -256,6 +256,12 @@ Response: If `can_autoupdate` is true, then the server can automatically upgrade to a new version. +Response with empty body: + + 200 OK + +It means that update check is disabled by user. UI should do nothing. + ### Update command diff --git a/app.go b/app.go index 1c32aa52..6345564e 100644 --- a/app.go +++ b/app.go @@ -79,6 +79,7 @@ func run(args options) { log.Info("AdGuard Home is running as a service") } config.runningAsService = args.runningAsService + config.disableUpdate = args.disableUpdate config.firstRun = detectFirstRun() if config.firstRun { @@ -408,6 +409,7 @@ type options struct { logFile string // Path to the log file. If empty, write to stdout. If "syslog", writes to syslog pidFile string // File name to save PID to checkConfig bool // Check configuration and exit + disableUpdate bool // If set, don't check for updates // service control action (see service.ControlAction array + "status" command) serviceControlAction string @@ -446,6 +448,7 @@ func loadOptions() options { }, nil}, {"pidfile", "", "Path to a file where PID is stored", func(value string) { o.pidFile = value }, nil}, {"check-config", "", "Check configuration and exit", nil, func() { o.checkConfig = true }}, + {"no-check-update", "", "Don't check for updates", nil, func() { o.disableUpdate = true }}, {"verbose", "v", "Enable verbose output", nil, func() { o.verbose = true }}, {"help", "", "Print this help", nil, func() { printHelp() diff --git a/config.go b/config.go index 49ffe93a..c6edde0f 100644 --- a/config.go +++ b/config.go @@ -39,6 +39,7 @@ type configuration struct { firstRun bool // if set to true, don't run any services except HTTP web inteface, and serve only first-run html // runningAsService flag is set to true when options are passed from the service runner runningAsService bool + disableUpdate bool // If set, don't check for updates BindHost string `yaml:"bind_host"` // BindHost is the IP address of the HTTP server to bind to BindPort int `yaml:"bind_port"` // BindPort is the port the HTTP server diff --git a/control_update.go b/control_update.go index 247eb043..987457da 100644 --- a/control_update.go +++ b/control_update.go @@ -52,6 +52,11 @@ func getVersionResp(data []byte) []byte { func handleGetVersionJSON(w http.ResponseWriter, r *http.Request) { log.Tracef("%s %v", r.Method, r.URL) + if config.disableUpdate { + log.Tracef("New app version check is disabled by user") + return + } + now := time.Now() controlLock.Lock() cached := now.Sub(versionCheckLastTime) <= versionCheckPeriod && len(versionCheckJSON) != 0