|
@@ -16,6 +16,7 @@ import psycopg2
|
|
import psycopg2.extensions
|
|
import psycopg2.extensions
|
|
import pytz
|
|
import pytz
|
|
import re
|
|
import re
|
|
|
|
+import socket
|
|
import sys
|
|
import sys
|
|
import time
|
|
import time
|
|
import threading
|
|
import threading
|
|
@@ -880,6 +881,28 @@ class LocationBot(ircbot.SingleServerIRCBot):
|
|
def success(self):
|
|
def success(self):
|
|
self.connection.privmsg(self.__nick, 'successfully reloaded')
|
|
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):
|
|
def _meters_per_second_to_miles_per_hour(meters_per_second):
|
|
return meters_per_second * 2.23693629
|
|
return meters_per_second * 2.23693629
|
|
|
|
|