Add flags to specify custom update server

This commit is contained in:
Daniel
2023-04-20 12:54:59 +02:00
parent 16c756144a
commit 8273894f87
3 changed files with 58 additions and 19 deletions

View File

@@ -2,8 +2,10 @@ package updates
import (
"context"
"errors"
"flag"
"fmt"
"net/url"
"runtime"
"time"
@@ -41,9 +43,11 @@ const (
)
var (
module *modules.Module
registry *updater.ResourceRegistry
userAgentFromFlag string
module *modules.Module
registry *updater.ResourceRegistry
userAgentFromFlag string
updateServerFromFlag string
updateTask *modules.Task
updateASAP bool
@@ -59,6 +63,11 @@ var (
// fetching resources from the update server.
UserAgent = fmt.Sprintf("Portmaster (%s %s)", runtime.GOOS, runtime.GOARCH)
// DefaultUpdateURLs defines the default base URLs of the update server.
DefaultUpdateURLs = []string{
"https://updates.safing.io",
}
// DisableSoftwareAutoUpdate specifies whether software updates should be disabled.
// This is used on Android, as it will never require binary updates.
DisableSoftwareAutoUpdate = false
@@ -75,10 +84,8 @@ func init() {
module.RegisterEvent(VersionUpdateEvent, true)
module.RegisterEvent(ResourceUpdateEvent, true)
flag.StringVar(&userAgentFromFlag, "update-agent", "", "set the user agent for requests to the update server")
var dummy bool
flag.BoolVar(&dummy, "staging", false, "deprecated, configure in settings instead")
flag.StringVar(&updateServerFromFlag, "update-server", "", "set an alternative update server (full URL)")
flag.StringVar(&userAgentFromFlag, "update-agent", "", "set an alternative user agent for requests to the update server")
}
func prep() error {
@@ -86,6 +93,17 @@ func prep() error {
return err
}
// Check if update server URL supplied via flag is a valid URL.
if updateServerFromFlag != "" {
u, err := url.Parse(updateServerFromFlag)
if err != nil {
return fmt.Errorf("supplied update server URL is invalid: %w", err)
}
if u.Scheme != "https" {
return errors.New("supplied update server URL must use HTTPS")
}
}
return registerAPIEndpoints()
}
@@ -104,10 +122,8 @@ func start() error {
// create registry
registry = &updater.ResourceRegistry{
Name: ModuleName,
UpdateURLs: []string{
"https://updates.safing.io",
},
Name: ModuleName,
UpdateURLs: DefaultUpdateURLs,
UserAgent: UserAgent,
MandatoryUpdates: helper.MandatoryUpdates(),
AutoUnpack: helper.AutoUnpackUpdates(),
@@ -115,10 +131,13 @@ func start() error {
DevMode: devMode(),
Online: true,
}
// Override values from flags.
if userAgentFromFlag != "" {
// override with flag value
registry.UserAgent = userAgentFromFlag
}
if updateServerFromFlag != "" {
registry.UpdateURLs = []string{updateServerFromFlag}
}
// pre-init state
updateStateExport, err := LoadStateExport()