Allow manual updates even if automatic ones are disabled

This commit is contained in:
Patrick Pacher 2021-05-17 14:59:20 +02:00
parent 857eb83659
commit e40e6292f5
No known key found for this signature in database
GPG key ID: E8CD2DA160925A6D
3 changed files with 24 additions and 17 deletions

View file

@ -14,7 +14,7 @@ func registerAPIEndpoints() error {
Write: api.PermitUser,
BelongsTo: module,
ActionFunc: func(_ *api.Request) (msg string, err error) {
if err := TriggerUpdate(); err != nil {
if err := TriggerUpdate(true); err != nil {
return "", err
}
return "triggered update check", nil

View file

@ -86,6 +86,21 @@ func initConfig() {
previousDevMode = devMode()
}
func createWarningNotification() {
notifications.NotifyWarn(
updatesDisabledNotificationID,
"Automatic Updates Disabled",
"Automatic updates are disabled through configuration. Please note that this is potentially dangerous, as this also affects security updates as well as the filter lists and threat intelligence feeds.",
notifications.Action{
Text: "Change",
Type: notifications.ActionTypeOpenSetting,
Payload: &notifications.ActionTypeOpenSettingPayload{
Key: enableUpdatesKey,
},
},
).AttachToModule(module)
}
func updateRegistryConfig(_ context.Context, _ interface{}) error {
changed := false
@ -112,24 +127,12 @@ func updateRegistryConfig(_ context.Context, _ interface{}) error {
if updatesCurrentlyEnabled {
module.Resolve("")
if err := TriggerUpdate(); err != nil {
if err := TriggerUpdate(false); err != nil {
log.Warningf("updates: failed to trigger update: %s", err)
}
log.Infof("updates: automatic updates are now enabled")
} else {
notifications.NotifyWarn(
updatesDisabledNotificationID,
"Automatic Updates Disabled",
"Automatic updates are disabled through configuration. Please note that this is potentially dangerous, as this also affects security updates as well as the filter lists and threat intelligence feeds.",
notifications.Action{
ID: "change",
Text: "Change",
Type: notifications.ActionTypeOpenSetting,
Payload: &notifications.ActionTypeOpenSettingPayload{
Key: enableUpdatesKey,
},
},
).AttachToModule(module)
createWarningNotification()
log.Warningf("updates: automatic updates are now disabled")
}
}

View file

@ -195,6 +195,10 @@ func start() error {
registry.SelectVersions()
module.TriggerEvent(VersionUpdateEvent, nil)
if !updatesCurrentlyEnabled {
createWarningNotification()
}
// Initialize the version export - this requires the registry to be set up.
err = initVersionExport()
if err != nil {
@ -228,7 +232,7 @@ func start() error {
}
// TriggerUpdate queues the update task to execute ASAP.
func TriggerUpdate() error {
func TriggerUpdate(force bool) error {
switch {
case !module.OnlineSoon():
return fmt.Errorf("updates module is disabled")
@ -236,7 +240,7 @@ func TriggerUpdate() error {
case !module.Online():
updateASAP = true
case !enableUpdates():
case !force && !enableUpdates():
return fmt.Errorf("automatic updating is disabled")
default: