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:
|
- 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.
|
* filter.d/dovecot.conf - also match unknown user in passwd-file.
|
||||||
Thanks Anton Shestakov
|
Thanks Anton Shestakov
|
||||||
* Fix fail2ban-regex not parsing journalmatch correctly from filter config
|
* Fix fail2ban-regex not parsing journalmatch correctly from filter config
|
||||||
|
|
|
@ -494,20 +494,24 @@ class Server:
|
||||||
return "flushed"
|
return "flushed"
|
||||||
|
|
||||||
def setDatabase(self, filename):
|
def setDatabase(self, filename):
|
||||||
if len(self.__jails) == 0:
|
# if not changed - nothing to do
|
||||||
if filename.lower() == "none":
|
if self.__db and self.__db.filename == filename:
|
||||||
self.__db = None
|
return
|
||||||
else:
|
if not self.__db and filename.lower() == 'none':
|
||||||
if Fail2BanDb is not None:
|
return
|
||||||
self.__db = Fail2BanDb(filename)
|
if len(self.__jails) != 0:
|
||||||
self.__db.delAllJails()
|
|
||||||
else:
|
|
||||||
logSys.error(
|
|
||||||
"Unable to import fail2ban database module as sqlite "
|
|
||||||
"is not available.")
|
|
||||||
else:
|
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"Cannot change database when there are jails present")
|
"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):
|
def getDatabase(self):
|
||||||
return self.__db
|
return self.__db
|
||||||
|
|
|
@ -173,8 +173,14 @@ class Transmitter(TransmitterBase):
|
||||||
self.setGetTestNOK("dbfile", tmpFilename)
|
self.setGetTestNOK("dbfile", tmpFilename)
|
||||||
self.server.delJail(self.jailName)
|
self.server.delJail(self.jailName)
|
||||||
self.setGetTest("dbfile", tmpFilename)
|
self.setGetTest("dbfile", tmpFilename)
|
||||||
|
# the same file name (again no jails / not changed):
|
||||||
|
self.setGetTest("dbfile", tmpFilename)
|
||||||
self.setGetTest("dbpurgeage", "600", 600)
|
self.setGetTest("dbpurgeage", "600", 600)
|
||||||
self.setGetTestNOK("dbpurgeage", "LIZARD")
|
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
|
# Disable database
|
||||||
self.assertEqual(self.transm.proceed(
|
self.assertEqual(self.transm.proceed(
|
||||||
|
@ -189,6 +195,11 @@ class Transmitter(TransmitterBase):
|
||||||
self.assertEqual(self.transm.proceed(
|
self.assertEqual(self.transm.proceed(
|
||||||
["get", "dbpurgeage"]),
|
["get", "dbpurgeage"]),
|
||||||
(0, None))
|
(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.close(tmp)
|
||||||
os.unlink(tmpFilename)
|
os.unlink(tmpFilename)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue