diff --git a/bare.py b/bare.py index bab4f8d..8855ad5 100644 --- a/bare.py +++ b/bare.py @@ -45,6 +45,7 @@ class bot: dnsblMode: str statuses: dict[str, dict[str, str]] ops: dict[str, bool] + dns: dict[str, dict[str, Union[str, list[str]]]] def __init__(self, server: str): ... diff --git a/bot.py b/bot.py index 24fe11f..9070fe4 100644 --- a/bot.py +++ b/bot.py @@ -85,6 +85,7 @@ class bot(bare.bot): if "dnsblMode" in conf.servers[server] else "none" ) + self.dns = {} self.lastfmLink = conf.lastfmLink with open("mastermessages.txt") as f: TMFeed = [] diff --git a/commands.py b/commands.py index 27f4e42..16bcdca 100644 --- a/commands.py +++ b/commands.py @@ -290,12 +290,15 @@ def check(bot: bare.bot, chan: str, name: str, message: str) -> None: msg = message.split(" ", 1)[1] nick = msg.split("!")[0] host = msg.split("@", 1)[1] + cache = host in bot.dns dnsbl, raws = conf.dnsblHandler(bot, nick, host, chan) - bot.msg(f"Blacklist check: {dnsbl if dnsbl else 'Safe.'} ({raws})", chan) + bot.msg(f"Blacklist check: {'(Cached) ' if cache else ''}{dnsbl if dnsbl else 'Safe.'} ({raws})", chan) except IndexError: try: - dnsbl, raws = conf.dnsblHandler(bot, "thisusernameshouldbetoolongtoeveractuallybeinuse", message.split(" ", 1)[1], chan) - bot.msg(f"Blacklist check: {dnsbl if dnsbl else 'Safe.'} ({raws})", chan) + host = message.split(" ", 1)[1] + cache = host in bot.dns + dnsbl, raws = conf.dnsblHandler(bot, "thisusernameshouldbetoolongtoeveractuallybeinuse", host, chan) + bot.msg(f"Blacklist check: {'(Cached) ' if cache else ''}{dnsbl if dnsbl else 'Safe.'} ({raws})", chan) except Exception as E: bot.msg("Blacklist Lookup Failed. Error recorded to bot logs.", chan) bot.log(str(E), "FATAL") diff --git a/config.py b/config.py index d6fa586..9501042 100644 --- a/config.py +++ b/config.py @@ -32,7 +32,7 @@ ipbl = DNSBLIpChecker(providers=providers) hsbl = DNSBLDomainChecker(providers=providers) load_dotenv() -__version__ = "v3.0.18" +__version__ = "v3.0.19" npbase: str = ( "\[\x0303last\.fm\x03\] [A-Za-z0-9_[\]{}\\|\-^]{1,$MAX} (is listening|last listened) to: \x02.+ - .*\x02( \([0-9]+ plays\)( \[.*\])?)?" # pyright: ignore [reportInvalidStringEscapeSequence] ) @@ -198,7 +198,8 @@ def dnsblHandler( dnsblStatus = "Not enabled" dnsblResps = {} if bot.dnsblMode != "none": - dnsblStatus, dnsblResps = dnsbl(hostname) + dnsblStatus, dnsblResps = dnsbl(hostname) if not hostname in bot.dns else (bot.dns[hostname]["status"], bot.dns[hostname]["resps"]) + bot.dns[hostname] = {"status": dnsblStatus, "resps": dnsblResps} if dnsblStatus: match bot.dnsblMode: case "kickban":