From 7a204e480e2a20d863409f70f8ea3d3be9790c61 Mon Sep 17 00:00:00 2001 From: Michel Oosterhof Date: Thu, 19 Nov 2015 12:15:11 +0000 Subject: [PATCH] don't crash cowrie when dblog/output plugins don't load --- cowrie/core/ssh.py | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/cowrie/core/ssh.py b/cowrie/core/ssh.py index 2cbd842..da12636 100644 --- a/cowrie/core/ssh.py +++ b/cowrie/core/ssh.py @@ -194,12 +194,16 @@ class HoneyPotSSHFactory(factory.SSHFactory): if not x.startswith('database_'): continue engine = x.split('_')[1] - log.msg('Loading dblog engine: %s' % (engine,)) - dblogger = __import__( - 'cowrie.dblog.%s' % (engine,), - globals(), locals(), ['dblog']).DBLogger(self.cfg) - log.addObserver(dblogger.emit) - self.dbloggers.append(dblogger) + try: + dblogger = __import__( + 'cowrie.dblog.%s' % (engine,), + globals(), locals(), ['dblog']).DBLogger(self.cfg) + log.addObserver(dblogger.emit) + self.dbloggers.append(dblogger) + log.msg("Loaded dblog engine: %s" % (engine,)) + except: + log.err() + log.msg("Failed to load dblog engine: %s" % (engine,)) # load output modules self.output_plugins = [] @@ -207,12 +211,16 @@ class HoneyPotSSHFactory(factory.SSHFactory): if not x.startswith('output_'): continue engine = x.split('_')[1] - log.msg('Loading output engine: %s' % (engine,)) - output = __import__( - 'cowrie.output.%s' % (engine,) - ,globals(), locals(), ['output']).Output(self.cfg) - log.addObserver(output.emit) - self.output_plugins.append(output) + try: + output = __import__( + 'cowrie.output.%s' % (engine,) + ,globals(), locals(), ['output']).Output(self.cfg) + log.addObserver(output.emit) + self.output_plugins.append(output) + log.msg('Loaded output plugin: %s' % (engine,)) + except: + log.err() + log.msg('Failed to load output plugin: %s' % (engine,)) factory.SSHFactory.startFactory(self)