diff --git a/fail2ban/client/jailreader.py b/fail2ban/client/jailreader.py index 651bbc37..72bf780d 100644 --- a/fail2ban/client/jailreader.py +++ b/fail2ban/client/jailreader.py @@ -90,9 +90,6 @@ class JailReader(ConfigReader): opts1st = [["bool", "enabled", False], ["string", "filter", ""]] opts = [["bool", "enabled", False], - ["string", "logpath", None], - ["string", "logtimezone", None], - ["string", "logencoding", None], ["string", "backend", "auto"], ["int", "maxretry", None], ["string", "findtime", None], @@ -105,6 +102,9 @@ class JailReader(ConfigReader): ["string", "ignoreip", None], ["string", "filter", ""], ["string", "datepattern", None], + ["string", "logtimezone", None], + ["string", "logencoding", None], + ["string", "logpath", None], # logpath after all log-related data (backend, date-pattern, etc) ["string", "action", ""]] # Before interpolation (substitution) add static options always available as default: diff --git a/fail2ban/server/filter.py b/fail2ban/server/filter.py index 9ffc9177..2e4f896b 100644 --- a/fail2ban/server/filter.py +++ b/fail2ban/server/filter.py @@ -887,9 +887,6 @@ class FileFilter(Filter): self.__logs[path] = log logSys.info("Added logfile: %r (pos = %s, hash = %s)" , path, log.getPos(), log.getHash()) if autoSeek: - # if default, seek to "current time" - "find time": - if isinstance(autoSeek, bool): - autoSeek = MyTime.time() - self.getFindTime() self.__autoSeek[path] = autoSeek self._addLogPath(path) # backend specific @@ -999,18 +996,21 @@ class FileFilter(Filter): return False # seek to find time for first usage only (prevent performance decline with polling of big files) - if self.__autoSeek.get(filename): - startTime = self.__autoSeek[filename] - del self.__autoSeek[filename] - # prevent completely read of big files first time (after start of service), - # initial seek to start time using half-interval search algorithm: - try: - self.seekToTime(log, startTime) - except Exception as e: # pragma: no cover - logSys.error("Error during seek to start time in \"%s\"", filename) - raise - logSys.exception(e) - return False + if self.__autoSeek: + startTime = self.__autoSeek.pop(filename, None) + if startTime: + # if default, seek to "current time" - "find time": + if isinstance(startTime, bool): + startTime = MyTime.time() - self.getFindTime() + # prevent completely read of big files first time (after start of service), + # initial seek to start time using half-interval search algorithm: + try: + self.seekToTime(log, startTime) + except Exception as e: # pragma: no cover + logSys.error("Error during seek to start time in \"%s\"", filename) + raise + logSys.exception(e) + return False if has_content: while not self.idle: