Ejemplo n.º 1
0
  def __init__(self):
    # TODO: make auth handler and plugin manager singletons
    Advanced_API.__init__(self)
    Minimal.__init__(self)
    self.minimal = False
    self.auth_handler  = AuthenticationHandler()
    self.plugManager   = PluginManager()
    self.login_manager = LoginManager()
    self.plugManager.loadPlugins()
    self.login_manager.init_app(self.app)
    self.login_manager.user_loader(self.load_user)
    self.redisdb = Configuration.getRedisVendorConnection()

    self.defaultFilters.update({'blacklistSelect': 'on', 'whitelistSelect': 'on',
                                'unlistedSelect': 'show',})
    self.args.update({'minimal': False})
    self.pluginArgs = {"current_user":   current_user, "plugin_manager": self.plugManager}

    routes = [{'r': '/cve/<cveid>',                             'm': ['GET'],  'f': self.cve},
              {'r': '/_get_plugins',                            'm': ['GET'],  'f': self._get_plugins},
              {'r': '/plugin/_get_cve_actions',                 'm': ['GET'],  'f': self._get_cve_actions},
              {'r': '/plugin/<plugin>',                         'm': ['GET'],  'f': self.openPlugin},
              {'r': '/plugin/<plugin>/subpage/<page>',          'm': ['GET'],  'f': self.openPluginSubpage},
              {'r': '/plugin/<plugin>/_cve_action/<action>',    'm': ['GET'],  'f': self._jsonCVEAction},
              {'r': '/login',                                   'm': ['POST'], 'f': self.login_check},
              {'r': '/logout',                                  'm': ['POST'], 'f': self.logout},
              {'r': '/admin',                                   'm': ['GET'],  'f': self.admin},
              {'r': '/admin/',                                  'm': ['GET'],  'f': self.admin},
              {'r': '/admin/change_pass',                       'm': ['GET'],  'f': self.change_pass},
              {'r': '/admin/request_token',                     'm': ['GET'],  'f': self.request_token},
              {'r': '/admin/updatedb',                          'm': ['GET'],  'f': self.updatedb},
              {'r': '/admin/whitelist/import',                  'm': ['POST'], 'f': self.listImport},
              {'r': '/admin/blacklist/import',                  'm': ['POST'], 'f': self.listImport},
              {'r': '/admin/whitelist/export',                  'm': ['GET'],  'f': self.listExport},
              {'r': '/admin/blacklist/export',                  'm': ['GET'],  'f': self.listExport},
              {'r': '/admin/whitelist/drop',                    'm': ['POST'], 'f': self.listDrop},
              {'r': '/admin/blacklist/drop',                    'm': ['POST'], 'f': self.listDrop},
              {'r': '/admin/whitelist',                         'm': ['GET'],  'f': self.listView},
              {'r': '/admin/blacklist',                         'm': ['GET'],  'f': self.listView},
              {'r': '/admin/addToList',                         'm': ['GET'],  'f': self.listAdd},
              {'r': '/admin/removeFromList',                    'm': ['GET'],  'f': self.listRemove},
              {'r': '/admin/editInList',                        'm': ['GET'],  'f': self.listEdit},
              {'r': '/admin/listmanagement',                    'm': ['GET'],  'f': self.listManagement},
              {'r': '/admin/listmanagement/<vendor>',           'm': ['GET'],  'f': self.listManagement},
              {'r': '/admin/listmanagement/<vendor>/<product>', 'm': ['GET'],  'f': self.listManagement},
              {'r': '/admin/listmanagement/add',                'm': ['GET'],  'f': self.listManagementAdd},
              {'r': '/login',                                   'm': ['POST'], 'f': self.login_check},
              {'r': '/ViewCveSlack',                          'm': ['POST'], 'f': self.slack_cve},
              {'r': '/ViewCveSlack',                          'm': ['GET'], 'f': self.slack_cve}]
    for route in routes: self.addRoute(route)
Ejemplo n.º 2
0
    def __init__(self):
        Advanced_API.__init__(self)
        Minimal.__init__(self)
        self.minimal = False
        self.auth_handler = AuthenticationHandler()
        self.plugManager = PluginManager()
        self.login_manager = LoginManager()
        self.plugManager.loadPlugins()
        self.login_manager.init_app(self.app)
        self.login_manager.user_loader(self.load_user)
        self.redisdb = Configuration.getRedisVendorConnection()

        self.args.update({'minimal': False})
        self.pluginArgs = {
            "current_user": current_user,
            "plugin_manager": self.plugManager
        }
Ejemplo n.º 3
0
            message = source['name'] + " has " + str(
                after) + " elements (" + str(after - before) + " update)"
            newelement = str(after - before)
            log(message)
        elif (args.c is True and source['name'] is "redis-cache-cpe"):
            log('Starting ' + source['name'])
            subprocess.Popen((shlex.split(source['updater']))).wait()
            log(source['name'] + " updated")
    for post in posts:
        log('Starting ' + post['name'])
        subprocess.Popen((shlex.split(post['updater']))).wait()
    if args.i and int(newelement) > 0:
        subprocess.Popen(
            (shlex.split("python3 " +
                         os.path.join(runPath, "db_fulltext.py -v -l" +
                                      newelement)))).wait()
    if args.l is not False:
        log("Sleeping...")
        time.sleep(3600)
    log()

if not args.p:
    plugManager = PluginManager()
    plugManager.loadPlugins()
    plugins = plugManager.getPlugins()
    if len(plugins) != 0:
        for plug in plugins:
            log("Starting " + plug.getName() + " plugin")
            message = plug.onDatabaseUpdate()
            if message: log(message)
