.. | ||
blacklist.go | ||
README.md | ||
whitelist.go |
IP Blacklisting/Whitelisting Middlewares
This package provides the announce middlewares ip_blacklist
and ip_whitelist
for blacklisting or whitelisting IP addresses and networks for announces.
ip_blacklist
The ip_blacklist
middleware uses all IP addresses and networks stored in the IPStore
to blacklist, i.e. block announces.
Both the IPv4 and the IPv6 addresses contained in the announce are matched against the IPStore
.
If one or both of the two are contained in the IPStore
, the announce will be rejected completely.
ip_whitelist
The ip_whitelist
middleware uses all IP addresses and networks stored in the IPStore
to whitelist, i.e. allow announces.
If present, both the IPv4 and the IPv6 addresses contained in the announce are matched against the IPStore
.
Only if all IP address that are present in the announce are also present in the IPStore
will the announce be allowed, otherwise it will be rejected completely.
Important things to notice
Both middlewares operate on announce requests only.
The middlewares will check the IPv4 and IPv6 IPs a client announces to the tracker against an IPStore
.
Normally the IP address embedded in the announce is the public IP address of the machine the client is running on.
Note however, that a client can override this behaviour by specifying an IP address in the announce itself.
This middleware does not (dis)allow announces coming from certain IP addresses, but announces containing certain IP addresses.
Always keep that in mind.
Both middlewares use the same IPStore
.
It is therefore not advised to have both the ip_blacklist
and the ip_whitelist
middleware running.
(If you add an IP address or network to the IPStore
, it will be used for blacklisting and whitelisting.
If your store contains no addresses, no announces will be blocked by the blacklist, but all announces will be blocked by the whitelist.
If your store contains all addresses, no announces will be blocked by the whitelist, but all announces will be blocked by the blacklist.)