diff --git a/fail2ban/server/filter.py b/fail2ban/server/filter.py index deb47a4b..3682125c 100644 --- a/fail2ban/server/filter.py +++ b/fail2ban/server/filter.py @@ -375,7 +375,7 @@ class Filter(JailThread): # @return True if IP address is in ignore list def inIgnoreIPList(self, ip, log_ignore=False): - if isinstance(ip, basestring): + if not isinstance(ip, IPAddr): ip = IPAddr(ip) for net in self.__ignoreIpList: # if it isn't a valid IP address, try DNS resolution @@ -1037,7 +1037,10 @@ class DNSUtils: return v # retrieve name try: - v = socket.gethostbyaddr(ip.ntoa())[0] + if not isinstance(ip, IPAddr): + v = socket.gethostbyaddr(ip)[0] + else: + v = socket.gethostbyaddr(ip.ntoa())[0] except socket.error, e: logSys.debug("Unable to find a name for the IP %s: %s", ip, e) v = None diff --git a/fail2ban/tests/filtertestcase.py b/fail2ban/tests/filtertestcase.py index ae22b88f..b5a772d9 100644 --- a/fail2ban/tests/filtertestcase.py +++ b/fail2ban/tests/filtertestcase.py @@ -1314,9 +1314,9 @@ class DNSUtilsNetworkTests(unittest.TestCase): res = DNSUtils.textToIp('www.example.com', 'no') self.assertEqual(res, []) res = DNSUtils.textToIp('www.example.com', 'warn') - self.assertEqual(res, ['93.184.216.34']) + self.assertEqual(res, ['93.184.216.34', '2606:2800:220:1:248:1893:25c8:1946']) res = DNSUtils.textToIp('www.example.com', 'yes') - self.assertEqual(res, ['93.184.216.34']) + self.assertEqual(res, ['93.184.216.34', '2606:2800:220:1:248:1893:25c8:1946']) def testTextToIp(self): # Test hostnames @@ -1328,7 +1328,7 @@ class DNSUtilsNetworkTests(unittest.TestCase): for s in hostnames: res = DNSUtils.textToIp(s, 'yes') if s == 'www.example.com': - self.assertEqual(res, ['93.184.216.34']) + self.assertEqual(res, ['93.184.216.34', '2606:2800:220:1:248:1893:25c8:1946']) else: self.assertEqual(res, [])