From df33322f9fb3fdf8d2fc42f635ad64f65a70f458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Su=C5=A1nik?= Date: Tue, 8 May 2018 14:07:57 +0200 Subject: [PATCH 1/3] Added test to prove bug when specifying journal flags to systemd backend --- fail2ban/tests/servertestcase.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/fail2ban/tests/servertestcase.py b/fail2ban/tests/servertestcase.py index 59dfef50..295b2d31 100644 --- a/fail2ban/tests/servertestcase.py +++ b/fail2ban/tests/servertestcase.py @@ -803,6 +803,28 @@ class Transmitter(TransmitterBase): result = self.transm.proceed( ["set", jailName, "deljournalmatch", value]) self.assertTrue(isinstance(result[1], ValueError)) + + def testJournalFlagsMatch(self): + if not filtersystemd: # pragma: no cover + raise unittest.SkipTest("systemd python interface not available") + self.assertTrue(True) + jailName = "TestJail3" + self.server.addJail(jailName, "systemd[journalflags=2]") + values = [ + "_SYSTEMD_UNIT=sshd.service", + "TEST_FIELD1=ABC", + "_HOSTNAME=example.com", + ] + for n, value in enumerate(values): + self.assertEqual( + self.transm.proceed( + ["set", jailName, "addjournalmatch", value]), + (0, [[val] for val in values[:n+1]])) + for n, value in enumerate(values): + self.assertEqual( + self.transm.proceed( + ["set", jailName, "deljournalmatch", value]), + (0, [[val] for val in values[n+1:]])) class TransmitterLogging(TransmitterBase): From 54a04b3a6af62ce93ff6bfe62bf55d3faf431135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Su=C5=A1nik?= Date: Tue, 8 May 2018 14:08:14 +0200 Subject: [PATCH 2/3] Fixed data type of journal flags from str to int --- fail2ban/server/filtersystemd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fail2ban/server/filtersystemd.py b/fail2ban/server/filtersystemd.py index f83e7264..f87fdb4e 100644 --- a/fail2ban/server/filtersystemd.py +++ b/fail2ban/server/filtersystemd.py @@ -87,7 +87,7 @@ class FilterSystemd(JournalFilter): # pragma: systemd no cover args['files'] = list(set(files)) try: - args['flags'] = kwargs.pop('journalflags') + args['flags'] = int(kwargs.pop('journalflags')) except KeyError: pass From 1e44b3f085cd7b4d8e372c308135fd3a107a6d0d Mon Sep 17 00:00:00 2001 From: sebres Date: Fri, 6 Jul 2018 17:42:28 +0200 Subject: [PATCH 3/3] systemd no cover (currently unsupported by travis) --- fail2ban/tests/servertestcase.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fail2ban/tests/servertestcase.py b/fail2ban/tests/servertestcase.py index 295b2d31..5d52fa09 100644 --- a/fail2ban/tests/servertestcase.py +++ b/fail2ban/tests/servertestcase.py @@ -733,7 +733,7 @@ class Transmitter(TransmitterBase): self.assertEqual( self.transm.proceed(["status", "INVALID", "COMMAND"])[0],1) - def testJournalMatch(self): + def testJournalMatch(self): # pragma: systemd no cover if not filtersystemd: # pragma: no cover raise unittest.SkipTest("systemd python interface not available") jailName = "TestJail2" @@ -804,7 +804,7 @@ class Transmitter(TransmitterBase): ["set", jailName, "deljournalmatch", value]) self.assertTrue(isinstance(result[1], ValueError)) - def testJournalFlagsMatch(self): + def testJournalFlagsMatch(self): # pragma: systemd no cover if not filtersystemd: # pragma: no cover raise unittest.SkipTest("systemd python interface not available") self.assertTrue(True)