SSH client version is now handled by db logging

git-svn-id: https://kippo.googlecode.com/svn/trunk@157 951d7100-d841-11de-b865-b3884708a8e2
This commit is contained in:
desaster
2010-07-06 10:00:59 +00:00
parent ffa21b06c0
commit 2452002524
4 changed files with 39 additions and 5 deletions

View File

@@ -1,4 +1,4 @@
CREATE TABLE IF NOT EXISTS `auth` (
CREATE TABLE `auth` (
`id` int(11) NOT NULL auto_increment,
`session` int(11) NOT NULL,
`success` tinyint(1) NOT NULL,
@@ -8,7 +8,13 @@ CREATE TABLE IF NOT EXISTS `auth` (
PRIMARY KEY (`id`)
) ;
CREATE TABLE IF NOT EXISTS `input` (
CREATE TABLE `clients` (
`id` int(4) NOT NULL auto_increment,
`version` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ;
CREATE TABLE `input` (
`id` int(11) NOT NULL auto_increment,
`session` int(11) NOT NULL,
`timestamp` datetime NOT NULL,
@@ -19,13 +25,13 @@ CREATE TABLE IF NOT EXISTS `input` (
KEY `session` (`session`,`timestamp`,`realm`)
) ;
CREATE TABLE IF NOT EXISTS `sensors` (
CREATE TABLE `sensors` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(15) NOT NULL,
PRIMARY KEY (`id`)
) ;
CREATE TABLE IF NOT EXISTS `sessions` (
CREATE TABLE `sessions` (
`id` int(11) NOT NULL auto_increment,
`starttime` datetime NOT NULL,
`endtime` datetime default NULL,
@@ -33,11 +39,12 @@ CREATE TABLE IF NOT EXISTS `sessions` (
`ip` varchar(15) NOT NULL default '',
`termsize` varchar(7) default NULL,
`termtitle` varchar(255) default NULL,
`client` int(4) default NULL,
PRIMARY KEY (`id`),
KEY `starttime` (`starttime`,`sensor`)
) ;
CREATE TABLE IF NOT EXISTS `ttylog` (
CREATE TABLE `ttylog` (
`id` int(11) NOT NULL auto_increment,
`session` int(11) NOT NULL,
`ttylog` mediumblob NOT NULL,

6
doc/sql/update4.sql Normal file
View File

@@ -0,0 +1,6 @@
ALTER TABLE `sessions` ADD `client` INT( 4 ) NULL DEFAULT NULL ;
CREATE TABLE `clients` (
`id` INT( 4 ) NOT NULL AUTO_INCREMENT ,
`version` VARCHAR( 50 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ;

View File

@@ -31,6 +31,8 @@ class DBLogger(object):
self.handleTerminalSize),
('^Terminal title: (?P<title>.*)$',
self.handleTerminalTitle),
('^Remote SSH version: (?P<version>.*)$',
self.handleClientVersion),
)]
self.start(cfg)
@@ -125,4 +127,8 @@ class DBLogger(object):
def handleTerminalTitle(self, session, args):
pass
# args has: version
def handleClientVersion(self, session, args):
pass
# vim: set sw=4 et:

View File

@@ -39,6 +39,16 @@ class DBLogger(dblog.DBLogger):
'INSERT INTO `sensors` (`ip`) VALUES (%s)', (ip,))
return cursor.lastrowid
def getVersionID(self, version):
cursor = self.query(
'SELECT `id` FROM `clients` WHERE `version` = %s', (version,))
if cursor.rowcount:
return cursor.fetchone()[0]
cursor = self.query(
'INSERT INTO `clients` (`version`) VALUES (%s)', (version,))
return cursor.lastrowid
def handleConnectionLost(self, session, args):
ttylog = self.ttylog(session)
if ttylog:
@@ -89,4 +99,9 @@ class DBLogger(dblog.DBLogger):
' WHERE `id` = %s',
(args['title'], session))
def handleClientVersion(self, session, args):
cursor = self.query(
'UPDATE `sessions` SET `client` = %s WHERE `id` = %s',
(self.getVersionID(args['version']), session))
# vim: set sw=4 et: