diff --git a/plugins/dbms/firebird/enumeration.py b/plugins/dbms/firebird/enumeration.py index 1f7fc8cab..0d49a9028 100644 --- a/plugins/dbms/firebird/enumeration.py +++ b/plugins/dbms/firebird/enumeration.py @@ -30,22 +30,12 @@ class Enumeration(GenericEnumeration): return [] - def searchTable(self): - warnMsg = "on Firebird searching of tables is not implemented" - logger.warn(warnMsg) - - return [] - def searchColumn(self): warnMsg = "on Firebird searching of columns is not implemented" logger.warn(warnMsg) return [] - def search(self): - warnMsg = "on Firebird search option is not available" - logger.warn(warnMsg) - def getHostname(self): warnMsg = "on Firebird it is not possible to enumerate the hostname" logger.warn(warnMsg) diff --git a/plugins/generic/search.py b/plugins/generic/search.py index e4d6a89e6..69364d8f2 100644 --- a/plugins/generic/search.py +++ b/plugins/generic/search.py @@ -194,13 +194,14 @@ class Search: query += whereDbsQuery values = inject.getValue(query, blind=False, time=False) - if Backend.isDbms(DBMS.SQLITE): + if Backend.getIdentifiedDbms() in (DBMS.SQLITE, DBMS.FIREBIRD): newValues = [] if isinstance(values, basestring): values = [values] for value in values: - newValues.append(["SQLite%s" % METADB_SUFFIX, value]) + dbName = "SQLite" if Backend.isDbms(DBMS.SQLITE) else "Firebird" + newValues.append(["%s%s" % (dbName, METADB_SUFFIX), value]) values = newValues @@ -216,7 +217,7 @@ class Search: else: foundTbls[foundDb] = [foundTbl] else: - if not Backend.isDbms(DBMS.SQLITE): + if Backend.getIdentifiedDbms() not in (DBMS.SQLITE, DBMS.FIREBIRD): infoMsg = "fetching number of databases with table" if tblConsider == "1": infoMsg += "s like" @@ -259,7 +260,8 @@ class Search: if tblConsider == "2": continue else: - foundTbls["SQLite%s" % METADB_SUFFIX] = [] + dbName = "SQLite" if Backend.isDbms(DBMS.SQLITE) else "Firebird" + foundTbls["%s%s" % (dbName, METADB_SUFFIX)] = [] for db in foundTbls.keys(): db = safeSQLIdentificatorNaming(db) @@ -271,7 +273,7 @@ class Search: logger.info(infoMsg) query = rootQuery.blind.count2 - if not Backend.isDbms(DBMS.SQLITE): + if Backend.getIdentifiedDbms() not in (DBMS.SQLITE, DBMS.FIREBIRD): query = query % unsafeSQLIdentificatorNaming(db) query += " AND %s" % tblQuery count = inject.getValue(query, union=False, error=False, expected=EXPECTED.INT, charsetType=CHARSET_TYPE.DIGITS) @@ -290,10 +292,17 @@ class Search: for index in indexRange: query = rootQuery.blind.query2 - if not Backend.isDbms(DBMS.SQLITE): + + if Backend.isDbms(DBMS.FIREBIRD): + query = query % index + + if Backend.getIdentifiedDbms() not in (DBMS.SQLITE, DBMS.FIREBIRD): query = query % unsafeSQLIdentificatorNaming(db) + query += " AND %s" % tblQuery - query = agent.limitQuery(index, query) + + if not Backend.isDbms(DBMS.FIREBIRD): + query = agent.limitQuery(index, query) foundTbl = unArrayizeValue(inject.getValue(query, union=False, error=False)) kb.hintValue = foundTbl diff --git a/xml/queries.xml b/xml/queries.xml index 63c5983dd..83fdc416f 100644 --- a/xml/queries.xml +++ b/xml/queries.xml @@ -431,17 +431,19 @@ - + + + + + - -