From 7f063b46f93aa8a94111867d0330d472154746fa Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sun, 8 Dec 2013 11:40:40 +0000 Subject: [PATCH] BF: Improve handling of clearing old jails in database --- fail2ban/server/database.py | 5 +++++ fail2ban/server/server.py | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/fail2ban/server/database.py b/fail2ban/server/database.py index d211c6bf..e7ac8255 100644 --- a/fail2ban/server/database.py +++ b/fail2ban/server/database.py @@ -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") diff --git a/fail2ban/server/server.py b/fail2ban/server/server.py index 408f553f..446a0989 100644 --- a/fail2ban/server/server.py +++ b/fail2ban/server/server.py @@ -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")