From f9d9c025ddeb09e378cdd737214ff467c366b1e1 Mon Sep 17 00:00:00 2001 From: Paul TREHIOU Date: Wed, 8 Apr 2020 01:11:48 +0200 Subject: [PATCH] Fix: Config loading after CookieStore init (#58) * fix config loading after CookieStore init * refactor according to suggestions * fix module init on SIGHUP --- main.go | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/main.go b/main.go index 29d5ad2..39bd1b5 100644 --- a/main.go +++ b/main.go @@ -81,27 +81,31 @@ func init() { mainCfg.AuditLog.Headers = []string{"x-origin-uri"} } -func loadConfiguration() error { +func loadConfiguration() ([]byte, error) { yamlSource, err := ioutil.ReadFile(cfg.ConfigFile) if err != nil { - return fmt.Errorf("Unable to read configuration file: %s", err) + return nil, errors.Wrap(err, "Unable to read configuration file") } if err = yaml.Unmarshal(yamlSource, &mainCfg); err != nil { - return fmt.Errorf("Unable to load configuration file: %s", err) + return nil, errors.Wrap(err, "Unable to load configuration file") } + return yamlSource, nil +} + +func initializeModules(yamlSource []byte) error { if mainCfg.Plugins.Directory != "" { - if err = loadPlugins(mainCfg.Plugins.Directory); err != nil { + if err := loadPlugins(mainCfg.Plugins.Directory); err != nil { return errors.Wrap(err, "Unable to load plugins") } } - if err = initializeAuthenticators(yamlSource); err != nil { + if err := initializeAuthenticators(yamlSource); err != nil { return fmt.Errorf("Unable to configure authentication: %s", err) } - if err = initializeMFAProviders(yamlSource); err != nil { + if err := initializeMFAProviders(yamlSource); err != nil { log.WithError(err).Fatal("Unable to configure MFA providers") } @@ -109,11 +113,16 @@ func loadConfiguration() error { } func main() { + yamlSource, err := loadConfiguration() + if err != nil { + log.WithError(err).Fatal("Unable to load configuration") + } + cookieStore = sessions.NewCookieStore([]byte(mainCfg.Cookie.AuthKey)) registerModules() - if err := loadConfiguration(); err != nil { - log.WithError(err).Fatal("Unable to load configuration") + if err = initializeModules(yamlSource); err != nil { + log.WithError(err).Fatal("Unable to initialize modules") } http.HandleFunc("/", handleRootRequest) @@ -133,8 +142,12 @@ func main() { for sig := range sigChan { switch sig { case syscall.SIGHUP: - if err := loadConfiguration(); err != nil { + if yamlSource, err = loadConfiguration(); err != nil { log.WithError(err).Error("Unable to reload configuration") + } else { + if err = initializeModules(yamlSource); err != nil { + log.WithError(err).Error("Unable to initialize modules") + } } default: