diff options
author | Francis Lavoie <[email protected]> | 2024-02-12 12:15:35 -0500 |
---|---|---|
committer | GitHub <[email protected]> | 2024-02-12 17:15:35 +0000 |
commit | 91ec75441ab5b95deec4ee6794f00b3880ec6336 (patch) | |
tree | e3a645ddf24dafa79a9270ecb46ab572f64bda96 | |
parent | e7a534d0a311d9fa75b5981879c755281c4c9fba (diff) | |
download | caddy-91ec75441ab5b95deec4ee6794f00b3880ec6336.tar.gz caddy-91ec75441ab5b95deec4ee6794f00b3880ec6336.zip |
logging: Inline Caddyfile syntax for `ip_mask` filter (#6094)
-rw-r--r-- | caddytest/integration/caddyfile_adapt/log_filters.txt | 6 | ||||
-rw-r--r-- | modules/logging/filters.go | 21 |
2 files changed, 27 insertions, 0 deletions
diff --git a/caddytest/integration/caddyfile_adapt/log_filters.txt b/caddytest/integration/caddyfile_adapt/log_filters.txt index 776fa68d3..28524a346 100644 --- a/caddytest/integration/caddyfile_adapt/log_filters.txt +++ b/caddytest/integration/caddyfile_adapt/log_filters.txt @@ -21,6 +21,7 @@ log { ipv4 24 ipv6 32 } + request>client_ip ip_mask 16 32 request>headers>Regexp regexp secret REDACTED request>headers>Hash hash } @@ -41,6 +42,11 @@ log { }, "encoder": { "fields": { + "request\u003eclient_ip": { + "filter": "ip_mask", + "ipv4_cidr": 16, + "ipv6_cidr": 32 + }, "request\u003eheaders\u003eAuthorization": { "filter": "replace", "value": "REDACTED" diff --git a/modules/logging/filters.go b/modules/logging/filters.go index f38f8c185..79d908fca 100644 --- a/modules/logging/filters.go +++ b/modules/logging/filters.go @@ -169,6 +169,27 @@ func (IPMaskFilter) CaddyModule() caddy.ModuleInfo { // UnmarshalCaddyfile sets up the module from Caddyfile tokens. func (m *IPMaskFilter) UnmarshalCaddyfile(d *caddyfile.Dispenser) error { d.Next() // consume filter name + + args := d.RemainingArgs() + if len(args) > 2 { + return d.Errf("too many arguments") + } + if len(args) > 0 { + val, err := strconv.Atoi(args[0]) + if err != nil { + return d.Errf("error parsing %s: %v", args[0], err) + } + m.IPv4MaskRaw = val + + if len(args) > 1 { + val, err := strconv.Atoi(args[1]) + if err != nil { + return d.Errf("error parsing %s: %v", args[1], err) + } + m.IPv6MaskRaw = val + } + } + for d.NextBlock(0) { switch d.Val() { case "ipv4": |