A Java "firewall" that given a list of blacklisted ips (with wildcards) and a list of ips can return a list of int where each number indicates if the request is successful or blocked.
A request is blocked if it matches one of the blacklisted patterns or if another successful request was made in the last 5 seconds (rate limiter).
The implementation uses a Trie for fast ip look ups and backtracking.