github.com/Axway/agent-sdk@v1.1.101/pkg/util/log/util.go (about) 1 package log 2 3 import ( 4 "encoding/json" 5 "regexp" 6 ) 7 8 // ObscureArguments obscure/mask/redact values for a set of trailing arguments 9 func ObscureArguments(redactedFields []string, args ...interface{}) []interface{} { 10 var obscuredParams []interface{} 11 for _, arg := range args { 12 b, _ := json.Marshal(arg) 13 obscuredParams = append(obscuredParams, obscureParams(string(b), redactedFields)) 14 } 15 return obscuredParams 16 17 } 18 19 // obscureParams obscure/mask/redact a set of values in a json string 20 func obscureParams(jsn string, sensitiveParams []string) string { 21 for _, param := range sensitiveParams { 22 jsn = obscureParam(jsn, param) 23 } 24 return jsn 25 } 26 27 // obscureParam obscure/mask/redact a value in a json string 28 func obscureParam(jsn string, param string) string { 29 30 rWithNumberSlash := *regexp.MustCompile(`"` + param + `": ?([0-9]+)`) 31 jsn = rWithNumberSlash.ReplaceAllString(jsn, `"`+param+`": "[redacted]"`) 32 33 rWithNumberNoSlash := *regexp.MustCompile(`\\"` + param + `\\":.*?([0-9]+)`) 34 jsn = rWithNumberNoSlash.ReplaceAllString(jsn, `"`+param+`": "[redacted]"`) 35 36 rWithSlash := *regexp.MustCompile(`\\"` + param + `\\":.*?"(.*?)\\"`) 37 jsn = rWithSlash.ReplaceAllString(jsn, `\"`+param+`\": "[redacted]"`) 38 39 rWithoutSlash := *regexp.MustCompile(`"` + param + `":.*?"(.*?)"`) 40 return rWithoutSlash.ReplaceAllString(jsn, `"`+param+`": "[redacted]"`) 41 }