mirror of https://github.com/fail2ban/fail2ban
start observer together with the server (parametrized to prevent constantly start/stop of observer by addJail in test cases)
parent
9d4f163e88
commit
b3d4ce291e
|
@ -52,7 +52,7 @@ except ImportError: # pragma: no cover
|
||||||
|
|
||||||
class Server:
|
class Server:
|
||||||
|
|
||||||
def __init__(self, daemon = False):
|
def __init__(self, daemon=False):
|
||||||
self.__loggingLock = Lock()
|
self.__loggingLock = Lock()
|
||||||
self.__lock = RLock()
|
self.__lock = RLock()
|
||||||
self.__jails = Jails()
|
self.__jails = Jails()
|
||||||
|
@ -81,7 +81,7 @@ class Server:
|
||||||
logSys.debug("Caught signal %d. Flushing logs" % signum)
|
logSys.debug("Caught signal %d. Flushing logs" % signum)
|
||||||
self.flushLogs()
|
self.flushLogs()
|
||||||
|
|
||||||
def start(self, sock, pidfile, force = False):
|
def start(self, sock, pidfile, force=False, observer=True):
|
||||||
logSys.info("Starting Fail2ban v%s", version.version)
|
logSys.info("Starting Fail2ban v%s", version.version)
|
||||||
|
|
||||||
# Install signal handlers
|
# Install signal handlers
|
||||||
|
@ -112,6 +112,12 @@ class Server:
|
||||||
except IOError, e:
|
except IOError, e:
|
||||||
logSys.error("Unable to create PID file: %s" % e)
|
logSys.error("Unable to create PID file: %s" % e)
|
||||||
|
|
||||||
|
# Create observers and start it:
|
||||||
|
if observer:
|
||||||
|
if Observers.Main is None:
|
||||||
|
Observers.Main = ObserverThread()
|
||||||
|
Observers.Main.start()
|
||||||
|
|
||||||
# Start the communication
|
# Start the communication
|
||||||
logSys.debug("Starting communication")
|
logSys.debug("Starting communication")
|
||||||
try:
|
try:
|
||||||
|
@ -150,15 +156,10 @@ class Server:
|
||||||
self.__loggingLock.release()
|
self.__loggingLock.release()
|
||||||
|
|
||||||
def addJail(self, name, backend):
|
def addJail(self, name, backend):
|
||||||
# Create an observer if not yet created and start it:
|
|
||||||
if Observers.Main is None:
|
|
||||||
Observers.Main = ObserverThread()
|
|
||||||
Observers.Main.start()
|
|
||||||
# Add jail hereafter:
|
# Add jail hereafter:
|
||||||
self.__jails.add(name, backend, self.__db)
|
self.__jails.add(name, backend, self.__db)
|
||||||
if self.__db is not None:
|
if self.__db is not None:
|
||||||
self.__db.addJail(self.__jails[name])
|
self.__db.addJail(self.__jails[name])
|
||||||
Observers.Main.db_set(self.__db)
|
|
||||||
|
|
||||||
def delJail(self, name):
|
def delJail(self, name):
|
||||||
if self.__db is not None:
|
if self.__db is not None:
|
||||||
|
@ -541,6 +542,8 @@ class Server:
|
||||||
logSys.error(
|
logSys.error(
|
||||||
"Unable to import fail2ban database module as sqlite "
|
"Unable to import fail2ban database module as sqlite "
|
||||||
"is not available.")
|
"is not available.")
|
||||||
|
if Observers.Main is not None:
|
||||||
|
Observers.Main.db_set(self.__db)
|
||||||
|
|
||||||
def getDatabase(self):
|
def getDatabase(self):
|
||||||
return self.__db
|
return self.__db
|
||||||
|
|
|
@ -71,7 +71,7 @@ class TransmitterBase(unittest.TestCase):
|
||||||
'fail2ban.pid', 'transmitter')
|
'fail2ban.pid', 'transmitter')
|
||||||
os.close(pidfile_fd)
|
os.close(pidfile_fd)
|
||||||
self.tmp_files.append(pidfile_name)
|
self.tmp_files.append(pidfile_name)
|
||||||
self.server.start(sock_name, pidfile_name, force=False)
|
self.server.start(sock_name, pidfile_name, **self.server_start_args)
|
||||||
self.jailName = "TestJail1"
|
self.jailName = "TestJail1"
|
||||||
self.server.addJail(self.jailName, FAST_BACKEND)
|
self.server.addJail(self.jailName, FAST_BACKEND)
|
||||||
|
|
||||||
|
@ -160,6 +160,7 @@ class Transmitter(TransmitterBase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.server = TestServer()
|
self.server = TestServer()
|
||||||
|
self.server_start_args = {'force':False, 'observer':False}
|
||||||
super(Transmitter, self).setUp()
|
super(Transmitter, self).setUp()
|
||||||
|
|
||||||
def testStopServer(self):
|
def testStopServer(self):
|
||||||
|
@ -795,6 +796,7 @@ class TransmitterLogging(TransmitterBase):
|
||||||
self.server.setLogTarget("/dev/null")
|
self.server.setLogTarget("/dev/null")
|
||||||
self.server.setLogLevel("CRITICAL")
|
self.server.setLogLevel("CRITICAL")
|
||||||
self.server.setSyslogSocket("auto")
|
self.server.setSyslogSocket("auto")
|
||||||
|
self.server_start_args = {'force':False, 'observer':False}
|
||||||
super(TransmitterLogging, self).setUp()
|
super(TransmitterLogging, self).setUp()
|
||||||
|
|
||||||
def testLogTarget(self):
|
def testLogTarget(self):
|
||||||
|
@ -912,6 +914,18 @@ class TransmitterLogging(TransmitterBase):
|
||||||
self.setGetTest("bantime.multipliers", "1 5 30 60 300 720 1440 2880", "1 5 30 60 300 720 1440 2880", jail=self.jailName)
|
self.setGetTest("bantime.multipliers", "1 5 30 60 300 720 1440 2880", "1 5 30 60 300 720 1440 2880", jail=self.jailName)
|
||||||
self.setGetTest("bantime.overalljails", "true", "true", jail=self.jailName)
|
self.setGetTest("bantime.overalljails", "true", "true", jail=self.jailName)
|
||||||
|
|
||||||
|
|
||||||
|
class TransmitterWithObserver(TransmitterBase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.server = TestServer()
|
||||||
|
self.server_start_args = {'force':False, 'observer':True}
|
||||||
|
super(TransmitterWithObserver, self).setUp()
|
||||||
|
|
||||||
|
def testObserver(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class JailTests(unittest.TestCase):
|
class JailTests(unittest.TestCase):
|
||||||
|
|
||||||
def testLongName(self):
|
def testLongName(self):
|
||||||
|
|
|
@ -167,8 +167,8 @@ def gatherTests(regexps=None, opts=None):
|
||||||
tests = FilteredTestSuite()
|
tests = FilteredTestSuite()
|
||||||
|
|
||||||
# Server
|
# Server
|
||||||
#tests.addTest(unittest.makeSuite(servertestcase.StartStop))
|
|
||||||
tests.addTest(unittest.makeSuite(servertestcase.Transmitter))
|
tests.addTest(unittest.makeSuite(servertestcase.Transmitter))
|
||||||
|
tests.addTest(unittest.makeSuite(servertestcase.TransmitterWithObserver))
|
||||||
tests.addTest(unittest.makeSuite(servertestcase.JailTests))
|
tests.addTest(unittest.makeSuite(servertestcase.JailTests))
|
||||||
tests.addTest(unittest.makeSuite(servertestcase.RegexTests))
|
tests.addTest(unittest.makeSuite(servertestcase.RegexTests))
|
||||||
tests.addTest(unittest.makeSuite(servertestcase.LoggingTests))
|
tests.addTest(unittest.makeSuite(servertestcase.LoggingTests))
|
||||||
|
|
Loading…
Reference in New Issue