BF: Improve handling of clearing old jails in database

pull/480/head
Steven Hiscocks 2013-12-08 11:40:40 +00:00
parent d8c7bca9b0
commit 7f063b46f9
2 changed files with 11 additions and 6 deletions

View File

@ -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")

View File

@ -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")