From 0b0ea41f8773bf15e5a3eb9bb37778ee66255149 Mon Sep 17 00:00:00 2001 From: sebres Date: Fri, 24 Oct 2014 04:59:44 +0200 Subject: [PATCH] fix: fail2ban-regex with filter file failed (after merging #824, because test case missing); test case for 'readexplicit' added; --- fail2ban/client/configreader.py | 4 +++- fail2ban/tests/clientreadertestcase.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/fail2ban/client/configreader.py b/fail2ban/client/configreader.py index 82bf0fdc..d9bfb271 100644 --- a/fail2ban/client/configreader.py +++ b/fail2ban/client/configreader.py @@ -267,7 +267,9 @@ class DefinitionInitConfigReader(ConfigReader): # needed for fail2ban-regex that doesn't need fancy directories def readexplicit(self): - return SafeConfigParserWithIncludes.read(self, self._file) + if not self._cfg: + self.touch(self._file) + return SafeConfigParserWithIncludes.read(self._cfg, self._file) def getOptions(self, pOpts): self._opts = ConfigReader.getOptions( diff --git a/fail2ban/tests/clientreadertestcase.py b/fail2ban/tests/clientreadertestcase.py index e4dc2189..fde9a915 100644 --- a/fail2ban/tests/clientreadertestcase.py +++ b/fail2ban/tests/clientreadertestcase.py @@ -334,6 +334,22 @@ class FilterReaderTest(unittest.TestCase): filterReader.getOptions(None) self.assertRaises(ValueError, FilterReader.convert, filterReader) + def testFilterReaderExplicit(self): + # read explicit uses absolute path: + path_ = os.path.abspath(os.path.join(TEST_FILES_DIR, "filter.d")) + filterReader = FilterReader(os.path.join(path_, "testcase01.conf"), "testcase01", {}) + self.assertEqual(filterReader.readexplicit(), + [os.path.join(path_, "testcase-common.conf"), os.path.join(path_, "testcase01.conf")] + ) + try: + filterReader.getOptions(None) + # from included common + filterReader.get('Definition', '__prefix_line') + # from testcase01 + filterReader.get('Definition', 'failregex') + filterReader.get('Definition', 'ignoreregex') + except Exception, e: + self.fail('unexpected options after readexplicit: %s' % (e)) class JailsReaderTestCache(LogCaptureTestCase):