Browse Source

Now I don't have to trust the server to have useful DNS.

Douglas William Thrift 13 years ago
parent
commit
4c3c2812cc
1 changed files with 23 additions and 0 deletions
  1. 23 0
      locationbot.py

+ 23 - 0
locationbot.py

@@ -16,6 +16,7 @@ import psycopg2
 import psycopg2.extensions
 import pytz
 import re
+import socket
 import sys
 import time
 import threading
@@ -880,6 +881,28 @@ class LocationBot(ircbot.SingleServerIRCBot):
 	def success(self):
 		self.connection.privmsg(self.__nick, 'successfully reloaded')
 
+class _AddressMask(object):
+	def __init__(self, function):
+		self.function = function
+
+	def __call__(self, nick, mask):
+		if not self.function(nick, mask):
+			nick, address = nick.split('@', 1)
+
+			try:
+				host = socket.gethostbyaddr(address)[0]
+			except socket.gaierror:
+				pass
+			else:
+				if host != address:
+					return self.function(nick + '@' + host, mask)
+
+			return False
+
+		return True
+
+irclib.mask_matches = _AddressMask(reload(irclib).mask_matches)
+
 def _meters_per_second_to_miles_per_hour(meters_per_second):
 	return meters_per_second * 2.23693629