Commit 056b19a6 authored by PidgeyL's avatar PidgeyL
Browse files

Let Database read config file

parent ca25e397
Loading
Loading
Loading
Loading
+21 −6
Original line number Diff line number Diff line
@@ -36,6 +36,9 @@ class Configuration():
               'mongoHost': 'localhost', 'mongoPort': 27017,
               'mongoDB': "cvedb",
               'mongoUsername': '', 'mongoPassword': '',
               'dbHost': 'localhost', 'dbPort': 27017,
               'dbName': "cvedb",
               'dbUsername': '', 'dbPassword': '',
               'flaskHost': "127.0.0.1", 'flaskPort': 5000,
               'flaskDebug': True,       'pageLength': 50,
               'loginRequired': False,   'listLogin': True,
@@ -75,16 +78,28 @@ class Configuration():
            pass
        return result

    # Mongo
    # DataBase
    @classmethod
    def getMongoDB(cls):
        return cls.readSetting("Mongo", "DB", cls.default['mongoDB'])
    def getDatabaseName(cls):
        return cls.readSetting("Database", "Name", cls.default['dbName'])

    @classmethod
    def getDatabaseServer(cls):
        host = cls.readSetting("Database", "Host", cls.default['dbHost'])
        port = cls.readSetting("Database", "Port", cls.default['dbPort'])
        return (host, port)

    @classmethod
    def getDatabaseAuth(cls):
        user = cls.readSetting("Database", "Username", cls.default['dbUsername'])
        pwd  = cls.readSetting("Database", "Password", cls.default['dbPassword'])
        return (user, pwd)

    @classmethod
    def getMongoConnection(cls):
        mongoHost = cls.readSetting("Mongo", "Host", cls.default['mongoHost'])
        mongoPort = cls.readSetting("Mongo", "Port", cls.default['mongoPort'])
        mongoDB = cls.getMongoDB()
        mongoDB = cls.getDatabaseName()
        mongoUsername = cls.readSetting("Mongo", "Username", cls.default['mongoUsername'])
        mongoPassword = cls.readSetting("Mongo", "Password", cls.default['mongoPassword'])

+15 −4
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@
import pymongo
import sys

from lib.Config    import Configuration         as conf
from lib.Objects   import CVE, CPE, CWE, CAPEC
from lib.Singleton import Singleton

@@ -26,7 +27,6 @@ class Database(metaclass=Singleton):
    if user:     kwargs['user']=    user
    if password: kwargs['password']=password
    self.db = self.getConnection(**kwargs)
    #self.db = self.getConnection()

    self.colCVE=             self.db['cves']
    self.colCPE=             self.db['cpe']
@@ -45,8 +45,19 @@ class Database(metaclass=Singleton):
  ###############################
  # Database Specific Functions #
  ###############################
  def getConnection(self, host='127.0.0.1', port=27017, db='cvedb',
                    user=None, password=None):
  def getConnection(self, host=None, port=None, db=None, user=None,
                    password=None):
    # Default connection
    _host, _port     = conf.getDatabaseServer()
    _user, _password = conf.getDatabaseAuth()
    _db              = conf.getDatabaseName()
    # assign needed
    host     = host     or _host
    port     = port     or _port
    user     = user     or _user
    password = password or _password
    db       = db       or _db

    try:
      if user and password:
        mongoURI = "mongodb://{user}:{pwd}@{host}:{port}/{db}".format(
@@ -184,7 +195,7 @@ class Database(metaclass=Singleton):
    cve = self.sanitize(self.colCVE.find_one({"id": id}))
    return CVE.fromDict(cve) if cve else None

  def cvesForCPE(cpe):
  def cve_forCPE(self, cpe):
    if not cpe: return []
    return self.sanitize(self.colCVE.find({"vulnerable_configuration": {"$regex": cpe}}).sort("Modified", -1))