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