mirror of https://github.com/fail2ban/fail2ban
- Moved every locking statements in a try..finally block
git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/trunk@553 a942ae1a-1317-0410-a47c-b1dcaea8d6050.x
parent
f02a915de1
commit
6426cf75aa
|
@ -13,6 +13,7 @@ ver. 0.?.? (2007/??/??) - ???
|
|||
- Added new filters/actions. Thanks to Yaroslav Halchenko
|
||||
- Added Suse init script and modified gentoo-initd. Thanks to
|
||||
Christian Rauch
|
||||
- Moved every locking statements in a try..finally block
|
||||
|
||||
ver. 0.7.7 (2007/02/08) - release candidate
|
||||
----------
|
||||
|
|
|
@ -62,8 +62,10 @@ class BanManager:
|
|||
# @param value the time
|
||||
|
||||
def setBanTime(self, value):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
self.__banTime = int(value)
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
##
|
||||
|
@ -85,8 +87,10 @@ class BanManager:
|
|||
# @param value total number
|
||||
|
||||
def setBanTotal(self, value):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
self.__banTotal = value
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
##
|
||||
|
|
|
@ -42,6 +42,8 @@ class DateDetector:
|
|||
self.__defTemplate = DateStrptime()
|
||||
|
||||
def addDefaultTemplate(self):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
# standard
|
||||
template = DateStrptime()
|
||||
template.setName("Month Day Hour:Minute:Second")
|
||||
|
@ -80,6 +82,8 @@ class DateDetector:
|
|||
template = DateEpoch()
|
||||
template.setName("Epoch")
|
||||
self.__templates.append(template)
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def getTemplates(self):
|
||||
return self.__templates
|
||||
|
@ -100,14 +104,15 @@ class DateDetector:
|
|||
if self.__defTemplate.isValid():
|
||||
return self.__defTemplate.matchDate(line)
|
||||
else:
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
for template in self.__templates:
|
||||
match = template.matchDate(line)
|
||||
if not match == None:
|
||||
self.__lock.release()
|
||||
return match
|
||||
self.__lock.release()
|
||||
return None
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def getTime(self, line):
|
||||
if self.__defTemplate.isValid():
|
||||
|
@ -117,6 +122,7 @@ class DateDetector:
|
|||
except ValueError:
|
||||
return None
|
||||
else:
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
for template in self.__templates:
|
||||
try:
|
||||
|
@ -124,12 +130,12 @@ class DateDetector:
|
|||
if date == None:
|
||||
continue
|
||||
template.incHits()
|
||||
self.__lock.release()
|
||||
return date
|
||||
except ValueError:
|
||||
pass
|
||||
self.__lock.release()
|
||||
return None
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def getUnixTime(self, line):
|
||||
date = self.getTime(line)
|
||||
|
@ -143,8 +149,11 @@ class DateDetector:
|
|||
# in this object and thus should be called from time to time.
|
||||
|
||||
def sortTemplate(self):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
logSys.debug("Sorting the template list")
|
||||
self.__templates.sort(cmp = lambda x, y: cmp(x.getHits(), y.getHits()),
|
||||
self.__templates.sort(cmp = lambda x, y:
|
||||
cmp(x.getHits(), y.getHits()),
|
||||
reverse = True)
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
|
|
@ -42,8 +42,10 @@ class FailManager:
|
|||
self.__failTotal = 0
|
||||
|
||||
def setFailTotal(self, value):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
self.__failTotal = value
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def getFailTotal(self):
|
||||
|
@ -54,8 +56,10 @@ class FailManager:
|
|||
self.__lock.release()
|
||||
|
||||
def setMaxRetry(self, value):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
self.__maxRetry = value
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def getMaxRetry(self):
|
||||
|
@ -66,8 +70,10 @@ class FailManager:
|
|||
self.__lock.release()
|
||||
|
||||
def setMaxTime(self, value):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
self.__maxTime = value
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def getMaxTime(self):
|
||||
|
@ -78,6 +84,7 @@ class FailManager:
|
|||
self.__lock.release()
|
||||
|
||||
def addFailure(self, ticket):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
ip = ticket.getIP()
|
||||
unixTime = ticket.getTime()
|
||||
|
@ -91,6 +98,7 @@ class FailManager:
|
|||
fData.setLastTime(unixTime)
|
||||
self.__failList[ip] = fData
|
||||
self.__failTotal += 1
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def size(self):
|
||||
|
@ -101,11 +109,13 @@ class FailManager:
|
|||
self.__lock.release()
|
||||
|
||||
def cleanup(self, time):
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
tmp = self.__failList.copy()
|
||||
for item in tmp:
|
||||
if tmp[item].getLastTime() < time - self.__maxTime:
|
||||
self.__delFailure(item)
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def __delFailure(self, ip):
|
||||
|
@ -129,4 +139,3 @@ class FailManager:
|
|||
|
||||
class FailManagerEmpty(Exception):
|
||||
pass
|
||||
|
Loading…
Reference in New Issue