Ejemplo n.º 4
0
    def __init__(self):
        # TODO: make auth handler and plugin manager singletons
        Advanced_API.__init__(self)
        Minimal.__init__(self)
        self.minimal = False
        self.auth_handler = AuthenticationHandler()
        self.plugManager = PluginManager()
        self.login_manager = LoginManager()
        self.plugManager.loadPlugins()
        self.login_manager.init_app(self.app)
        self.login_manager.user_loader(self.load_user)
        self.redisdb = Configuration.getRedisVendorConnection()

        self.defaultFilters.update({
            "blacklistSelect": "on",
            "whitelistSelect": "on",
            "unlistedSelect": "show",
        })
        self.args.update({"minimal": False})
        self.pluginArgs = {
            "current_user": current_user,
            "plugin_manager": self.plugManager,
        }

        routes = [
            {
                "r": "/cve/<cveid>",
                "m": ["GET"],
                "f": self.cve
            },
            {
                "r": "/_get_plugins",
                "m": ["GET"],
                "f": self._get_plugins
            },
            {
                "r": "/plugin/_get_cve_actions",
                "m": ["GET"],
                "f": self._get_cve_actions
            },
            {
                "r": "/plugin/<plugin>",
                "m": ["GET"],
                "f": self.openPlugin
            },
            {
                "r": "/plugin/<plugin>/subpage/<page>",
                "m": ["GET"],
                "f": self.openPluginSubpage,
            },
            {
                "r": "/plugin/<plugin>/_cve_action/<action>",
                "m": ["GET"],
                "f": self._jsonCVEAction,
            },
            {
                "r": "/login",
                "m": ["POST"],
                "f": self.login_check
            },
            {
                "r": "/logout",
                "m": ["GET"],
                "f": self.logout
            },
            {
                "r": "/admin",
                "m": ["GET"],
                "f": self.admin
            },
            {
                "r": "/admin/",
                "m": ["GET"],
                "f": self.admin
            },
            {
                "r": "/admin/change_pass",
                "m": ["GET"],
                "f": self.change_pass
            },
            {
                "r": "/admin/request_token",
                "m": ["GET"],
                "f": self.request_token
            },
            {
                "r": "/admin/updatedb",
                "m": ["GET"],
                "f": self.updatedb
            },
            {
                "r": "/admin/whitelist/import",
                "m": ["POST"],
                "f": self.listImport
            },
            {
                "r": "/admin/blacklist/import",
                "m": ["POST"],
                "f": self.listImport
            },
            {
                "r": "/admin/whitelist/export",
                "m": ["GET"],
                "f": self.listExport
            },
            {
                "r": "/admin/blacklist/export",
                "m": ["GET"],
                "f": self.listExport
            },
            {
                "r": "/admin/whitelist/drop",
                "m": ["POST"],
                "f": self.listDrop
            },
            {
                "r": "/admin/blacklist/drop",
                "m": ["POST"],
                "f": self.listDrop
            },
            {
                "r": "/admin/whitelist",
                "m": ["GET"],
                "f": self.listView
            },
            {
                "r": "/admin/blacklist",
                "m": ["GET"],
                "f": self.listView
            },
            {
                "r": "/admin/addToList",
                "m": ["GET"],
                "f": self.listAdd
            },
            {
                "r": "/admin/removeFromList",
                "m": ["GET"],
                "f": self.listRemove
            },
            {
                "r": "/admin/editInList",
                "m": ["GET"],
                "f": self.listEdit
            },
            {
                "r": "/admin/listmanagement",
                "m": ["GET"],
                "f": self.listManagement
            },
            {
                "r": "/admin/listmanagement/<vendor>",
                "m": ["GET"],
                "f": self.listManagement,
            },
            {
                "r": "/admin/listmanagement/<vendor>/<product>",
                "m": ["GET"],
                "f": self.listManagement,
            },
            {
                "r": "/admin/listmanagement/add",
                "m": ["GET"],
                "f": self.listManagementAdd,
            },
            {
                "r": "/login",
                "m": ["POST"],
                "f": self.login_check
            },
        ]
        for route in routes:
            self.addRoute(route)
Ejemplo n.º 5
0
import json

from lib.PluginManager import PluginManager

pm = PluginManager()
pm.loadPlugins()

cves = {}
for _id in pm.getAllCVEIDs():
    cves[_id] = pm.getCVERefs(_id)

for _id in pm.getAllCVEIDs():
    cves[_id] = pm.updateRefs(_id, cves[_id])

open("VIA4CVE-feed.json", "w").write(json.dumps(cves))
Ejemplo n.º 6
0
                        help='Output location ( Default: VIA4CVE-feed.json)')
    parser.add_argument('--no-update',
                        action='store_true',
                        help="DEBUG: don't run the update part of the sources")
    parser.add_argument(
        '--no-cleanup',
        action='store_true',
        help="DEBUG: don't run the cleanup part of the sources")
    parser.add_argument(
        '--verify',
        action='store_true',
        help="Verify that the created file passes the unit test")

    args = parser.parse_args()

    pm = PluginManager()  # Create plug-in manager
    pm.loadPlugins()  # Load all sources & parse data

    cves = {}  # Create empty dictionary to fill up
    path = args.file if args.file else "VIA4CVE-feed.json"  # Generate path based on user preferences

    for _id in pm.getAllCVEIDs():
        cves[_id] = pm.getCVERefs(_id)  # Get data per CVE
    if not args.no_update:
        for _id in cves.keys():
            pm.updateRefs(_id, cves[_id])  # Update data based on previous data
    if not args.no_cleanup:
        for _id in cves.keys():
            pm.cleanUp(_id, cves[_id])  # Clean data

    data = {