Fix handling of connectivity / captive portal domains

Also, improve handling of queries during being captive.
This commit is contained in:
Daniel
2020-07-17 16:09:46 +02:00
parent a6e161e0a1
commit 68c2d23c1b
15 changed files with 223 additions and 63 deletions

View File

@@ -6,21 +6,40 @@ import (
"github.com/safing/portbase/modules"
)
var (
module *modules.Module
)
func init() {
modules.Register("status", nil, start, stop, "base")
module = modules.Register("status", nil, start, stop, "base")
}
func start() error {
var loadedStatus *SystemStatus
err := initSystemStatus()
if err != nil {
return err
}
err = startNetEnvHooking()
if err != nil {
return err
}
status.Save()
return initStatusHook()
}
func initSystemStatus() error {
// load status from database
r, err := statusDB.Get(statusDBKey)
switch err {
case nil:
loadedStatus, err = EnsureSystemStatus(r)
loadedStatus, err := EnsureSystemStatus(r)
if err != nil {
log.Criticalf("status: failed to unwrap system status: %s", err)
loadedStatus = nil
} else {
status = loadedStatus
}
case database.ErrNotFound:
// create new status
@@ -28,10 +47,6 @@ func start() error {
log.Criticalf("status: failed to load system status: %s", err)
}
// activate loaded status, if available
if loadedStatus != nil {
status = loadedStatus
}
status.Lock()
defer status.Unlock()
@@ -41,10 +56,9 @@ func start() error {
// update status
status.updateThreatMitigationLevel()
status.autopilot()
status.updateOnlineStatus()
go status.Save()
return initStatusHook()
return nil
}
func stop() error {