Skip to content

Commit 7e226fb

Browse files
authored
Merge pull request weaveworks#3851 from Kielek/feature/read-password-from-file
allow to read password from file
2 parents c36b339 + 8bdb0d6 commit 7e226fb

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

prog/main.go

+29-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"compress/gzip"
55
"flag"
66
"fmt"
7+
"io/ioutil"
78
"net"
89
"os"
910
"regexp"
@@ -97,6 +98,7 @@ type probeFlags struct {
9798
basicAuth bool
9899
username string
99100
password string
101+
passwordFilename string
100102
token string
101103
httpListen string
102104
publishInterval time.Duration
@@ -152,9 +154,10 @@ type appFlags struct {
152154
logHTTP bool
153155
logHTTPHeaders bool
154156

155-
basicAuth bool
156-
username string
157-
password string
157+
basicAuth bool
158+
username string
159+
password string
160+
passwordFilename string
158161

159162
weaveEnabled bool
160163
weaveAddr string
@@ -295,6 +298,7 @@ func setupFlags(flags *flags) {
295298
flag.BoolVar(&flags.probe.basicAuth, "probe.basicAuth", false, "Use basic authentication to authenticate with app")
296299
flag.StringVar(&flags.probe.username, "probe.basicAuth.username", "admin", "Username for basic authentication")
297300
flag.StringVar(&flags.probe.password, "probe.basicAuth.password", "admin", "Password for basic authentication")
301+
flag.StringVar(&flags.probe.passwordFilename, "probe.basicAuth.password.filename", "", "Password filename for basic authentication. It overwrites probe.basicAuth.password")
298302
flag.StringVar(&flags.probe.token, serviceTokenFlag, "", "Token to authenticate with cloud.weave.works")
299303
flag.StringVar(&flags.probe.token, probeTokenFlag, "", "Token to authenticate with cloud.weave.works")
300304
flag.StringVar(&flags.probe.httpListen, "probe.http.listen", "", "listen address for HTTP profiling and instrumentation server")
@@ -369,6 +373,7 @@ func setupFlags(flags *flags) {
369373
flag.BoolVar(&flags.app.basicAuth, "app.basicAuth", false, "Enable basic authentication for app")
370374
flag.StringVar(&flags.app.username, "app.basicAuth.username", "admin", "Username for basic authentication")
371375
flag.StringVar(&flags.app.password, "app.basicAuth.password", "admin", "Password for basic authentication")
376+
flag.StringVar(&flags.app.passwordFilename, "app.basicAuth.password.filename", "", "Password filename for basic authentication. It overwrites app.basicAuth.password")
372377

373378
flag.StringVar(&flags.app.weaveAddr, "app.weave.addr", app.DefaultWeaveURL, "Address on which to contact WeaveDNS")
374379
flag.StringVar(&flags.app.weaveHostname, "app.weave.hostname", "", "Hostname to advertise in WeaveDNS")
@@ -488,6 +493,15 @@ func main() {
488493
flags.app.password = password
489494
}
490495

496+
passwordFilename := os.Getenv("BASIC_AUTH_PASSWORD_FILENAME")
497+
if passwordFilename != "" {
498+
flags.probe.passwordFilename = passwordFilename
499+
flags.app.passwordFilename = passwordFilename
500+
}
501+
502+
flags.probe.password = getPassword(flags.probe.password, flags.probe.passwordFilename)
503+
flags.app.password = getPassword(flags.app.password, flags.app.passwordFilename)
504+
491505
if flags.dryRun {
492506
return
493507
}
@@ -506,3 +520,15 @@ func main() {
506520
os.Exit(1)
507521
}
508522
}
523+
524+
func getPassword(password string, passwordFilename string) string {
525+
if passwordFilename == "" {
526+
return password
527+
}
528+
529+
b, err := ioutil.ReadFile(passwordFilename)
530+
if err != nil {
531+
log.Fatalf("Cannot read password from: %v, error: %v", passwordFilename, err)
532+
}
533+
return string(b)
534+
}

0 commit comments

Comments
 (0)