@marcel91200 / caddy Mirror · read-only / commits / 91ec7544
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 12, 17:00 UTC

logging: Inline Caddyfile syntax for `ip_mask` filter (#6094)

Francis Lavoie committed Feb 12, 2024 at 12:15 UTC 91ec75441ab5b95deec4ee6794f00b3880ec6336
2 files changed +27
caddytest/integration/caddyfile_adapt/log_filters.txt
+6
@@ -21,6 +21,7 @@ log {
21 ipv4 24
22 ipv6 32
23 }
24 + request>client_ip ip_mask 16 32
25 request>headers>Regexp regexp secret REDACTED
26 request>headers>Hash hash
27 }
@@ -41,6 +42,11 @@ log {
42 },
43 "encoder": {
44 "fields": {
45 + "request\u003eclient_ip": {
46 + "filter": "ip_mask",
47 + "ipv4_cidr": 16,
48 + "ipv6_cidr": 32
49 + },
50 "request\u003eheaders\u003eAuthorization": {
51 "filter": "replace",
52 "value": "REDACTED"
modules/logging/filters.go
+21
@@ -169,6 +169,27 @@ func (IPMaskFilter) CaddyModule() caddy.ModuleInfo {
169 // UnmarshalCaddyfile sets up the module from Caddyfile tokens.
170 func (m *IPMaskFilter) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
171 d.Next() // consume filter name
172 +
173 + args := d.RemainingArgs()
174 + if len(args) > 2 {
175 + return d.Errf("too many arguments")
176 + }
177 + if len(args) > 0 {
178 + val, err := strconv.Atoi(args[0])
179 + if err != nil {
180 + return d.Errf("error parsing %s: %v", args[0], err)
181 + }
182 + m.IPv4MaskRaw = val
183 +
184 + if len(args) > 1 {
185 + val, err := strconv.Atoi(args[1])
186 + if err != nil {
187 + return d.Errf("error parsing %s: %v", args[1], err)
188 + }
189 + m.IPv6MaskRaw = val
190 + }
191 + }
192 +
193 for d.NextBlock(0) {
194 switch d.Val() {
195 case "ipv4":