mirror of https://github.com/fail2ban/fail2ban
- Fixed maxretry/findtime rate. Many thanks to Christos Psonis. Tracker #2019714.
git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/branches/FAIL2BAN-0_8@731 a942ae1a-1317-0410-a47c-b1dcaea8d605_tent/ipv6_via_aInfo
parent
55fd21ec4b
commit
0cf733e878
|
@ -39,6 +39,8 @@ ver. 0.8.4 (2008/??/??) - stable
|
||||||
not a 100% correct fix but seems to work. Tracker #2500276.
|
not a 100% correct fix but seems to work. Tracker #2500276.
|
||||||
- Made the named-refused regex a bit less restrictive in
|
- Made the named-refused regex a bit less restrictive in
|
||||||
order to match logs with "view". Thanks to Stephen Gildea.
|
order to match logs with "view". Thanks to Stephen Gildea.
|
||||||
|
- Fixed maxretry/findtime rate. Many thanks to Christos
|
||||||
|
Psonis. Tracker #2019714.
|
||||||
|
|
||||||
ver. 0.8.3 (2008/07/17) - stable
|
ver. 0.8.3 (2008/07/17) - stable
|
||||||
----------
|
----------
|
||||||
|
|
|
@ -34,6 +34,7 @@ class FailData:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.__retry = 0
|
self.__retry = 0
|
||||||
self.__lastTime = 0
|
self.__lastTime = 0
|
||||||
|
self.__lastReset = 0
|
||||||
|
|
||||||
def setRetry(self, value):
|
def setRetry(self, value):
|
||||||
self.__retry = value
|
self.__retry = value
|
||||||
|
@ -51,3 +52,8 @@ class FailData:
|
||||||
def getLastTime(self):
|
def getLastTime(self):
|
||||||
return self.__lastTime
|
return self.__lastTime
|
||||||
|
|
||||||
|
def getLastReset(self):
|
||||||
|
return self.__lastReset
|
||||||
|
|
||||||
|
def setLastReset(self, value):
|
||||||
|
self.__lastReset = value
|
||||||
|
|
|
@ -90,11 +90,15 @@ class FailManager:
|
||||||
unixTime = ticket.getTime()
|
unixTime = ticket.getTime()
|
||||||
if self.__failList.has_key(ip):
|
if self.__failList.has_key(ip):
|
||||||
fData = self.__failList[ip]
|
fData = self.__failList[ip]
|
||||||
|
if fData.getLastReset() < unixTime - self.__maxTime:
|
||||||
|
fData.setLastReset(unixTime)
|
||||||
|
fData.setRetry(0)
|
||||||
fData.inc()
|
fData.inc()
|
||||||
fData.setLastTime(unixTime)
|
fData.setLastTime(unixTime)
|
||||||
else:
|
else:
|
||||||
fData = FailData()
|
fData = FailData()
|
||||||
fData.inc()
|
fData.inc()
|
||||||
|
fData.setLastReset(unixTime)
|
||||||
fData.setLastTime(unixTime)
|
fData.setLastTime(unixTime)
|
||||||
self.__failList[ip] = fData
|
self.__failList[ip] = fData
|
||||||
self.__failTotal += 1
|
self.__failTotal += 1
|
||||||
|
|
|
@ -39,7 +39,12 @@ class AddFailure(unittest.TestCase):
|
||||||
['193.168.0.128', 1167605999.0],
|
['193.168.0.128', 1167605999.0],
|
||||||
['87.142.124.10', 1167605999.0],
|
['87.142.124.10', 1167605999.0],
|
||||||
['87.142.124.10', 1167605999.0],
|
['87.142.124.10', 1167605999.0],
|
||||||
['87.142.124.10', 1167605999.0]]
|
['87.142.124.10', 1167605999.0],
|
||||||
|
['100.100.10.10', 1000000000.0],
|
||||||
|
['100.100.10.10', 1000000500.0],
|
||||||
|
['100.100.10.10', 1000001000.0],
|
||||||
|
['100.100.10.10', 1000001500.0],
|
||||||
|
['100.100.10.10', 1000002000.0]]
|
||||||
|
|
||||||
self.__failManager = FailManager()
|
self.__failManager = FailManager()
|
||||||
for i in self.__items:
|
for i in self.__items:
|
||||||
|
@ -49,7 +54,7 @@ class AddFailure(unittest.TestCase):
|
||||||
"""Call after every test case."""
|
"""Call after every test case."""
|
||||||
|
|
||||||
def testAdd(self):
|
def testAdd(self):
|
||||||
self.assertEqual(self.__failManager.size(), 2)
|
self.assertEqual(self.__failManager.size(), 3)
|
||||||
|
|
||||||
def _testDel(self):
|
def _testDel(self):
|
||||||
self.__failManager.delFailure('193.168.0.128')
|
self.__failManager.delFailure('193.168.0.128')
|
||||||
|
@ -76,3 +81,10 @@ class AddFailure(unittest.TestCase):
|
||||||
def testbanNOK(self):
|
def testbanNOK(self):
|
||||||
self.__failManager.setMaxRetry(10)
|
self.__failManager.setMaxRetry(10)
|
||||||
self.assertRaises(FailManagerEmpty, self.__failManager.toBan)
|
self.assertRaises(FailManagerEmpty, self.__failManager.toBan)
|
||||||
|
|
||||||
|
def testWindow(self):
|
||||||
|
ticket = self.__failManager.toBan()
|
||||||
|
self.assertNotEqual(ticket.getIP(), "100.100.10.10")
|
||||||
|
ticket = self.__failManager.toBan()
|
||||||
|
self.assertNotEqual(ticket.getIP(), "100.100.10.10")
|
||||||
|
self.assertRaises(FailManagerEmpty, self.__failManager.toBan)
|
||||||
|
|
Loading…
Reference in New Issue