diff --git a/pkg/redact/literal.go b/pkg/redact/literal.go index 56a041d5..2f9cfc97 100644 --- a/pkg/redact/literal.go +++ b/pkg/redact/literal.go @@ -11,6 +11,7 @@ type literalRedactor struct { matchString string filePath string redactName string + isDefault bool } func literalString(matchString, path, name string) Redactor { @@ -58,6 +59,7 @@ func (r literalRedactor) Redact(input io.Reader) io.Reader { CharactersRemoved: len(line) - len(clean), Line: lineNum, File: r.filePath, + IsDefaultRedactor: r.isDefault, }) } } diff --git a/pkg/redact/multi_line.go b/pkg/redact/multi_line.go index 8209ba39..d8b3e128 100644 --- a/pkg/redact/multi_line.go +++ b/pkg/redact/multi_line.go @@ -13,9 +13,10 @@ type MultiLineRedactor struct { maskText string filePath string redactName string + isDefault bool } -func NewMultiLineRedactor(re1, re2, maskText, path, name string) (*MultiLineRedactor, error) { +func NewMultiLineRedactor(re1, re2, maskText, path, name string, isDefault bool) (*MultiLineRedactor, error) { compiled1, err := regexp.Compile(re1) if err != nil { return nil, err @@ -24,7 +25,7 @@ func NewMultiLineRedactor(re1, re2, maskText, path, name string) (*MultiLineReda if err != nil { return nil, err } - return &MultiLineRedactor{re1: compiled1, re2: compiled2, maskText: maskText, filePath: path, redactName: name}, nil + return &MultiLineRedactor{re1: compiled1, re2: compiled2, maskText: maskText, filePath: path, redactName: name, isDefault: isDefault}, nil } func (r *MultiLineRedactor) Redact(input io.Reader) io.Reader { @@ -75,6 +76,7 @@ func (r *MultiLineRedactor) Redact(input io.Reader) io.Reader { CharactersRemoved: len(line2) - len(clean), Line: lineNum, File: r.filePath, + IsDefaultRedactor: r.isDefault, }) } diff --git a/pkg/redact/redact.go b/pkg/redact/redact.go index e8765f3f..db896cf5 100644 --- a/pkg/redact/redact.go +++ b/pkg/redact/redact.go @@ -44,6 +44,7 @@ type Redaction struct { CharactersRemoved int `json:"charactersRemoved" yaml:"charactersRemoved"` Line int `json:"line" yaml:"line"` File string `json:"file" yaml:"file"` + IsDefaultRedactor bool `json:"isDefaultRedactor" yaml:"isDefaultRedactor"` } func Redact(input []byte, path string, additionalRedactors []*troubleshootv1beta1.Redact) ([]byte, error) { @@ -104,7 +105,7 @@ func buildAdditionalRedactors(path string, redacts []*troubleshootv1beta1.Redact } for j, re := range redact.Regex { - r, err := NewSingleLineRedactor(re, MASK_TEXT, path, redactorName(i, j, redact.Name, "regex")) + r, err := NewSingleLineRedactor(re, MASK_TEXT, path, redactorName(i, j, redact.Name, "regex"), false) if err != nil { return nil, errors.Wrapf(err, "redactor %q", re) } @@ -116,7 +117,7 @@ func buildAdditionalRedactors(path string, redacts []*troubleshootv1beta1.Redact } for j, re := range redact.MultiLine { - r, err := NewMultiLineRedactor(re.Selector, re.Redactor, MASK_TEXT, path, redactorName(i, j, redact.Name, "multiLine")) + r, err := NewMultiLineRedactor(re.Selector, re.Redactor, MASK_TEXT, path, redactorName(i, j, redact.Name, "multiLine"), false) if err != nil { return nil, errors.Wrapf(err, "multiline redactor %+v", re) } @@ -258,7 +259,7 @@ func getRedactors(path string) ([]Redactor, error) { redactors := make([]Redactor, 0) for _, re := range singleLines { - r, err := NewSingleLineRedactor(re.regex, MASK_TEXT, path, re.name) + r, err := NewSingleLineRedactor(re.regex, MASK_TEXT, path, re.name, true) if err != nil { return nil, err // maybe skip broken ones? } @@ -308,7 +309,7 @@ func getRedactors(path string) ([]Redactor, error) { } for _, l := range doubleLines { - r, err := NewMultiLineRedactor(l.line1, l.line2, MASK_TEXT, path, l.name) + r, err := NewMultiLineRedactor(l.line1, l.line2, MASK_TEXT, path, l.name, true) if err != nil { return nil, err // maybe skip broken ones? } diff --git a/pkg/redact/single_line.go b/pkg/redact/single_line.go index 3a43151f..a4306940 100644 --- a/pkg/redact/single_line.go +++ b/pkg/redact/single_line.go @@ -12,14 +12,15 @@ type SingleLineRedactor struct { maskText string filePath string redactName string + isDefault bool } -func NewSingleLineRedactor(re, maskText, path, name string) (*SingleLineRedactor, error) { +func NewSingleLineRedactor(re, maskText, path, name string, isDefault bool) (*SingleLineRedactor, error) { compiled, err := regexp.Compile(re) if err != nil { return nil, err } - return &SingleLineRedactor{re: compiled, maskText: maskText, filePath: path, redactName: name}, nil + return &SingleLineRedactor{re: compiled, maskText: maskText, filePath: path, redactName: name, isDefault: isDefault}, nil } func (r *SingleLineRedactor) Redact(input io.Reader) io.Reader { @@ -67,6 +68,7 @@ func (r *SingleLineRedactor) Redact(input io.Reader) io.Reader { CharactersRemoved: len(line) - len(clean), Line: lineNum, File: r.filePath, + IsDefaultRedactor: r.isDefault, }) } } diff --git a/pkg/redact/single_line_test.go b/pkg/redact/single_line_test.go index 0d56895d..41f0c184 100644 --- a/pkg/redact/single_line_test.go +++ b/pkg/redact/single_line_test.go @@ -108,7 +108,7 @@ func TestNewSingleLineRedactor(t *testing.T) { defer scopetest.End() req := require.New(t) - reRunner, err := NewSingleLineRedactor(tt.re, MASK_TEXT, "testfile", tt.name) + reRunner, err := NewSingleLineRedactor(tt.re, MASK_TEXT, "testfile", tt.name, false) req.NoError(err) outReader := reRunner.Redact(bytes.NewReader([]byte(tt.inputString))) diff --git a/pkg/redact/yaml.go b/pkg/redact/yaml.go index a88c1e13..8167de7e 100644 --- a/pkg/redact/yaml.go +++ b/pkg/redact/yaml.go @@ -16,6 +16,7 @@ type YamlRedactor struct { foundMatch bool filePath string redactName string + isDefault bool } func NewYamlRedactor(yamlPath, filePath, name string) *YamlRedactor { @@ -69,6 +70,7 @@ func (r *YamlRedactor) Redact(input io.Reader) io.Reader { CharactersRemoved: len(doc) - len(newBytes), Line: 0, // line 0 because we have no way to tell what line was impacted File: r.filePath, + IsDefaultRedactor: r.isDefault, }) return