From 5de193a64d46ac303c245b1bb90ed28a173154dd Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Sun, 20 Jan 2019 14:18:09 -0500 Subject: [PATCH] Generate encryption keys in configured directory This makes --gen-keys respect the keys_parent_dir config value --- app.go | 16 ++++++++++++++++ keys.go | 9 ++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app.go b/app.go index ddb6e20..e286ef0 100644 --- a/app.go +++ b/app.go @@ -256,6 +256,21 @@ func Serve() { } else if *genKeys { errStatus := 0 + // Read keys path from config + loadConfig(app) + + // Create keys dir if it doesn't exist yet + fullKeysDir := filepath.Join(app.cfg.Server.KeysParentDir, keysDir) + if _, err := os.Stat(fullKeysDir); os.IsNotExist(err) { + err = os.Mkdir(fullKeysDir, 0700) + if err != nil { + log.Error("%s", err) + os.Exit(1) + } + } + + // Generate keys + initKeyPaths(app) err := generateKey(emailKeyPath) if err != nil { errStatus = 1 @@ -345,6 +360,7 @@ func Serve() { // Load keys log.Info("Loading encryption keys...") + initKeyPaths(app) err = initKeys(app) if err != nil { log.Error("\n%s\n", err) diff --git a/keys.go b/keys.go index 0b3d76a..3b9c360 100644 --- a/keys.go +++ b/keys.go @@ -34,11 +34,16 @@ type keychain struct { emailKey, cookieAuthKey, cookieKey []byte } +func initKeyPaths(app *app) { + emailKeyPath = filepath.Join(app.cfg.Server.KeysParentDir, emailKeyPath) + cookieAuthKeyPath = filepath.Join(app.cfg.Server.KeysParentDir, cookieAuthKeyPath) + cookieKeyPath = filepath.Join(app.cfg.Server.KeysParentDir, cookieKeyPath) +} + func initKeys(app *app) error { var err error app.keys = &keychain{} - emailKeyPath = filepath.Join(app.cfg.Server.KeysParentDir, emailKeyPath) if debugging { log.Info(" %s", emailKeyPath) } @@ -47,7 +52,6 @@ func initKeys(app *app) error { return err } - cookieAuthKeyPath = filepath.Join(app.cfg.Server.KeysParentDir, cookieAuthKeyPath) if debugging { log.Info(" %s", cookieAuthKeyPath) } @@ -56,7 +60,6 @@ func initKeys(app *app) error { return err } - cookieKeyPath = filepath.Join(app.cfg.Server.KeysParentDir, cookieKeyPath) if debugging { log.Info(" %s", cookieKeyPath) }