From a169ed93f8bede57c7bdbb2776339c2fed84d8de Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Tue, 14 May 2013 14:25:47 -0400 Subject: [PATCH] BF: allow newlines in action specifications (e.g. when multiple entries for logpath) This one should address a crash in #231 but not clear if that would be the right approach anyways since sendmail-whois-lines would not function properly anyways --- client/jailreader.py | 3 ++- testcases/clientreadertestcase.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/client/jailreader.py b/client/jailreader.py index f8757e26..29c499b8 100644 --- a/client/jailreader.py +++ b/client/jailreader.py @@ -35,7 +35,8 @@ logSys = logging.getLogger("fail2ban.client.config") class JailReader(ConfigReader): - actionCRE = re.compile("^((?:\w|-|_|\.)+)(?:\[(.*)\])?$") + actionCRE = re.compile("^((?:\w|-|_|\.)+)(?:\[(.*)\])?$", + flags=re.MULTILINE|re.DOTALL) def __init__(self, name, force_enable=False, **kwargs): ConfigReader.__init__(self, **kwargs) diff --git a/testcases/clientreadertestcase.py b/testcases/clientreadertestcase.py index faa8dcd6..8b0d0546 100644 --- a/testcases/clientreadertestcase.py +++ b/testcases/clientreadertestcase.py @@ -110,6 +110,12 @@ class JailReaderTest(unittest.TestCase): result = JailReader.splitAction(action) self.assertEquals(expected, result) + def testSplitActionMultiline(self): + action = "mail-whois-lines[logpath=/a/b\n/c/d]" + expected = ['mail-whois-lines', {'logpath': '/a/b\n/c/d'}] + result = JailReader.splitAction(action) + self.assertEquals(expected, result) + class JailsReaderTest(unittest.TestCase): def testProvidingBadBasedir(self):