def AreaWidgetLoader(self,DockInfo):
     if hasattr(self,'dockList'):
         for dock in self.dockList: dock.close()
     self.AllDockArea = {}
     if self.FSettings.Settings.get_setting('dockarea','advanced',format=bool):
         self.dockList = []
         for key in DockInfo.keys():
             if DockInfo[key]['active']:
                 self.dock = QDockWidget(key)
                 if key == 'HTTP-Authentication':
                     self.AllDockArea[key] = dockCredsMonitor(None,DockInfo[key])
                 elif key == 'HTTP-Requests':
                     self.AllDockArea[key] = dockUrlMonitor(None,DockInfo[key])
                 elif key == 'PumpkinProxy':
                     self.AllDockArea[key] = dockPumpkinProxy(None, DockInfo[key])
                 else:
                     self.AllDockArea[key] = dockAreaAPI(None,DockInfo[key])
                 self.dock.setWidget(self.AllDockArea[key])
                 self.dock.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
                 self.dock.setAllowedAreas(Qt.AllDockWidgetAreas)
                 self.dock.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable)
                 self.Tab_Dock.addDockWidget(Qt.LeftDockWidgetArea, self.dock)
                 self.dockList.insert(0,self.dock)
         if len(self.dockList) > 1:
             for index in range(1, len(self.dockList) - 1):
                 if self.dockList[index].objectName() != 'HTTP-Requests':
                     self.Tab_Dock.tabifyDockWidget(self.dockList[index],
                         self.dockList[index + 1])
         try:
             self.dockList[0].raise_()
         except IndexError:
             pass
         self.checkDockArea.emit(self.AllDockArea)
예제 #2
0
 def AreaWidgetLoader(self,DockInfo):
     if hasattr(self,'dockList'):
         for dock in self.dockList: dock.close()
     self.AllDockArea = {}
     if self.FSettings.Settings.get_setting('dockarea','advanced',format=bool):
         self.dockList = []
         for key in DockInfo.keys():
             if DockInfo[key]['active']:
                 self.dock = QDockWidget(key)
                 if key == 'HTTP-Authentication':
                     self.AllDockArea[key] = dockCredsMonitor(None,DockInfo[key])
                 elif key == 'HTTP-Requests':
                     self.AllDockArea[key] = dockUrlMonitor(None,DockInfo[key])
                 elif key == 'PumpkinProxy':
                     self.AllDockArea[key] = dockPumpkinProxy(None, DockInfo[key])
                 else:
                     self.AllDockArea[key] = dockAreaAPI(None,DockInfo[key])
                 self.dock.setWidget(self.AllDockArea[key])
                 self.dock.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
                 self.dock.setAllowedAreas(Qt.AllDockWidgetAreas)
                 self.dock.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable)
                 self.InitialMehtod.addDockWidget(Qt.LeftDockWidgetArea, self.dock)
                 self.dockList.insert(0,self.dock)
         if len(self.dockList) > 1:
             for index in range(1, len(self.dockList) - 1):
                 if self.dockList[index].objectName() != 'HTTP-Requests':
                     self.InitialMehtod.tabifyDockWidget(self.dockList[index],
                         self.dockList[index + 1])
         try:
             self.dockList[0].raise_()
         except IndexError:
             pass
         self.checkDockArea.emit(self.AllDockArea)
    def __init__(self,main_method,parent = None):
        super(PumpkinMitmproxy, self).__init__(parent)
        self.mainLayout     = QVBoxLayout()
        self.config         = SettingsINI(C.PUMPPROXY_INI)
        self.plugins        = []
        self.main_method    = main_method
        self.bt_SettingsDict    = {}
        self.check_PluginDict   = {}
        self.search_all_ProxyPlugins()
        #scroll area
        self.scrollwidget = QWidget()
        self.scrollwidget.setLayout(self.mainLayout)
        self.scroll = QScrollArea()
        self.scroll.setWidgetResizable(True)
        self.scroll.setWidget(self.scrollwidget)

        # create for add dock logging
        self.tabcontrol = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.page_1 = QVBoxLayout(self.tab1)
        self.page_2 = QVBoxLayout(self.tab2)
        self.tableLogging  = dockPumpkinProxy()

        self.tabcontrol.addTab(self.tab1, 'Plugins')
        self.tabcontrol.addTab(self.tab2, 'Logging')

        self.TabPlugins = QTableWidget()
        self.TabPlugins.setColumnCount(3)
        self.TabPlugins.setRowCount(len(self.plugins))
        self.TabPlugins.resizeRowsToContents()
        self.TabPlugins.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
        self.TabPlugins.horizontalHeader().setStretchLastSection(True)
        self.TabPlugins.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.TabPlugins.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.TabPlugins.verticalHeader().setVisible(False)
        self.TabPlugins.verticalHeader().setDefaultSectionSize(27)
        self.TabPlugins.setSortingEnabled(True)
        self.THeaders  = OrderedDict([ ('Plugins',[]),('Settings',[]),('Description',[])])
        self.TabPlugins.setHorizontalHeaderLabels(self.THeaders.keys())
        self.TabPlugins.horizontalHeader().resizeSection(0,158)
        self.TabPlugins.horizontalHeader().resizeSection(1,80)

        # add on tab
        self.page_1.addWidget(self.TabPlugins)
        self.page_2.addWidget(self.tableLogging)

        # get all plugins and add into TabWidget
        Headers = []
        for plugin in self.plugins:
            if plugin.ConfigParser:
                self.bt_SettingsDict[plugin.Name] = QPushButton('Settings')
                self.bt_SettingsDict[plugin.Name].clicked.connect(partial(self.setSettingsPlgins,plugin.Name))
            else:
                self.bt_SettingsDict[plugin.Name] = QPushButton('None')
            self.check_PluginDict[plugin.Name] = QCheckBox(plugin.Name)
            self.check_PluginDict[plugin.Name].setObjectName(plugin.Name)
            self.check_PluginDict[plugin.Name].clicked.connect(partial(self.setPluginOption,plugin.Name))
            self.THeaders['Plugins'].append(self.check_PluginDict[plugin.Name])
            self.THeaders['Settings'].append({'name': plugin.Name})
            self.THeaders['Description'].append(plugin.Description)
        for n, key in enumerate(self.THeaders.keys()):
            Headers.append(key)
            for m, item in enumerate(self.THeaders[key]):
                if type(item) == type(QCheckBox()):
                    self.TabPlugins.setCellWidget(m,n,item)
                elif type(item) == type(dict()):
                    self.TabPlugins.setCellWidget(m,n,self.bt_SettingsDict[item['name']])
                else:
                    item = QTableWidgetItem(item)
                    self.TabPlugins.setItem(m, n, item)
        self.TabPlugins.setHorizontalHeaderLabels(self.THeaders.keys())

        # check status all checkbox plugins
        for box in self.check_PluginDict.keys():
            self.check_PluginDict[box].setChecked(self.config.get_setting('plugins',box,format=bool))

        self.mainLayout.addWidget(self.tabcontrol)
        self.layout = QHBoxLayout()
        self.layout.addWidget(self.scroll)
        self.addLayout(self.layout)