4
4
"compress/gzip"
5
5
"flag"
6
6
"fmt"
7
+ "io/ioutil"
7
8
"net"
8
9
"os"
9
10
"regexp"
@@ -97,6 +98,7 @@ type probeFlags struct {
97
98
basicAuth bool
98
99
username string
99
100
password string
101
+ passwordFilename string
100
102
token string
101
103
httpListen string
102
104
publishInterval time.Duration
@@ -152,9 +154,10 @@ type appFlags struct {
152
154
logHTTP bool
153
155
logHTTPHeaders bool
154
156
155
- basicAuth bool
156
- username string
157
- password string
157
+ basicAuth bool
158
+ username string
159
+ password string
160
+ passwordFilename string
158
161
159
162
weaveEnabled bool
160
163
weaveAddr string
@@ -295,6 +298,7 @@ func setupFlags(flags *flags) {
295
298
flag .BoolVar (& flags .probe .basicAuth , "probe.basicAuth" , false , "Use basic authentication to authenticate with app" )
296
299
flag .StringVar (& flags .probe .username , "probe.basicAuth.username" , "admin" , "Username for basic authentication" )
297
300
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" )
298
302
flag .StringVar (& flags .probe .token , serviceTokenFlag , "" , "Token to authenticate with cloud.weave.works" )
299
303
flag .StringVar (& flags .probe .token , probeTokenFlag , "" , "Token to authenticate with cloud.weave.works" )
300
304
flag .StringVar (& flags .probe .httpListen , "probe.http.listen" , "" , "listen address for HTTP profiling and instrumentation server" )
@@ -369,6 +373,7 @@ func setupFlags(flags *flags) {
369
373
flag .BoolVar (& flags .app .basicAuth , "app.basicAuth" , false , "Enable basic authentication for app" )
370
374
flag .StringVar (& flags .app .username , "app.basicAuth.username" , "admin" , "Username for basic authentication" )
371
375
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" )
372
377
373
378
flag .StringVar (& flags .app .weaveAddr , "app.weave.addr" , app .DefaultWeaveURL , "Address on which to contact WeaveDNS" )
374
379
flag .StringVar (& flags .app .weaveHostname , "app.weave.hostname" , "" , "Hostname to advertise in WeaveDNS" )
@@ -488,6 +493,15 @@ func main() {
488
493
flags .app .password = password
489
494
}
490
495
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
+
491
505
if flags .dryRun {
492
506
return
493
507
}
@@ -506,3 +520,15 @@ func main() {
506
520
os .Exit (1 )
507
521
}
508
522
}
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