diff --git a/config/jail.conf b/config/jail.conf index c331e914..fb5328c8 100644 --- a/config/jail.conf +++ b/config/jail.conf @@ -32,6 +32,9 @@ findtime = 600 # "maxretry" is the number of failures before a host get banned. maxretry = 3 +# "maxlines" is number of log lines to buffer for multi-line regex searches +maxlines = 1 + # "backend" specifies the backend used to get files modification. # Available options are "pyinotify", "gamin", "polling" and "auto". # This option can be overridden in each jail as well. diff --git a/fail2ban/server/filter.py b/fail2ban/server/filter.py index fe990578..f028b44d 100644 --- a/fail2ban/server/filter.py +++ b/fail2ban/server/filter.py @@ -218,8 +218,10 @@ class Filter(JailThread): # @param value the line buffer size def setMaxLines(self, value): - self.__lineBufferSize = max(1, value) - logSys.info("Set maxLines = %i" % self.__lineBufferSize) + if int(value) <= 0: + raise ValueError("maxlines must be integer greater than zero") + self.__lineBufferSize = int(value) + logSys.info("Set maxlines = %i" % self.__lineBufferSize) ## # Get the maximum line buffer size. diff --git a/fail2ban/tests/servertestcase.py b/fail2ban/tests/servertestcase.py index 4a3435b4..bc08c061 100644 --- a/fail2ban/tests/servertestcase.py +++ b/fail2ban/tests/servertestcase.py @@ -271,6 +271,12 @@ class Transmitter(TransmitterBase): self.setGetTest("maxretry", "-2", -2, jail=self.jailName) self.setGetTestNOK("maxretry", "Duck", jail=self.jailName) + def testJailMaxLines(self): + self.setGetTest("maxlines", "5", 5, jail=self.jailName) + self.setGetTest("maxlines", "2", 2, jail=self.jailName) + self.setGetTestNOK("maxlines", "-2", jail=self.jailName) + self.setGetTestNOK("maxlines", "Duck", jail=self.jailName) + def testJailLogPath(self): self.jailAddDelTest( "logpath",