mirror of https://github.com/fail2ban/fail2ban
BF: Improve handling of clearing old jails in database
parent
d8c7bca9b0
commit
7f063b46f9
|
@ -168,6 +168,11 @@ class Fail2BanDb(object):
|
|||
cur.execute(
|
||||
"UPDATE jails SET enabled=0 WHERE name=?", (name, ))
|
||||
|
||||
@lockandcommit()
|
||||
def delAllJails(self, cur):
|
||||
# Will be deleted by purge as appropriate
|
||||
cur.execute("UPDATE jails SET enabled=0")
|
||||
|
||||
@lockandcommit()
|
||||
def getJailNames(self, cur):
|
||||
cur.execute("SELECT name FROM jails")
|
||||
|
|
|
@ -124,10 +124,9 @@ class Server:
|
|||
self.__jails.add(self.__db, name, backend)
|
||||
self.__db.addJail(self.__jails.get(name))
|
||||
|
||||
def delJail(self, name, dbDel=True):
|
||||
def delJail(self, name):
|
||||
self.__jails.remove(name)
|
||||
if dbDel:
|
||||
self.__db.delJailName(name)
|
||||
self.__db.delJailName(name)
|
||||
|
||||
def startJail(self, name):
|
||||
try:
|
||||
|
@ -137,13 +136,13 @@ class Server:
|
|||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
def stopJail(self, name, dbDel=True):
|
||||
def stopJail(self, name):
|
||||
logSys.debug("Stopping jail %s" % name)
|
||||
try:
|
||||
self.__lock.acquire()
|
||||
if self.isAlive(name):
|
||||
self.__jails.get(name).stop()
|
||||
self.delJail(name, dbDel=dbDel)
|
||||
self.delJail(name)
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
|
@ -152,7 +151,7 @@ class Server:
|
|||
try:
|
||||
self.__lock.acquire()
|
||||
for jail in self.__jails.getAll():
|
||||
self.stopJail(jail, dbDel=False)
|
||||
self.stopJail(jail)
|
||||
finally:
|
||||
self.__lock.release()
|
||||
|
||||
|
@ -470,6 +469,7 @@ class Server:
|
|||
def setDatabase(self, filename):
|
||||
if self.__jails.size() == 0:
|
||||
self.__db = Fail2BanDb(filename)
|
||||
self.__db.delAllJails()
|
||||
else:
|
||||
raise RuntimeError(
|
||||
"Cannot change database when there are jails present")
|
||||
|
|
Loading…
Reference in New Issue