From f1d8272693389f977e4b170e6a42fdb4001dc64e Mon Sep 17 00:00:00 2001 From: sebres Date: Mon, 20 Oct 2014 01:01:31 +0200 Subject: [PATCH] bug fix (in master): option 'dbpurgeage' was never set (default always) by start of fail2ban, because of invalid sorting of options ('dbfile' should be always set before other database options) / python3 compatibility fix --- fail2ban/client/fail2banreader.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/fail2ban/client/fail2banreader.py b/fail2ban/client/fail2banreader.py index a151ebf0..ab250ba0 100644 --- a/fail2ban/client/fail2banreader.py +++ b/fail2ban/client/fail2banreader.py @@ -52,16 +52,12 @@ class Fail2banReader(ConfigWrapper): self.__opts = ConfigWrapper.getOptions(self, "Definition", opts) def convert(self): + order = {"loglevel":0, "logtarget":1, "dbfile":2, "dbpurgeage":3} stream = list() for opt in self.__opts: - if opt == "loglevel": - stream.append(["set", "loglevel", self.__opts[opt]]) - elif opt == "logtarget": - stream.append(["set", "logtarget", self.__opts[opt]]) - elif opt == "dbfile": - stream.append(["set", "dbfile", self.__opts[opt]]) - elif opt == "dbpurgeage": - stream.append(["set", "dbpurgeage", self.__opts[opt]]) + if opt in order: + stream.append((order[opt], ["set", opt, self.__opts[opt]])) # Ensure logtarget/level set first so any db errors are captured - return sorted(stream, reverse=True) + # and dbfile set before all other database options + return [opt[1] for opt in sorted(stream)]