mirror of
https://github.com/9001/copyparty.git
synced 2026-04-19 10:32:38 -06:00
better ipv6 ratelimiting logic (#1439)
aligns ipv6 normalizatoin logic with the typical residental allocation of /56 instead of /64.
This commit is contained in:
parent
d93fadd87e
commit
f6dc1e2996
|
|
@ -1501,8 +1501,7 @@ class Garda(object):
|
||||||
return 0, ip
|
return 0, ip
|
||||||
|
|
||||||
if ":" in ip:
|
if ":" in ip:
|
||||||
# assume /64 clients; drop 4 groups
|
ip = ipnorm(ip)
|
||||||
ip = IPv6Address(ip).exploded[:-20]
|
|
||||||
|
|
||||||
if prev and self.uniq:
|
if prev and self.uniq:
|
||||||
if self.prev.get(ip) == prev:
|
if self.prev.get(ip) == prev:
|
||||||
|
|
@ -2445,8 +2444,8 @@ def odfusion(
|
||||||
|
|
||||||
def ipnorm(ip: str) -> str:
|
def ipnorm(ip: str) -> str:
|
||||||
if ":" in ip:
|
if ":" in ip:
|
||||||
# assume /64 clients; drop 4 groups
|
# assume /56 clients; drop final 72 bits
|
||||||
return IPv6Address(ip).exploded[:-20]
|
return str(IPv6Network(ip + "/56", strict=False).network_address)
|
||||||
|
|
||||||
return ip
|
return ip
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue