From 8a0ac30bd9145f1d8747e9ddce2485bd28cb51b8 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Mon, 22 Apr 2013 16:59:00 -0400 Subject: [PATCH] ENH: Throw exception if requested Jail is actually not defined at all --- fail2ban/client/jailreader.py | 8 +++++++- fail2ban/tests/clientreadertestcase.py | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fail2ban/client/jailreader.py b/fail2ban/client/jailreader.py index 13432dc5..9943b697 100644 --- a/fail2ban/client/jailreader.py +++ b/fail2ban/client/jailreader.py @@ -54,7 +54,13 @@ class JailReader(ConfigReader): return self.__name def read(self): - return ConfigReader.read(self, "jail") + out = ConfigReader.read(self, "jail") + # Before returning -- verify that requested section + # exists at all + if not (self.__name in self.sections()): + raise ValueError("Jail %r was not found among available" + % self.__name) + return out def isEnabled(self): return self.__force_enable or self.__opts["enabled"] diff --git a/fail2ban/tests/clientreadertestcase.py b/fail2ban/tests/clientreadertestcase.py index 5e79dc04..e55420d8 100644 --- a/fail2ban/tests/clientreadertestcase.py +++ b/fail2ban/tests/clientreadertestcase.py @@ -107,6 +107,10 @@ option = %s class JailReaderTest(unittest.TestCase): + def testIncorrectJail(self): + jail = JailReader('XXXABSENTXXX', basedir=CONFIG_DIR) + self.assertRaises(ValueError, jail.read) + def testStockSSHJail(self): jail = JailReader('ssh-iptables', basedir=CONFIG_DIR) # we are running tests from root project dir atm self.assertTrue(jail.read())