Skip to content

Commit 91ec754

Browse files
logging: Inline Caddyfile syntax for ip_mask filter (#6094)
1 parent e7a534d commit 91ec754

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

caddytest/integration/caddyfile_adapt/log_filters.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ log {
2121
ipv4 24
2222
ipv6 32
2323
}
24+
request>client_ip ip_mask 16 32
2425
request>headers>Regexp regexp secret REDACTED
2526
request>headers>Hash hash
2627
}
@@ -41,6 +42,11 @@ log {
4142
},
4243
"encoder": {
4344
"fields": {
45+
"request\u003eclient_ip": {
46+
"filter": "ip_mask",
47+
"ipv4_cidr": 16,
48+
"ipv6_cidr": 32
49+
},
4450
"request\u003eheaders\u003eAuthorization": {
4551
"filter": "replace",
4652
"value": "REDACTED"

modules/logging/filters.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,27 @@ func (IPMaskFilter) CaddyModule() caddy.ModuleInfo {
169169
// UnmarshalCaddyfile sets up the module from Caddyfile tokens.
170170
func (m *IPMaskFilter) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
171171
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+
172193
for d.NextBlock(0) {
173194
switch d.Val() {
174195
case "ipv4":

0 commit comments

Comments
 (0)