diff options
Diffstat (limited to 'modules/dnsbl/lists.py')
| -rw-r--r-- | modules/dnsbl/lists.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/modules/dnsbl/lists.py b/modules/dnsbl/lists.py new file mode 100644 index 00000000..0ae6a1b6 --- /dev/null +++ b/modules/dnsbl/lists.py @@ -0,0 +1,40 @@ +import collections + +class DNSBL(object): + def __init__(self, hostname=None): + if not hostname == None: + self.hostname = hostname + + def process(self, result: str): + return "unknown" + +class ZenSpamhaus(DNSBL): + hostname = "zen.spamhaus.org" + def process(self, result): + result = result.rsplit(".", 1)[1] + if result in ["2", "3", "9"]: + return "spam" + elif result in ["4", "5", "6", "7"]: + return "exploits" +class EFNetRBL(DNSBL): + hostname = "rbl.efnetrbl.org" + SPAMTRAP = ["2", "3"] + def process(self, result): + result = result.rsplit(".", 1)[1] + if result == "1": + return "proxy" + elif result in self.SPAMTRAP: + return "spamtap" + elif result == "4": + return "tor" + elif result == "5": + return "flooding" + +DEFAULT_LISTS = [ + ZenSpamhaus(), + EFNetRBL() +] + +def default_lists(): + return collections.OrderedDict( + (dnsbl.hostname, dnsbl) for dnsbl in DEFAULT_LISTS) |
