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":