From d95c1ec13b08015bcd4672a9e5383650123feca5 Mon Sep 17 00:00:00 2001 From: Christian Wilhelm Date: Sun, 30 Dec 2018 13:26:12 +0100 Subject: [PATCH] Add support for loading username and password from environment --- cmd/webdav/main.go | 24 ++++++++++++++++++++++++ readme.md | 2 ++ 2 files changed, 26 insertions(+) diff --git a/cmd/webdav/main.go b/cmd/webdav/main.go index 717baa3..9529bc1 100644 --- a/cmd/webdav/main.go +++ b/cmd/webdav/main.go @@ -77,11 +77,35 @@ func parseUsers(raw []map[string]interface{}, c *cfg) { log.Fatal("user needs an username") } + // load username from environment when prefix {env} is added + if strings.HasPrefix(username, "{env}") { + var envUsername = strings.TrimPrefix(username, "{env}") + if envUsername == "" { + log.Fatal("no environment variable specified for username") + } + username = os.Getenv(envUsername) + if username == "" { + log.Fatal("username must be set in environment") + } + } + password, ok := r["password"].(string) if !ok { log.Fatal("user needs a password") } + // load password from environment when prefix {env} is added + if strings.HasPrefix(password, "{env}") { + var envPassword = strings.TrimPrefix(password, "{env}") + if envPassword == "" { + log.Fatal("no environment variable specified for password") + } + password = os.Getenv(envPassword) + if password == "" { + log.Fatal("password must be set in environment") + } + } + c.auth[username] = password user := &webdav.User{ diff --git a/readme.md b/readme.md index d33dbd4..ea00b6b 100644 --- a/readme.md +++ b/readme.md @@ -17,6 +17,8 @@ users: password: admin - username: encrypted password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi" + - username: "{env}ENV_USERNAME" + password: "{env}ENV_PASSWORD" - username: basic password: basic modify: false