diff options
author | Paul Jeannot <paul.jeannot95@gmail.com> | 2023-08-30 00:59:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-29 22:59:43 +0000 |
commit | 1b73e3862d312ac2057265bf2a5fd95760dbe9da (patch) | |
tree | 60f6f004a7b97fc79399b697af5c2a0940680f3b /modules/logging/filters.go | |
parent | c46ec3b500774e554ef0612530acc941b8b92bd4 (diff) |
logging: query filter for array of strings (#5779)
Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
Co-authored-by: Francis Lavoie <lavofr@gmail.com>
Diffstat (limited to 'modules/logging/filters.go')
-rw-r--r-- | modules/logging/filters.go | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/modules/logging/filters.go b/modules/logging/filters.go index 69ba9d1..233d5d7 100644 --- a/modules/logging/filters.go +++ b/modules/logging/filters.go @@ -373,9 +373,23 @@ func (m *QueryFilter) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { // Filter filters the input field. func (m QueryFilter) Filter(in zapcore.Field) zapcore.Field { - u, err := url.Parse(in.String) + if array, ok := in.Interface.(caddyhttp.LoggableStringArray); ok { + newArray := make(caddyhttp.LoggableStringArray, len(array)) + for i, s := range array { + newArray[i] = m.processQueryString(s) + } + in.Interface = newArray + } else { + in.String = m.processQueryString(in.String) + } + + return in +} + +func (m QueryFilter) processQueryString(s string) string { + u, err := url.Parse(s) if err != nil { - return in + return s } q := u.Query() @@ -397,9 +411,7 @@ func (m QueryFilter) Filter(in zapcore.Field) zapcore.Field { } u.RawQuery = q.Encode() - in.String = u.String() - - return in + return u.String() } type cookieFilterAction struct { |