mirror of https://github.com/fail2ban/fail2ban
reload server/jail failed if database used (but was not changed) and some jail active (#1072)
parent
345820d2aa
commit
2f283079f8
|
@ -10,6 +10,8 @@ ver. 0.9.3 (2015/XX/XXX) - wanna-be-released
|
|||
-----------
|
||||
|
||||
- Fixes:
|
||||
* reload server/jail failed if database used (but was not changed) and
|
||||
some jail active (gh-1072)
|
||||
* filter.d/dovecot.conf - also match unknown user in passwd-file.
|
||||
Thanks Anton Shestakov
|
||||
* Fix fail2ban-regex not parsing journalmatch correctly from filter config
|
||||
|
|
|
@ -494,20 +494,24 @@ class Server:
|
|||
return "flushed"
|
||||
|
||||
def setDatabase(self, filename):
|
||||
if len(self.__jails) == 0:
|
||||
if filename.lower() == "none":
|
||||
self.__db = None
|
||||
else:
|
||||
if Fail2BanDb is not None:
|
||||
self.__db = Fail2BanDb(filename)
|
||||
self.__db.delAllJails()
|
||||
else:
|
||||
logSys.error(
|
||||
"Unable to import fail2ban database module as sqlite "
|
||||
"is not available.")
|
||||
else:
|
||||
# if not changed - nothing to do
|
||||
if self.__db and self.__db.filename == filename:
|
||||
return
|
||||
if not self.__db and filename.lower() == 'none':
|
||||
return
|
||||
if len(self.__jails) != 0:
|
||||
raise RuntimeError(
|
||||
"Cannot change database when there are jails present")
|
||||
if filename.lower() == "none":
|
||||
self.__db = None
|
||||
else:
|
||||
if Fail2BanDb is not None:
|
||||
self.__db = Fail2BanDb(filename)
|
||||
self.__db.delAllJails()
|
||||
else:
|
||||
logSys.error(
|
||||
"Unable to import fail2ban database module as sqlite "
|
||||
"is not available.")
|
||||
|
||||
def getDatabase(self):
|
||||
return self.__db
|
||||
|
|
|
@ -173,8 +173,14 @@ class Transmitter(TransmitterBase):
|
|||
self.setGetTestNOK("dbfile", tmpFilename)
|
||||
self.server.delJail(self.jailName)
|
||||
self.setGetTest("dbfile", tmpFilename)
|
||||
# the same file name (again no jails / not changed):
|
||||
self.setGetTest("dbfile", tmpFilename)
|
||||
self.setGetTest("dbpurgeage", "600", 600)
|
||||
self.setGetTestNOK("dbpurgeage", "LIZARD")
|
||||
# the same file name (again with jails / not changed):
|
||||
self.server.addJail(self.jailName, "auto")
|
||||
self.setGetTest("dbfile", tmpFilename)
|
||||
self.server.delJail(self.jailName)
|
||||
|
||||
# Disable database
|
||||
self.assertEqual(self.transm.proceed(
|
||||
|
@ -189,6 +195,11 @@ class Transmitter(TransmitterBase):
|
|||
self.assertEqual(self.transm.proceed(
|
||||
["get", "dbpurgeage"]),
|
||||
(0, None))
|
||||
# the same (again with jails / not changed):
|
||||
self.server.addJail(self.jailName, "auto")
|
||||
self.assertEqual(self.transm.proceed(
|
||||
["set", "dbfile", "None"]),
|
||||
(0, None))
|
||||
os.close(tmp)
|
||||
os.unlink(tmpFilename)
|
||||
|
||||
|
|
Loading…
Reference in New Issue