From f04449be038fc8d45ac6bf7576aca3465653a6e5 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Mon, 29 Mar 2010 23:48:21 +0000 Subject: [PATCH] update --- plugins/dbms/firebird/connector.py | 56 ++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/plugins/dbms/firebird/connector.py b/plugins/dbms/firebird/connector.py index e33d9226d..59b877c88 100644 --- a/plugins/dbms/firebird/connector.py +++ b/plugins/dbms/firebird/connector.py @@ -22,14 +22,64 @@ with sqlmap; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ +try: + import kinterbasdb +except ImportError, _: + pass + +from lib.core.data import conf +from lib.core.data import logger +from lib.core.exception import sqlmapConnectionException + from plugins.generic.connector import Connector as GenericConnector class Connector(GenericConnector): """ - Homepage: - User guide: - API: + Homepage: http://kinterbasdb.sourceforge.net/ + User guide: http://kinterbasdb.sourceforge.net/dist_docs/usage.html + License: BSD """ def __init__(self): GenericConnector.__init__(self) + + def connect(self): + self.initConnection() + + try: + self.connector = kinterbasdb.connect(database=self.db, user=self.user, password=self.password, timeout={'period': conf.timeout}) + except kinterbasdb.OperationalError, msg: + raise sqlmapConnectionException, msg[1] + + self.setCursor() + self.connected() + + def fetchall(self): + try: + return self.cursor.fetchall() + except kinterbasdb.OperationalError, msg: + logger.log(8, msg[1]) + return None + + def execute(self, query): + logger.debug(query) + + try: + self.cursor.execute(query) + except kinterbasdb.OperationalError, msg: + logger.log(8, msg[1]) + except kinterbasdb.Error, msg: + raise sqlmapConnectionException, msg[1] + + self.connector.commit() + + def select(self, query): + self.execute(query) + return self.fetchall() + + def setCursor(self): + self.cursor = self.connector.cursor() + + def close(self): + self.cursor.close() + self.connector.close()