From 4b2ff39246af4c351a9baceac0d9687aceadeeb2 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 9 Aug 2019 16:46:37 +0200 Subject: [PATCH] Adapt to new module structure with base and core modules --- core/{main.go => base.go} | 50 ++++++++++++------------------ core/core.go | 11 +++++++ core/db.go | 58 ----------------------------------- nameserver/nameserver.go | 2 +- nameserver/only/nameserver.go | 2 +- profile/index/indexer.go | 2 +- ui/module.go | 2 +- 7 files changed, 35 insertions(+), 92 deletions(-) rename core/{main.go => base.go} (72%) create mode 100644 core/core.go delete mode 100644 core/db.go diff --git a/core/main.go b/core/base.go similarity index 72% rename from core/main.go rename to core/base.go index 12e1b9dd..a3e823ba 100644 --- a/core/main.go +++ b/core/base.go @@ -5,6 +5,7 @@ import ( "flag" "github.com/safing/portbase/api" + "github.com/safing/portbase/database/dbmodule" "github.com/safing/portbase/modules" "github.com/safing/portbase/notifications" @@ -15,19 +16,17 @@ var ( dataDir string databaseDir string - shuttingDown = make(chan struct{}) + baseModule = modules.Register("base", prepBase, nil, nil) ) func init() { flag.StringVar(&dataDir, "data", "", "set data directory") flag.StringVar(&databaseDir, "db", "", "alias to --data (deprecated)") - modules.Register("core", prep, start, stop) - notifications.SetPersistenceBasePath("core:notifications") } -func prep() error { +func prepBase() error { // backwards compatibility if dataDir == "" { dataDir = databaseDir @@ -38,33 +37,24 @@ func prep() error { return errors.New("please set the data directory using --data=/path/to/data/dir") } + // initialize structure + err := structure.Initialize(dataDir, 0755) + if err != nil { + return err + } + + // set database location + dbmodule.SetDatabaseLocation("", structure.Root()) + + // init config + logFlagOverrides() + err = registerConfig() + if err != nil { + return err + } + // set api listen address api.SetDefaultAPIListenAddress("127.0.0.1:817") - // init config - err := registerConfig() - if err != nil { - return err - } - - // initialize structure - return structure.Initialize(dataDir, 0755) -} - -func start() error { - logFlagOverrides() - - // init DB - err := startDB() - if err != nil { - return err - } - - // register DBs - return registerDatabases() -} - -func stop() error { - close(shuttingDown) - return stopDB() + return nil } diff --git a/core/core.go b/core/core.go new file mode 100644 index 00000000..5dd827ad --- /dev/null +++ b/core/core.go @@ -0,0 +1,11 @@ +package core + +import "github.com/safing/portbase/modules" + +var ( + coreModule = modules.Register("core", nil, startCore, nil, "base", "database", "config", "api", "random") +) + +func startCore() error { + return registerDatabases() +} diff --git a/core/db.go b/core/db.go deleted file mode 100644 index 31f45822..00000000 --- a/core/db.go +++ /dev/null @@ -1,58 +0,0 @@ -package core - -import ( - "sync" - "time" - - "github.com/safing/portbase/database" - "github.com/safing/portbase/log" - - "github.com/safing/portmaster/core/structure" -) - -var ( - maintenanceWg sync.WaitGroup - maintenanceShortTickDuration = 10 * time.Minute - maintenanceLongTickDuration = 1 * time.Hour -) - -func startDB() error { - err := database.Initialize(dataDir, structure.Root()) - if err == nil { - maintenanceWg.Add(1) - go maintenanceWorker() - } - return err -} - -func stopDB() error { - maintenanceWg.Wait() - return database.Shutdown() -} - -func maintenanceWorker() { - ticker := time.NewTicker(maintenanceShortTickDuration) - longTicker := time.NewTicker(maintenanceLongTickDuration) - - for { - select { - case <-ticker.C: - err := database.Maintain() - if err != nil { - log.Errorf("database: maintenance error: %s", err) - } - case <-longTicker.C: - err := database.MaintainRecordStates() - if err != nil { - log.Errorf("database: record states maintenance error: %s", err) - } - err = database.MaintainThorough() - if err != nil { - log.Errorf("database: thorough maintenance error: %s", err) - } - case <-shuttingDown: - maintenanceWg.Done() - return - } - } -} diff --git a/nameserver/nameserver.go b/nameserver/nameserver.go index bb2ad6c1..d2e1aa5a 100644 --- a/nameserver/nameserver.go +++ b/nameserver/nameserver.go @@ -27,7 +27,7 @@ var ( ) func init() { - modules.Register("nameserver", prep, start, nil, "intel") + modules.Register("nameserver", prep, start, nil, "core", "intel") if runtime.GOOS == "windows" { listenAddress = "0.0.0.0:53" diff --git a/nameserver/only/nameserver.go b/nameserver/only/nameserver.go index 07cc5ae8..8b6c2ba1 100644 --- a/nameserver/only/nameserver.go +++ b/nameserver/only/nameserver.go @@ -21,7 +21,7 @@ var ( ) func init() { - modules.Register("nameserver", prep, start, nil, "intel") + modules.Register("nameserver", prep, start, nil, "core", "intel") } func prep() error { diff --git a/profile/index/indexer.go b/profile/index/indexer.go index 471c66b9..e76beb7a 100644 --- a/profile/index/indexer.go +++ b/profile/index/indexer.go @@ -23,7 +23,7 @@ var ( ) func init() { - modules.Register("profile:index", nil, start, stop, "profile", "database") + modules.Register("profile:index", nil, start, stop, "core", "profile") } func start() (err error) { diff --git a/ui/module.go b/ui/module.go index cf98aba1..3971ae43 100644 --- a/ui/module.go +++ b/ui/module.go @@ -5,7 +5,7 @@ import ( ) func init() { - modules.Register("ui", prep, nil, nil, "updates", "api") + modules.Register("ui", prep, nil, nil, "core", "updates") } func prep() error {