gopkg.in/mitchellh/packer.v1@v1.3.2/packer/logs.go (about) 1 package packer 2 3 import ( 4 "bytes" 5 "io" 6 "sync" 7 ) 8 9 type secretFilter struct { 10 s map[string]struct{} 11 m sync.Mutex 12 w io.Writer 13 } 14 15 func (l *secretFilter) Set(secrets ...string) { 16 l.m.Lock() 17 defer l.m.Unlock() 18 for _, s := range secrets { 19 l.s[s] = struct{}{} 20 } 21 } 22 23 func (l *secretFilter) SetOutput(output io.Writer) { 24 l.m.Lock() 25 defer l.m.Unlock() 26 l.w = output 27 } 28 29 func (l *secretFilter) Write(p []byte) (n int, err error) { 30 for s := range l.s { 31 if s != "" { 32 p = bytes.Replace(p, []byte(s), []byte("<sensitive>"), -1) 33 } 34 } 35 return l.w.Write(p) 36 } 37 38 func (l *secretFilter) get() (s []string) { 39 l.m.Lock() 40 defer l.m.Unlock() 41 for k := range l.s { 42 s = append(s, k) 43 } 44 return 45 } 46 47 var LogSecretFilter secretFilter 48 49 func init() { 50 LogSecretFilter.s = make(map[string]struct{}) 51 }