From def74a600c6e72a13ee2e335362b2e30a7d425f8 Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Mon, 11 Jan 2016 17:47:05 -0500 Subject: [PATCH] Updates for LTA monitor. --- commands/lta_monitor.py | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/commands/lta_monitor.py b/commands/lta_monitor.py index 473ddfe..ba8e5e1 100644 --- a/commands/lta_monitor.py +++ b/commands/lta_monitor.py @@ -58,30 +58,43 @@ class LTAMonitor(Command): if len(self._recent) > self._recent_max: self._recent.pop(0) + block = self._get_block_for_ip(ip) + if not block: + return + + msg = ("\x02[{note}]\x0F Joined user \x02{nick}\x0F is {type}blocked " + "on-wiki ([[User:{user}]]) because: {reason}") + self.say(self._report_chan, msg.format(nick=data.nick, **block)) + + log = ("Reporting block ({note}): {nick} is [[User:{user}]], " + "{type}blocked because: {reason}") + self.logger.info(log.format(nick=data.nick, **block)) + + def _get_block_for_ip(self, ip): + """Return a dictionary of blockinfo for an IP.""" site = self.bot.wiki.get_site() try: - result = site.api_query(action="query", list="blocks", bkip=ip, - bklimit=1, bkprop="user|reason|range") + result = site.api_query( + action="query", list="blocks|globalblocks", bkip=ip, bgip=ip, + bklimit=1, bglimit=1, bkprop="user|reason|range", + bgprop="address|reason|range") except APIError: return - blocks = result["query"]["blocks"] - if not blocks: + lblocks = result["query"]["blocks"] + gblocks = result["query"]["globalblocks"] + if not lblocks and not gblocks: return - block = blocks[0] - if re.search(r"web[ _-]?host", block["reason"], re.IGNORECASE): - block["note"] = "webhost warning" - else: - block["note"] = "alert" + block = lblocks[0] if lblocks else gblocks[0] if block["rangestart"] != block["rangeend"]: block["type"] = "range" else: block["type"] = "IP-" + if not lblocks: + block["type"] = "globally " + block["type"] - msg = ("\x02[{note}]\x0F Joined user \x02{nick}\x0F is {type}blocked " - "on-wiki ([[User:{user}]]) because: {reason}") - self.say(self._report_chan, msg.format(nick=data.nick, **block)) - - log = ("Reporting block ({note}): {nick} is [[User:{user}]], " - "{type}blocked because: {reason}") - self.logger.info(log.format(nick=data.nick, **block)) + if re.search(r"web[ _-]?host", block["reason"], re.IGNORECASE): + block["note"] = "webhost warning" + else: + block["note"] = "alert" + return block