40 lines
1 KiB
Python
40 lines
1 KiB
Python
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)
|