mirror of
https://github.com/aljazceru/cowrie.git
synced 2025-12-17 22:14:19 +01:00
Logging improvements:
* redo the logger in a way that allows the host ip from the connection to be saved to the db * ignore mysql errors (such as connectivity problems) git-svn-id: https://kippo.googlecode.com/svn/trunk@123 951d7100-d841-11de-b865-b3884708a8e2
This commit is contained in:
@@ -10,20 +10,32 @@ class DBLogger(dblog.DBLogger):
|
||||
passwd = cfg.get('database', 'password'),
|
||||
reconnect = True)
|
||||
|
||||
def createSession(self, ip):
|
||||
def query(self, sql, params = None):
|
||||
cursor = self.db.cursor()
|
||||
try:
|
||||
if params is None:
|
||||
cursor.execute(sql)
|
||||
else:
|
||||
cursor.execute(sql, params)
|
||||
return cursor
|
||||
except MySQLdb.MySQLError:
|
||||
return None
|
||||
|
||||
def createSession(self, peerIP, peerPort, hostIP, hostPort):
|
||||
sql = 'INSERT INTO `session` (`starttime`, `sensor`, `ip`)' + \
|
||||
' VALUES (FROM_UNIXTIME(%s), %s, %s)'
|
||||
params = (self.nowUnix(), self.sensor, ip)
|
||||
cursor = self.db.cursor()
|
||||
cursor.execute(sql, params)
|
||||
return int(cursor.lastrowid)
|
||||
params = (self.nowUnix(), self.getSensor() or hostIP, peerIP)
|
||||
cursor = self.query(sql, params)
|
||||
if cursor is not None:
|
||||
return int(cursor.lastrowid)
|
||||
else:
|
||||
return None
|
||||
|
||||
def handleConnectionLost(self, session, args):
|
||||
sql = 'UPDATE `session` SET `endtime` = FROM_UNIXTIME(%s)' + \
|
||||
', `ttylog` = %s WHERE `id` = %s'
|
||||
params = (self.nowUnix(), self.ttylog(session), session)
|
||||
cursor = self.db.cursor()
|
||||
cursor.execute(sql, params)
|
||||
self.query(sql, params)
|
||||
|
||||
def handleLoginFailed(self, session, args):
|
||||
sql = 'INSERT INTO `auth` (`session`, `success`' + \
|
||||
@@ -31,8 +43,7 @@ class DBLogger(dblog.DBLogger):
|
||||
' VALUES (%s, %s, %s, %s, FROM_UNIXTIME(%s))'
|
||||
params = (session, 0, args['username'], args['password'],
|
||||
self.nowUnix())
|
||||
cursor = self.db.cursor()
|
||||
cursor.execute(sql, params)
|
||||
self.query(sql, params)
|
||||
|
||||
def handleLoginSucceeded(self, session, args):
|
||||
sql = 'INSERT INTO `auth` (`session`, `success`' + \
|
||||
@@ -40,31 +51,27 @@ class DBLogger(dblog.DBLogger):
|
||||
' VALUES (%s, %s, %s, %s, FROM_UNIXTIME(%s))'
|
||||
params = (session, 1, args['username'], args['password'],
|
||||
self.nowUnix())
|
||||
cursor = self.db.cursor()
|
||||
cursor.execute(sql, params)
|
||||
self.query(sql, params)
|
||||
|
||||
def handleCommand(self, session, args):
|
||||
sql = 'INSERT INTO `input`' + \
|
||||
' (`session`, `timestamp`, `success`, `input`)' + \
|
||||
' VALUES (%s, FROM_UNIXTIME(%s), %s, %s)'
|
||||
params = (session, self.nowUnix(), 1, args['input'])
|
||||
cursor = self.db.cursor()
|
||||
cursor.execute(sql, params)
|
||||
self.query(sql, params)
|
||||
|
||||
def handleUnknownCommand(self, session, args):
|
||||
sql = 'INSERT INTO `input`' + \
|
||||
' (`session`, `timestamp`, `success`, `input`)' + \
|
||||
' VALUES (%s, FROM_UNIXTIME(%s), %s, %s)'
|
||||
params = (session, self.nowUnix(), 0, args['input'])
|
||||
cursor = self.db.cursor()
|
||||
cursor.execute(sql, params)
|
||||
self.query(sql, params)
|
||||
|
||||
def handleInput(self, session, args):
|
||||
sql = 'INSERT INTO `input`' + \
|
||||
' (`session`, `timestamp`, `realm`, `input`)' + \
|
||||
' VALUES (%s, FROM_UNIXTIME(%s), %s, %s)'
|
||||
params = (session, self.nowUnix(), args['realm'], args['input'])
|
||||
cursor = self.db.cursor()
|
||||
cursor.execute(sql, params)
|
||||
self.query(sql, params)
|
||||
|
||||
# vim: set sw=4 et:
|
||||
|
||||
Reference in New Issue
Block a user