diff --git a/fail2ban/server/filtergamin.py b/fail2ban/server/filtergamin.py index 6d80d403..c9e8e31c 100644 --- a/fail2ban/server/filtergamin.py +++ b/fail2ban/server/filtergamin.py @@ -76,7 +76,7 @@ class FilterGamin(FileFilter): TODO -- RF: this is a common logic and must be shared/provided by FileFilter """ - self.getFailures(path, MyTime.time() - self.getFindTime()) + self.getFailures(path) try: while True: ticket = self.failManager.toBan() diff --git a/fail2ban/server/filterpoll.py b/fail2ban/server/filterpoll.py index 90fd2b20..59e7c1e9 100644 --- a/fail2ban/server/filterpoll.py +++ b/fail2ban/server/filterpoll.py @@ -55,6 +55,7 @@ class FilterPoll(FileFilter): ## The time of the last modification of the file. self.__prevStats = dict() self.__file404Cnt = dict() + self.__initial = dict() logSys.debug("Created FilterPoll") ## @@ -83,7 +84,6 @@ class FilterPoll(FileFilter): # @return True when the thread exits nicely def run(self): - cntr = 0 while self.active: if logSys.getEffectiveLevel() <= 6: logSys.log(6, "Woke up idle=%s with %d files monitored", @@ -93,8 +93,11 @@ class FilterPoll(FileFilter): for container in self.getLogPath(): filename = container.getFileName() if self.isModified(filename): - self.getFailures(filename, (MyTime.time() - self.getFindTime()) if not cntr else None) - cntr += 1 + # set start time as now - find time for first usage only (prevent performance bug with polling of big files) + self.getFailures(filename, + (MyTime.time() - self.getFindTime()) if not self.__initial.get(filename) else None + ) + self.__initial[filename] = True self.__modified = True if self.__modified: diff --git a/fail2ban/server/filterpyinotify.py b/fail2ban/server/filterpyinotify.py index 0fa3b026..784a7e53 100644 --- a/fail2ban/server/filterpyinotify.py +++ b/fail2ban/server/filterpyinotify.py @@ -102,7 +102,7 @@ class FilterPyinotify(FileFilter): TODO -- RF: this is a common logic and must be shared/provided by FileFilter """ - self.getFailures(path, MyTime.time() - self.getFindTime()) + self.getFailures(path) try: while True: ticket = self.failManager.toBan()