diff --git a/intel/customlists/module.go b/intel/customlists/module.go index e20cc890..3589b06d 100644 --- a/intel/customlists/module.go +++ b/intel/customlists/module.go @@ -2,6 +2,7 @@ package customlists import ( "context" + "fmt" "net" "os" "regexp" @@ -49,36 +50,16 @@ func prep() error { return err } - return nil -} - -func start() error { - // Register to hook to update after config change. - if err := module.RegisterEventHook( - configModuleName, - configChangeEvent, - "update custom filter list", - func(ctx context.Context, obj interface{}) error { - checkAndUpdateFilterList() - return nil - }, - ); err != nil { - return err - } - - // Create parser task and enqueue for execution. "checkAndUpdateFilterList" will schedule the next execution. - parserTask = module.NewTask("intel/customlists:file-update-check", func(context.Context, *modules.Task) error { - checkAndUpdateFilterList() - return nil - }).Schedule(time.Now().Add(20 * time.Second)) - // Register api endpoint for updating the filter list. if err := api.RegisterEndpoint(api.Endpoint{ Path: "customlists/update", Write: api.PermitUser, BelongsTo: module, ActionFunc: func(ar *api.Request) (msg string, err error) { - checkAndUpdateFilterList() + errCheck := checkAndUpdateFilterList() + if errCheck != nil { + return "", errCheck + } return "Custom filter list loaded successfully.", nil }, Name: "Update custom filter list", @@ -90,14 +71,36 @@ func start() error { return nil } -func checkAndUpdateFilterList() { +func start() error { + // Register to hook to update after config change. + if err := module.RegisterEventHook( + configModuleName, + configChangeEvent, + "update custom filter list", + func(ctx context.Context, obj interface{}) error { + return checkAndUpdateFilterList() + }, + ); err != nil { + return err + } + + // Create parser task and enqueue for execution. "checkAndUpdateFilterList" will schedule the next execution. + parserTask = module.NewTask("intel/customlists:file-update-check", func(context.Context, *modules.Task) error { + _ = checkAndUpdateFilterList() + return nil + }).Schedule(time.Now().Add(20 * time.Second)) + + return nil +} + +func checkAndUpdateFilterList() error { filterListLock.Lock() defer filterListLock.Unlock() - // Get path and ignore if empty + // Get path and return error if empty filePath := getFilePath() if filePath == "" { - return + return fmt.Errorf("custom filter list setting is empty") } // Schedule next update check @@ -113,11 +116,12 @@ func checkAndUpdateFilterList() { if filterListFilePath != filePath || !filterListFileModifiedTime.Equal(modifiedTime) { err := parseFile(filePath) if err != nil { - return + return err } filterListFileModifiedTime = modifiedTime filterListFilePath = filePath } + return nil } // LookupIP checks if the IP address is in a custom filter list. diff --git a/netenv/os_android.go b/netenv/os_android.go index a1ec8145..ccea7877 100644 --- a/netenv/os_android.go +++ b/netenv/os_android.go @@ -10,9 +10,13 @@ func osGetInterfaceAddrs() ([]net.Addr, error) { if err != nil { return nil, err } + var netList []net.Addr for _, addr := range list { - netList = append(netList, addr.ToIPNet()) + ipNetAddr, err := addr.ToIPNet() + if err == nil { + netList = append(netList, ipNetAddr) + } } return netList, nil diff --git a/updates/get.go b/updates/get.go index 68868f0d..2cf7acf7 100644 --- a/updates/get.go +++ b/updates/get.go @@ -59,3 +59,14 @@ func GetVersion(identifier string) (*updater.ResourceVersion, error) { return rv, nil } + +// GetVersionWithFullID returns the selected generic version of the given full identifier. +// The returned resource version may not be modified. +func GetVersionWithFullID(identifier string) (*updater.ResourceVersion, error) { + rv, err := registry.GetVersion(identifier) + if err != nil { + return nil, err + } + + return rv, nil +} diff --git a/updates/main.go b/updates/main.go index db9951bb..6012b509 100644 --- a/updates/main.go +++ b/updates/main.go @@ -58,6 +58,9 @@ var ( // more context to requests made by the registry when // fetching resources from the update server. UserAgent = "Core" + + // Explicitly disables automatic software updates. Used in android. + DisableSoftwareAutoUpdate = false ) const ( @@ -145,7 +148,7 @@ func start() error { registry, initialReleaseChannel, true, - enableSoftwareUpdates(), + enableSoftwareUpdates() && !DisableSoftwareAutoUpdate, enableIntelUpdates(), ) if warning != nil { @@ -247,7 +250,7 @@ func checkForUpdates(ctx context.Context) (err error) { } defer func() { - // Resolve any error and and send succes notification. + // Resolve any error and and send success notification. if err == nil { log.Infof("updates: successfully checked for updates") notifyUpdateSuccess(forcedUpdate) diff --git a/updates/notify.go b/updates/notify.go index 6bc34817..5445cb2c 100644 --- a/updates/notify.go +++ b/updates/notify.go @@ -115,7 +115,7 @@ func notifyUpdateCheckFailed(forced bool, err error) { // Not failed often enough for notification. return case lastSuccess == nil: - // No recorded successful udpate. + // No recorded successful update. case time.Now().Add(-failedUpdateNotifyDurationThreshold).Before(*lastSuccess): // Failed too recently for notification. return