diff --git a/client/configurator.py b/client/configurator.py index 0baff2d8..2097fd54 100644 --- a/client/configurator.py +++ b/client/configurator.py @@ -43,15 +43,19 @@ class Configurator: self.__fail2ban = Fail2banReader() self.__jails = JailsReader() - #@staticmethod - def setBaseDir(folderName): - ConfigReader.setBaseDir(folderName) - setBaseDir = staticmethod(setBaseDir) + def setBaseDir(self, folderName): + self.__fail2ban.setBaseDir(folderName) + self.__jails.setBaseDir(folderName) - #@staticmethod - def getBaseDir(): - return ConfigReader.getBaseDir() - getBaseDir = staticmethod(getBaseDir) + def getBaseDir(self): + fail2ban_basedir = self.__fail2ban.getBaseDir() + jails_basedir = self.__jails.getBaseDir() + if fail2ban_basedir != jails_basedir: + logSys.error("fail2ban.conf and jails.conf readers have differing " + "basedirs: %r and %r. " + "Returning the one for fail2ban.conf" + % (fail2ban_basedir, jails_basedir)) + return fail2ban_basedir def readEarly(self): self.__fail2ban.read() diff --git a/testcases/clientreadertestcase.py b/testcases/clientreadertestcase.py index 28eb6b09..3e606785 100644 --- a/testcases/clientreadertestcase.py +++ b/testcases/clientreadertestcase.py @@ -25,6 +25,7 @@ import os, shutil, tempfile, unittest from client.configreader import ConfigReader from client.jailreader import JailReader from client.jailsreader import JailsReader +from client.configurator import Configurator class ConfigReaderTest(unittest.TestCase): @@ -146,3 +147,21 @@ class JailsReaderTest(unittest.TestCase): self.assertEqual(comm_commands[-1][0], 'start') # TODO: make sure that all of the jails have actions assigned, # otherwise it makes little to no sense + + def testConfigurator(self): + configurator = Configurator() + configurator.setBaseDir('config') + self.assertEqual(configurator.getBaseDir(), 'config') + + configurator.readEarly() + opts = configurator.getEarlyOptions() + # our current default settings + self.assertEqual(opts['socket'], '/var/run/fail2ban/fail2ban.sock') + self.assertEqual(opts['pidfile'], '/var/run/fail2ban/fail2ban.pid') + + # and if we force change configurator's fail2ban's baseDir + # there should be an error message (test visually ;) -- + # otherwise just a code smoke test) + configurator._Configurator__jails.setBaseDir('/tmp') + self.assertEqual(configurator._Configurator__jails.getBaseDir(), '/tmp') + self.assertEqual(configurator.getBaseDir(), 'config')