예제 #1
0
    def __init__(self, args):
        self._original_excepthook = sys.excepthook

        self._configuration = CONF

        self._security_manager = SecurityManager()
        self._mappers_manager = MapperManager()
        self._changes_controller = ChangeController()
        self._db_manager = DbManager()

        self._model_controller = ModelController(self._security_manager,
                                                 self._mappers_manager)

        self._plugin_manager = PluginManager(
            os.path.join(CONF.getConfigPath(), "plugins"),
            self._mappers_manager)

        self._reports_manager = ReportManager(
            10, self._plugin_manager.createController("ReportManager"))

        self._workspace_manager = WorkspaceManager(self._db_manager,
                                                   self._mappers_manager,
                                                   self._changes_controller,
                                                   self._reports_manager)

        self.gui_app = UiFactory.create(self._model_controller,
                                        self._plugin_manager,
                                        self._workspace_manager, args.gui)

        self.gui_app.setSplashImage(
            os.path.join(CONF.getImagePath(), "splash2.png"))
예제 #2
0
파일: reports.py 프로젝트: x0james/faraday
def process_workspaces(mappers_manager, plugin_manager, query, disable_polling):
    report_managers = []
    controllers = []
    for workspace in query.all():
        pending_actions = Queue()
        plugin_controller = PluginController(
            'PluginController',
            plugin_manager,
            mappers_manager,
            pending_actions
        )
        mappers_manager.createMappers(workspace.name)
        controller = ModelController(mappers_manager, pending_actions)
        workspace_manager = WorkspaceManager(mappers_manager)
        setUpAPIs(controller, workspace_manager, hostname=None, port=None)
        controller.start()
        controllers.append(controller)
        report_manager = ReportManager(
            0.1,
            workspace.name,
            plugin_controller,
            polling=not disable_polling
        )
        report_managers.append(report_manager)
        report_manager.start()

    for report_manager in report_managers:
        report_manager.stop()

    for controller in controllers:
        controller.stop()
예제 #3
0
    def testWatchReportPath(self):
        import os.path
        import os
        workspace_name = common.new_random_workspace_name()
        timer = 10

        report_manager = ReportManager(timer, mock())
        report_manager.watch(workspace_name)

        self.assertTrue(
            os.path.exists(os.path.join(CONF.getReportPath(), workspace_name)),
            'Report directory not found')
예제 #4
0
 def openWorkspace(self, name):
     # The method openWorkspace can return a workspace or
     # raise en Exception. For now, just raise it to the caller
     if self.report_manager:
         self.report_manager.stop()
         self.report_manager.join()
     try:
         ws = self.getWorkspaceManager().openWorkspace(name)
         self.report_manager = ReportManager(10, name,
                                             self.plugin_controller)
         self.report_manager.start()
     except Exception as e:
         raise e
     return ws
예제 #5
0
 def openWorkspace(self, name):
     """Open a workspace by name. Returns the workspace of raises an
     exception if for some reason it couldn't.
     """
     if self.report_manager:
         self.report_manager.stop()
         self.report_manager.join()
     try:
         ws = self.getWorkspaceManager().openWorkspace(name)
         self.report_manager = ReportManager(10, name,
                                             self.plugin_controller)
         self.report_manager.start()
     except Exception as e:
         raise e
     return ws
예제 #6
0
    def openDefaultWorkspace(self):
        """
        Opens the default workspace (called 'untitled').
        This method shouldn't fail, since the default workspace
        should be always available

        Returns the default workspace
        """
        if self.report_manager:
            self.report_manager.stop()
            self.report_manager.join()
        ws = self.getWorkspaceManager().openDefaultWorkspace()
        self.report_manager = ReportManager(10, ws.name,
                                            self.plugin_controller)
        self.report_manager.start()
        return ws
예제 #7
0
 def testStartReportNoPathRunsException(self):
     report_manager = ReportManager(0, mock())
     self.assertRaises(NoReportsWatchException, report_manager.startWatch)
예제 #8
0
    def testCreateReportManager(self):
        timer = 10
        report_manager = ReportManager(timer, mock())

        self.assertIsNotNone(report_manager)