diff --git a/commands/block_monitor.py b/commands/block_monitor.py index 4155834..dcc67fa 100644 --- a/commands/block_monitor.py +++ b/commands/block_monitor.py @@ -21,6 +21,7 @@ # SOFTWARE. import re +from socket import gaierror, gethostbyname from time import time from earwigbot.commands import Command @@ -46,12 +47,9 @@ class BlockMonitor(Command): data.chan == self._monitor_chan) def process(self, data): - if not data.host.startswith("gateway/web/"): + ip = self._get_ip(data.host) + if not ip: return - match = re.search(r"/ip\.(.*?)$", data.host) - if not match: - return - ip = match.group(1) if self._last and self._last[0] == ip: if time() - self._last[1] < 60 * 5: @@ -71,6 +69,16 @@ class BlockMonitor(Command): "{type}blocked because: {reason}") self.logger.info(log.format(nick=data.nick, **block)) + def _get_ip(self, host): + """Return the IP corresponding to a particular hostname.""" + match = re.search(r"/ip\.(.*?)$", host) + if match: + return match.group(1) + try: + return gethostbyname(host) + except gaierror: + return None + def _get_block_for_ip(self, ip): """Return a dictionary of blockinfo for an IP.""" site = self.bot.wiki.get_site()