better ipv6 ratelimiting logic (#1439)

aligns ipv6 normalizatoin logic with the typical residental allocation of /56 instead of /64.
This commit is contained in:
Snoww 2026-04-15 16:14:35 -04:00 committed by GitHub
parent d93fadd87e
commit f6dc1e2996
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1501,8 +1501,7 @@ class Garda(object):
return 0, ip
if ":" in ip:
# assume /64 clients; drop 4 groups
ip = IPv6Address(ip).exploded[:-20]
ip = ipnorm(ip)
if prev and self.uniq:
if self.prev.get(ip) == prev:
@ -2445,8 +2444,8 @@ def odfusion(
def ipnorm(ip: str) -> str:
if ":" in ip:
# assume /64 clients; drop 4 groups
return IPv6Address(ip).exploded[:-20]
# assume /56 clients; drop final 72 bits
return str(IPv6Network(ip + "/56", strict=False).network_address)
return ip