Ejemplo n.º 1
0
    def friendsList(self, username):

        self.window = swing.JFrame(username)
        self.window.layout = awt.BorderLayout()
        statusPanel = swing.JPanel()
        statusPanel.layout = awt.GridLayout(4, 1)

        # Set status placeholder UI
        statusPanel.border = swing.BorderFactory.createTitledBorder("Status")
        buttonGroup = swing.ButtonGroup()
        radioButton = swing.JRadioButton("Away",
                                         actionPerformed=self.radioCallback)
        buttonGroup.add(radioButton)
        statusPanel.add(radioButton)
        radioButton = swing.JRadioButton("Here",
                                         actionPerformed=self.radioCallback)
        buttonGroup.add(radioButton)
        statusPanel.add(radioButton)
        #Wizard of Oz incoming chat request
        radioButton = swing.JButton("Page Boss", actionPerformed=self.callBoss)
        buttonGroup.add(radioButton)
        statusPanel.add(radioButton)
        statusPanel.add(self.status)
        #statusPanel.add(swing.JButton("Update Status", actionPerformed=self.updateStatus))
        #Buddy list
        panel = swing.JPanel()
        panel.layout = awt.BorderLayout()
        panel.border = swing.BorderFactory.createTitledBorder("Friends Online")

        ##TODO: fix threading so that friends load before the window
        print self.friendsData
        self.friendsData.append('guest')
        print '2'

        self.list = swing.JList(self.friendsData)
        panel.add("Center", swing.JScrollPane(self.list))
        launchChatButton = swing.JButton("Launch chat?",
                                         actionPerformed=self.launchChatOut)
        panel.add("South", launchChatButton)
        self.window.windowClosing = self.goodbye
        pane = JScrollPane()
        pane.getViewport().add(self.list)
        panel.add(pane)
        self.window.add("North", statusPanel)
        self.window.add("South", panel)
        self.window.pack()
        self.window.visible = True
        return self.window
Ejemplo n.º 2
0
    def registerExtenderCallbacks(self, callbacks):

        # keep a reference to our callbacks object
        self._callbacks = callbacks
        # set our extension name
        self._callbacks.setExtensionName("Payload Parser")
        # build UI
        self._jPanel = swing.JPanel()
        self._jPanel.layout = awt.BorderLayout()
        self._jPanel.border = swing.BorderFactory.createTitledBorder(
            "Input characters to display payload strings with characters included or excluded"
        )
        inputPanel = swing.JPanel()
        inputPanel.layout = awt.BorderLayout()
        radioPanel = swing.JPanel()
        self.text1 = swing.JTextField(actionPerformed=self.radioCallback)
        inputPanel.add(self.text1, inputPanel.layout.CENTER)
        buttonGroup = swing.ButtonGroup()
        self._radioButtonInclude = swing.JRadioButton("Include")
        buttonGroup.add(self._radioButtonInclude)
        radioPanel.add(self._radioButtonInclude)
        self._radioButtonExclude = swing.JRadioButton("Exclude")
        buttonGroup.add(self._radioButtonExclude)
        radioPanel.add(self._radioButtonExclude)
        self._radioButtonInclude.setSelected(True)
        inputPanel.add(radioPanel, inputPanel.layout.LINE_END)
        self._jPanel.add(inputPanel, self._jPanel.layout.PAGE_START)
        self.textArea = swing.JTextArea()
        scrollPane = swing.JScrollPane(self.textArea)
        self._jPanel.add(scrollPane, self._jPanel.layout.CENTER)
        boxVertical = swing.Box.createVerticalBox()
        saveLabel = swing.JLabel(
            "Save Payloads (In Burp Root Dir): Can be Imported into Intruder")
        boxVertical.add(saveLabel)
        boxHorizontal = swing.Box.createHorizontalBox()
        saveLabel2 = swing.JLabel("Save As:")
        boxHorizontal.add(saveLabel2)
        self._saveTextField = swing.JTextField('', 30)
        boxHorizontal.add(self._saveTextField)
        submitSaveButton = swing.JButton('Save',
                                         actionPerformed=self.savePayload)
        boxHorizontal.add(submitSaveButton)
        boxVertical.add(boxHorizontal)
        self._jPanel.add(boxVertical, self._jPanel.layout.PAGE_END)
        # add the custom tab to Burp's UI
        self._callbacks.addSuiteTab(self)
        return
Ejemplo n.º 3
0
    def registerExtenderCallbacks(self, callbacks):

        print "Loading..."

        self._callbacks = callbacks
        self._callbacks.setExtensionName("PDF Metadata")

        self.rbFast = self.defineRadioButton(
            "Scan Fast - Will miss PDF files that don't have their name in the request"
        )
        self.rbThorough = self.defineRadioButton(
            "Scan Thoroughly - Will be slow, but won't miss PDF files", False)
        self.fast = True
        self.btnSave = swing.JButton("Save", actionPerformed=self.saveConfig)
        self.btnGroup = swing.ButtonGroup()
        self.btnGroup.add(self.rbFast)
        self.btnGroup.add(self.rbThorough)

        self.tab = swing.JPanel()
        layout = swing.GroupLayout(self.tab)
        self.tab.setLayout(layout)
        layout.setAutoCreateGaps(True)
        layout.setAutoCreateContainerGaps(True)
        layout.setHorizontalGroup(layout.createSequentialGroup().addGroup(
            layout.createParallelGroup().addComponent(
                self.rbFast).addComponent(self.rbThorough).addComponent(
                    self.btnSave)))
        layout.setVerticalGroup(layout.createSequentialGroup().addComponent(
            self.rbFast).addComponent(self.rbThorough).addComponent(
                self.btnSave))
        self.restoreConfig()
        self._callbacks.registerScannerCheck(self)
        self._callbacks.registerExtensionStateListener(self)
        self._helpers = callbacks.getHelpers()
        self._callbacks.addSuiteTab(self)

        self.initGui()

        # Variable to keep a browsable structure of the issues find on each host
        # later used in the export function.
        self.global_issues = {}

        print "Loaded PDF Metadata v" + VERSION + "!"
        return
Ejemplo n.º 4
0
   def init(self,mappane):
      self.add(mappane,awt.BorderLayout.CENTER)

      statusBar = JMapStatusBar.createDefaultStatusBar(mappane)
      #statusBar.addItem(CRSStatusBarItem(mappane))
      #statusBar.addItem(ExtentStatusBarItem(mappane))
      self.add(statusBar, awt.BorderLayout.SOUTH)
            
      toolBar = swing.JToolBar()
      toolBar.setOrientation(swing.JToolBar.HORIZONTAL)
      toolBar.setFloatable(False)

      cursorToolGrp = swing.ButtonGroup()
      zoomInBtn = swing.JButton(ZoomInAction(mappane))
      toolBar.add(zoomInBtn)
      cursorToolGrp.add(zoomInBtn)

      zoomOutBtn = swing.JButton(ZoomOutAction(mappane))
      toolBar.add(zoomOutBtn)
      cursorToolGrp.add(zoomOutBtn)

      toolBar.addSeparator()

      panBtn = swing.JButton(PanAction(mappane))
      toolBar.add(panBtn)
      cursorToolGrp.add(panBtn)

      toolBar.addSeparator()

      resetBtn = swing.JButton(ResetAction(mappane))
      toolBar.add(resetBtn)

      toolBar.addSeparator()

      infoBtn = swing.JButton(InfoAction(mappane))
      toolBar.add(infoBtn)

      self.add( toolBar, awt.BorderLayout.NORTH )
Ejemplo n.º 5
0
    def __init__(self):
        #########################################################
        #
        # set up the overall frame (the window itself)
        #
        self.window = swing.JFrame("Swing Sampler!")
        self.window.windowClosing = self.goodbye
        self.window.contentPane.layout = awt.BorderLayout()

        #########################################################
        #
        # under this will be a tabbed pane; each tab is named
        # and contains a panel with other stuff in it.
        #
        tabbedPane = swing.JTabbedPane()
        self.window.contentPane.add("Center", tabbedPane)

        #########################################################
        #
        # The first tabbed panel will be named "Some Basic
        # Widgets", and is referenced by variable 'firstTab'
        #
        firstTab = swing.JPanel()
        firstTab.layout = awt.BorderLayout()
        tabbedPane.addTab("Some Basic Widgets", firstTab)

        #
        # slap in some labels, a list, a text field, etc... Some
        # of these are contained in their own panels for
        # layout purposes.
        #
        tmpPanel = swing.JPanel()
        tmpPanel.layout = awt.GridLayout(3, 1)
        tmpPanel.border = swing.BorderFactory.createTitledBorder(
            "Labels are simple")
        tmpPanel.add(swing.JLabel("I am a label. I am quite boring."))
        tmpPanel.add(
            swing.JLabel(
                "<HTML><FONT COLOR='blue'>HTML <B>labels</B></FONT> are <I>somewhat</I> <U>less boring</U>.</HTML>"
            ))
        tmpPanel.add(
            swing.JLabel("Labels can also be aligned", swing.JLabel.RIGHT))
        firstTab.add(tmpPanel, "North")

        #
        # Notice that the variable "tmpPanel" gets reused here.
        # This next line creates a new panel, but we reuse the
        # "tmpPanel" name to refer to it.  The panel that
        # tmpPanel used to refer to still exists, but we no
        # longer have a way to name it (but that's ok, since
        # we don't need to refer to it any more).

        #
        tmpPanel = swing.JPanel()
        tmpPanel.layout = awt.BorderLayout()
        tmpPanel.border = swing.BorderFactory.createTitledBorder(
            "Tasty tasty lists")

        #
        # Note that here we stash a reference to the list in
        # "self.list".  This puts it in the scope of the object,
        # rather than this function.  This is because we'll be
        # referring to it later from outside this function, so
        # it needs to be "bumped up a level."
        #

        listData = [
            "January", "February", "March", "April", "May", "June", "July",
            "August", "September", "October", "November", "December"
        ]
        self.list = swing.JList(listData)
        tmpPanel.add("Center", swing.JScrollPane(self.list))
        button = swing.JButton("What's Selected?")
        button.actionPerformed = self.whatsSelectedCallback
        tmpPanel.add("East", button)
        firstTab.add("Center", tmpPanel)

        tmpPanel = swing.JPanel()
        tmpPanel.layout = awt.BorderLayout()

        #
        # The text field also goes in self, since the callback
        # that displays the contents will need to get at it.
        #
        # Also note that because the callback is a function inside
        # the SwingSampler object, you refer to it through self.
        # (The callback could potentially be outside the object,
        # as a top-level function. In that case you wouldn't
        # use the 'self' selector; any variables that it uses
        # would have to be in the global scope.
        #
        self.field = swing.JTextField()
        tmpPanel.add(self.field)
        tmpPanel.add(
            swing.JButton("Click Me", actionPerformed=self.clickMeCallback),
            "East")
        firstTab.add(tmpPanel, "South")

        #########################################################
        #
        # The second tabbed panel is next...  This shows
        # how to build a basic web browser in about 20 lines.
        #
        secondTab = swing.JPanel()
        secondTab.layout = awt.BorderLayout()
        tabbedPane.addTab("HTML Fanciness", secondTab)

        tmpPanel = swing.JPanel()
        tmpPanel.add(swing.JLabel("Go to:"))
        self.urlField = swing.JTextField(40, actionPerformed=self.goToCallback)
        tmpPanel.add(self.urlField)
        tmpPanel.add(swing.JButton("Go!", actionPerformed=self.goToCallback))
        secondTab.add(tmpPanel, "North")

        self.htmlPane = swing.JEditorPane("http://www.google.com",
                                          editable=0,
                                          hyperlinkUpdate=self.followHyperlink,
                                          preferredSize=(400, 400))
        secondTab.add(swing.JScrollPane(self.htmlPane), "Center")

        self.statusLine = swing.JLabel("(status line)")
        secondTab.add(self.statusLine, "South")

        #########################################################
        #
        # The third tabbed panel is next...
        #
        thirdTab = swing.JPanel()
        tabbedPane.addTab("Other Widgets", thirdTab)

        imageLabel = swing.JLabel(
            swing.ImageIcon(
                net.URL("http://www.gatech.edu/images/logo-gatech.gif")))
        imageLabel.toolTipText = "Labels can have images! Every widget can have a tooltip!"
        thirdTab.add(imageLabel)

        tmpPanel = swing.JPanel()
        tmpPanel.layout = awt.GridLayout(3, 2)
        tmpPanel.border = swing.BorderFactory.createTitledBorder(
            "Travel Checklist")
        tmpPanel.add(
            swing.JCheckBox("Umbrella", actionPerformed=self.checkCallback))
        tmpPanel.add(
            swing.JCheckBox("Rain coat", actionPerformed=self.checkCallback))
        tmpPanel.add(
            swing.JCheckBox("Passport", actionPerformed=self.checkCallback))
        tmpPanel.add(
            swing.JCheckBox("Airline tickets",
                            actionPerformed=self.checkCallback))
        tmpPanel.add(
            swing.JCheckBox("iPod", actionPerformed=self.checkCallback))
        tmpPanel.add(
            swing.JCheckBox("Laptop", actionPerformed=self.checkCallback))
        thirdTab.add(tmpPanel)

        tmpPanel = swing.JPanel()
        tmpPanel.layout = awt.GridLayout(4, 1)
        tmpPanel.border = swing.BorderFactory.createTitledBorder("My Pets")
        #
        # A ButtonGroup is used to indicate which radio buttons
        # go together.
        #
        buttonGroup = swing.ButtonGroup()

        radioButton = swing.JRadioButton("Dog",
                                         actionPerformed=self.radioCallback)
        buttonGroup.add(radioButton)
        tmpPanel.add(radioButton)

        radioButton = swing.JRadioButton("Cat",
                                         actionPerformed=self.radioCallback)
        buttonGroup.add(radioButton)
        tmpPanel.add(radioButton)

        radioButton = swing.JRadioButton("Pig",
                                         actionPerformed=self.radioCallback)
        buttonGroup.add(radioButton)
        tmpPanel.add(radioButton)

        radioButton = swing.JRadioButton("Capybara",
                                         actionPerformed=self.radioCallback)
        buttonGroup.add(radioButton)
        tmpPanel.add(radioButton)

        thirdTab.add(tmpPanel)

        self.window.pack()
        self.window.show()
Ejemplo n.º 6
0
    def registerExtenderCallbacks(self, callbacks):
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        callbacks.setExtensionName("Encoder")
        callbacks.registerContextMenuFactory(self)
        callbacks.registerIntruderPayloadProcessor(self)

        #Create Jpanel
        self._jPanel = swing.JPanel()
        self._jPanel.setLayout(None)
        self._jPanel.setPreferredSize(awt.Dimension(1200, 1200))

        #Values for the combination boxes
        algOptions = [
            'Algorithm...', 'UTF-7', 'UTF-8', 'URL', 'Base64', 'XML', 'Binary',
            'Overlong', 'zlib deflate'
        ]
        hashOptions = [
            'Hash...', 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'
        ]

        #GUI Components
        self.jEncode = swing.JRadioButton('Encode',
                                          actionPerformed=self.encodeButton)
        self.jDecode = swing.JRadioButton('Decode',
                                          actionPerformed=self.decodeButton)
        self.jAlgMenu = swing.JComboBox(algOptions)
        self.jInput = swing.JTextArea()
        self.jInputLabel = swing.JLabel()
        self.jOutput = swing.JTextArea()
        self.jInputScroll = swing.JScrollPane(self.jOutput)
        self.jOutputScroll = swing.JScrollPane(self.jOutput)
        self.jOutputLabel = swing.JLabel()
        self.jHashLabel = swing.JLabel()
        self.jHashMenu = swing.JComboBox(hashOptions)
        self.jStart = swing.JButton('Go', actionPerformed=self.doStart)
        self.jHex = swing.JRadioButton('Hex', actionPerformed=self.toHex)
        self.jString = swing.JRadioButton('String',
                                          actionPerformed=self.toString)
        self.jOutputFormat = swing.ButtonGroup()
        self.jSendToRequest = swing.JButton('Send to request',
                                            actionPerformed=self.sendToRequest)
        self.jToInput = swing.JButton('Send to Input',
                                      actionPerformed=self.toInput)
        self.jNextHistory = swing.JButton('>',
                                          actionPerformed=self.nextHistory)
        self.jPreviousHistory = swing.JButton(
            '<', actionPerformed=self.previousHistory)

        #Input and Ouptut scroll
        self.jOutputScroll = swing.JScrollPane(
            swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            swing.JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)
        self.jOutputScroll.viewport.view = self.jOutput
        self.jInputScroll = swing.JScrollPane(
            swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            swing.JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)
        self.jInputScroll.viewport.view = self.jInput
        #Add buttons to group
        self.jOutputFormat.add(self.jString)
        self.jOutputFormat.add(self.jHex)

        #Configure GUIs

        self.jEncode.setSelected(True)
        self.jDecode.setSelected(False)
        self.jAlgMenu.setSelectedIndex(0)
        self.jInput.setLineWrap(True)
        self.jOutput.setLineWrap(True)
        self.jOutput.setEditable(False)
        self.jHashMenu.setSelectedIndex(0)
        self.jString.setSelected(True)

        #Component Locations

        self.jEncode.setBounds(15, 15, 70, 20)
        self.jDecode.setBounds(85, 15, 70, 20)
        self.jAlgMenu.setBounds(15, 45, 140, 25)
        self.jHashMenu.setBounds(15, 80, 140, 25)
        self.jStart.setBounds(15, 115, 140, 20)
        self.jSendToRequest.setBounds(15, 145, 140, 20)
        self.jHex.setBounds(15, 175, 70, 20)
        self.jString.setBounds(85, 175, 70, 20)
        self.jInputScroll.setBounds(165, 15, 800, 200)
        self.jOutputScroll.setBounds(165, 225, 800, 200)
        self.jToInput.setBounds(15, 405, 140, 20)
        self.jNextHistory.setBounds(85, 465, 70, 20)
        self.jPreviousHistory.setBounds(15, 465, 70, 20)

        #Add components to Panel
        self._jPanel.add(self.jEncode)
        self._jPanel.add(self.jDecode)
        self._jPanel.add(self.jAlgMenu)
        self._jPanel.add(self.jHashMenu)
        self._jPanel.add(self.jInputScroll)
        self._jPanel.add(self.jOutputScroll)
        self._jPanel.add(self.jStart)
        self._jPanel.add(self.jHex)
        self._jPanel.add(self.jString)
        self._jPanel.add(self.jSendToRequest)
        self._jPanel.add(self.jToInput)
        self._jPanel.add(self.jNextHistory)
        self._jPanel.add(self.jPreviousHistory)

        callbacks.customizeUiComponent(self._jPanel)
        callbacks.addSuiteTab(self)

        # set some values
        self._inputHex = False
        self._outputHex = False

        return
Ejemplo n.º 7
0
    def initUI(self):
        self.tab = swing.JPanel()

        # UI for Decrypt Key
        self.decryptLabel = swing.JLabel("Decrypt Key:")
        self.decryptLabel.setFont(Font("Tahoma", Font.BOLD, 14))
        self.decryptLabel.setForeground(Color(255,102,52))
        self.urlLabel = swing.JLabel("URL:")
        self.urlTxtField = swing.JTextField("http://localhost/Telerik.Web.UI.DialogHandler.aspx", 40)
        self.charLabel = swing.JLabel("Character Set:")
        self.hexRadio = swing.JRadioButton("Hex", True)
        self.asciiRadio = swing.JRadioButton("ASCII", False)
        self.btnGroup = swing.ButtonGroup()
        self.btnGroup.add(self.hexRadio)
        self.btnGroup.add(self.asciiRadio)
        self.decryptBtn = swing.JButton("Decrypt Key", actionPerformed=self.mode_brutekey)
        self.cancelBtn = swing.JButton("Cancel", actionPerformed=self.cancel)

        # UI for Output
        self.outputLabel = swing.JLabel("Log:")
        self.outputLabel.setFont(Font("Tahoma", Font.BOLD, 14))
        self.outputLabel.setForeground(Color(255,102,52))
        self.logPane = swing.JScrollPane()
        self.outputTxtArea = swing.JTextArea()
        self.outputTxtArea.setFont(Font("Consolas", Font.PLAIN, 12))
        self.outputTxtArea.setLineWrap(True)
        self.logPane.setViewportView(self.outputTxtArea)
        self.clearBtn = swing.JButton("Clear Log", actionPerformed=self.clearLog)

        # Layout
        layout = swing.GroupLayout(self.tab)
        layout.setAutoCreateGaps(True)
        layout.setAutoCreateContainerGaps(True)
        self.tab.setLayout(layout)

        layout.setHorizontalGroup(
            layout.createParallelGroup()
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup()
                    .addComponent(self.decryptLabel)
                    .addComponent(self.urlLabel)
                    .addComponent(self.urlTxtField, swing.GroupLayout.PREFERRED_SIZE, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(self.charLabel)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(self.hexRadio)
                        .addComponent(self.asciiRadio)
                    )
                    .addGroup(layout.createSequentialGroup()
                    	.addComponent(self.decryptBtn)
                    	.addComponent(self.cancelBtn)
                    )
                )
                .addGroup(layout.createParallelGroup()
                    .addComponent(self.outputLabel)
                    .addComponent(self.logPane)
                    .addComponent(self.clearBtn)
                )
            )
        )
        
        layout.setVerticalGroup(
            layout.createParallelGroup()
            .addGroup(layout.createParallelGroup()
                .addGroup(layout.createSequentialGroup()
                    .addComponent(self.decryptLabel)
                    .addComponent(self.urlLabel)
                    .addComponent(self.urlTxtField, swing.GroupLayout.PREFERRED_SIZE, swing.GroupLayout.DEFAULT_SIZE, swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(self.charLabel)
                    .addGroup(layout.createParallelGroup()
                        .addComponent(self.hexRadio)
                        .addComponent(self.asciiRadio)
                    )
                    .addGroup(layout.createParallelGroup()
	                    .addComponent(self.decryptBtn)
	                    .addComponent(self.cancelBtn)
                    )
                )
                .addGroup(layout.createSequentialGroup()
                    .addComponent(self.outputLabel)
                    .addComponent(self.logPane)
                    .addComponent(self.clearBtn)
                )
            )
        )
Ejemplo n.º 8
0
    def drawUI(self):
        self.tab = swing.JPanel()
        self.uiLabel = swing.JLabel('Site Map Extractor Options')
        self.uiLabel.setFont(Font('Tahoma', Font.BOLD, 14))
        self.uiLabel.setForeground(Color(235, 136, 0))

        self.uiScopeOnly = swing.JRadioButton('In-scope only', True)
        self.uiScopeAll = swing.JRadioButton('Full site map', False)
        self.uiScopeButtonGroup = swing.ButtonGroup()
        self.uiScopeButtonGroup.add(self.uiScopeOnly)
        self.uiScopeButtonGroup.add(self.uiScopeAll)

        self.uipaneA = swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT)
        self.uipaneA.setMaximumSize(Dimension(900, 125))
        self.uipaneA.setDividerSize(2)
        self.uipaneB = swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT)
        self.uipaneB.setDividerSize(2)
        self.uipaneA.setRightComponent(self.uipaneB)
        self.uipaneA.setBorder(BorderFactory.createLineBorder(Color.black))

        # UI for Export <a href Links
        self.uiLinksPanel = swing.JPanel()
        self.uiLinksPanel.setPreferredSize(Dimension(200, 75))
        self.uiLinksPanel.setBorder(EmptyBorder(10, 10, 10, 10))
        self.uiLinksPanel.setLayout(BorderLayout())
        self.uiLinksLabel = swing.JLabel("Extract '<a href=' Links")
        self.uiLinksLabel.setFont(Font('Tahoma', Font.BOLD, 14))
        self.uiLinksAbs = swing.JCheckBox('Absolute     ', True)
        self.uiLinksRel = swing.JCheckBox('Relative     ', True)
        # create a subpanel so Run button will be centred
        self.uiLinksRun = swing.JButton('Run',
                                        actionPerformed=self.extractLinks)
        self.uiLinksSave = swing.JButton('Save Log to CSV File',
                                         actionPerformed=self.savetoCsvFile)
        self.uiLinksClear = swing.JButton('Clear Log',
                                          actionPerformed=self.clearLog)
        self.uiLinksButtonPanel = swing.JPanel()
        self.uiLinksButtonPanel.add(self.uiLinksRun)
        self.uiLinksButtonPanel.add(self.uiLinksSave)
        self.uiLinksButtonPanel.add(self.uiLinksClear)
        # add all elements to main Export Links panel
        self.uiLinksPanel.add(self.uiLinksLabel, BorderLayout.NORTH)
        self.uiLinksPanel.add(self.uiLinksAbs, BorderLayout.WEST)
        self.uiLinksPanel.add(self.uiLinksRel, BorderLayout.CENTER)
        self.uiLinksPanel.add(self.uiLinksButtonPanel, BorderLayout.SOUTH)
        self.uipaneA.setLeftComponent(
            self.uiLinksPanel)  # add Export Links panel to splitpane

        # UI for Export Response Codes
        self.uiCodesPanel = swing.JPanel()
        self.uiCodesPanel.setPreferredSize(Dimension(200, 75))
        self.uiCodesPanel.setBorder(EmptyBorder(10, 10, 10, 10))
        self.uiCodesPanel.setLayout(BorderLayout())
        self.uiCodesLabel = swing.JLabel('Extract Response Codes')
        self.uiCodesLabel.setFont(Font('Tahoma', Font.BOLD, 14))
        self.uiRcodePanel = swing.JPanel()
        self.uiRcodePanel.setLayout(GridLayout(1, 1))
        self.uiRcode1xx = swing.JCheckBox('1XX  ', False)
        self.uiRcode2xx = swing.JCheckBox('2XX  ', True)
        self.uiRcode3xx = swing.JCheckBox('3XX  ', True)
        self.uiRcode4xx = swing.JCheckBox('4XX  ', True)
        self.uiRcode5xx = swing.JCheckBox('5XX  ', True)
        self.uiCodesRun = swing.JButton('Run',
                                        actionPerformed=self.exportCodes)
        self.uiCodesSave = swing.JButton('Save Log to CSV File',
                                         actionPerformed=self.savetoCsvFile)
        self.uiCodesClear = swing.JButton('Clear Log',
                                          actionPerformed=self.clearLog)
        self.uiCodesButtonPanel = swing.JPanel()
        self.uiCodesButtonPanel.add(self.uiCodesRun)
        self.uiCodesButtonPanel.add(self.uiCodesSave)
        self.uiCodesButtonPanel.add(self.uiCodesClear)
        self.uiRcodePanel.add(self.uiRcode1xx)
        self.uiRcodePanel.add(self.uiRcode2xx)
        self.uiRcodePanel.add(self.uiRcode3xx)
        self.uiRcodePanel.add(self.uiRcode4xx)
        self.uiRcodePanel.add(self.uiRcode5xx)
        self.uiCodesPanel.add(self.uiCodesLabel, BorderLayout.NORTH)
        self.uiCodesPanel.add(self.uiRcodePanel, BorderLayout.WEST)
        self.uiCodesPanel.add(self.uiCodesButtonPanel, BorderLayout.SOUTH)
        self.uipaneB.setLeftComponent(self.uiCodesPanel)

        # Option 3 UI for Export Sitemap
        self.uiExportPanel = swing.JPanel()
        self.uiExportPanel.setPreferredSize(Dimension(200, 75))
        self.uiExportPanel.setBorder(EmptyBorder(10, 10, 10, 10))
        self.uiExportPanel.setLayout(BorderLayout())
        self.uiExportLabel = swing.JLabel('Export Site Map to File')
        self.uiExportLabel.setFont(Font('Tahoma', Font.BOLD, 14))
        self.uiMustHaveResponse = swing.JRadioButton(
            'Must have a response     ', True)
        self.uiAllRequests = swing.JRadioButton('All     ', False)
        self.uiResponseButtonGroup = swing.ButtonGroup()
        self.uiResponseButtonGroup.add(self.uiMustHaveResponse)
        self.uiResponseButtonGroup.add(self.uiAllRequests)
        self.uiExportRun = swing.JButton('Run',
                                         actionPerformed=self.exportSiteMap)
        self.uiExportClear = swing.JButton('Clear Log',
                                           actionPerformed=self.clearLog)
        self.uiExportButtonPanel = swing.JPanel()
        self.uiExportButtonPanel.add(self.uiExportRun)
        self.uiExportButtonPanel.add(self.uiExportClear)
        self.uiExportPanel.add(self.uiExportLabel, BorderLayout.NORTH)
        self.uiExportPanel.add(self.uiMustHaveResponse, BorderLayout.WEST)
        self.uiExportPanel.add(self.uiAllRequests, BorderLayout.CENTER)
        self.uiExportPanel.add(self.uiExportButtonPanel, BorderLayout.SOUTH)
        self.uipaneB.setRightComponent(self.uiExportPanel)

        # UI Common Elements
        self.uiLogLabel = swing.JLabel('Log:')
        self.uiLogLabel.setFont(Font('Tahoma', Font.BOLD, 14))
        self.uiLogPane = swing.JScrollPane()
        layout = swing.GroupLayout(self.tab)
        self.tab.setLayout(layout)

        # Thank you to Smeege (https://github.com/SmeegeSec/Burp-Importer/) for helping me figure out how this works.
        # He in turn gave credit to Antonio Sanchez (https://github.com/Dionach/HeadersAnalyzer/)
        layout.setHorizontalGroup(
            layout.createParallelGroup(
                swing.GroupLayout.Alignment.LEADING).addGroup(
                    layout.createSequentialGroup().addGap(10, 10, 10).addGroup(
                        layout.createParallelGroup(
                            swing.GroupLayout.Alignment.LEADING).addComponent(
                                self.uiLabel).addGroup(
                                    layout.createSequentialGroup().addGap(
                                        10, 10, 10).addComponent(
                                            self.uiScopeOnly).addGap(
                                                10, 10, 10).addComponent(
                                                    self.uiScopeAll)).
                        addGap(15, 15,
                               15).addComponent(self.uipaneA).addComponent(
                                   self.uiLogLabel).addComponent(
                                       self.uiLogPane)).addContainerGap(
                                           26, lang.Short.MAX_VALUE)))

        layout.setVerticalGroup(
            layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING).
            addGroup(layout.createSequentialGroup().addGap(
                15, 15,
                15).addComponent(self.uiLabel).addGap(15, 15, 15).addGroup(
                    layout.createParallelGroup().addComponent(
                        self.uiScopeOnly).addComponent(
                            self.uiScopeAll)).addGap(
                                20, 20, 20).addComponent(self.uipaneA).addGap(
                                    20, 20,
                                    20).addComponent(self.uiLogLabel).addGap(
                                        5, 5,
                                        5).addComponent(self.uiLogPane).addGap(
                                            20, 20, 20)))
Ejemplo n.º 9
0
    def tabDesign(self,callbacks):
        topPanel=swing.JPanel(BorderLayout())
	
		#create HMAC Key Text Area:
        keyPanel=swing.JPanel(BorderLayout())
		# Create the label for the text area
        boxVertical = swing.Box.createVerticalBox()
        boxHorizontal = swing.Box.createHorizontalBox()
        textLabel = swing.JLabel("HMAC Key")
        boxHorizontal.add(textLabel)
        boxVertical.add(boxHorizontal)
        # Create the text area itself
        boxHorizontal = swing.Box.createHorizontalBox()
        keyText = swing.JTextField(512)
        keyText.setText("secretkey")
        boxHorizontal.add(keyText)
        boxVertical.add(boxHorizontal)
        # Add the text label and area to the text panel
        keyPanel.add(boxVertical)
        # Add the text panel to the top of the main tab
        topPanel.add(keyPanel, BorderLayout.NORTH) 
		
		#create HMAC Key Text Area:
        hsPanel=swing.JPanel(BorderLayout())
		# Create the label for the text area
        boxVertical = swing.Box.createVerticalBox()
        boxHorizontal = swing.Box.createHorizontalBox()
        textLabel = swing.JLabel("HashString")
        boxHorizontal.add(textLabel)
        boxVertical.add(boxHorizontal)
        # Create the text area itself
        boxHorizontal = swing.Box.createHorizontalBox()
        hsText = swing.JTextField(512)
        hsText.setText("<header>:<body>:<header:timestamp>")
        boxHorizontal.add(hsText)
        boxVertical.add(boxHorizontal)
        # Add the text label and area to the text panel
        hsPanel.add(boxVertical)
        # Add the text panel to the top of the main tab
        topPanel.add(hsPanel, BorderLayout.CENTER) 
        
        bTopPanel= swing.JPanel()
		
        #create HMAC Key Text Area:
        slPanel=swing.JPanel(BorderLayout())
		# Create the label for the text area
        boxVertical = swing.Box.createVerticalBox()
        boxHorizontal = swing.Box.createHorizontalBox()
        textLabel = swing.JLabel("Signature Location")
        boxHorizontal.add(textLabel)
        boxVertical.add(boxHorizontal)
        # Create the text area itself
        boxHorizontal = swing.Box.createHorizontalBox()
        hsText = swing.JTextField(75)
        hsText.setText("<header:signature>")
        boxHorizontal.add(hsText)
        boxVertical.add(boxHorizontal)
        # Add the text label and area to the text panel
        slPanel.add(boxVertical)
        # Add the text panel to the top of the main tab
        bTopPanel.add(slPanel, BorderLayout.NORTH) 

		#create HMAC Key Text Area:
        haPanel=swing.JPanel()
		# Create the label for the text area
        boxVertical = swing.Box.createVerticalBox()
        boxHorizontal = swing.Box.createHorizontalBox()
        textLabel = swing.JLabel("Hash Algorithm")
        boxHorizontal.add(textLabel)
        boxVertical.add(boxHorizontal)
        # Create the text area itself
        boxHorizontal = swing.Box.createHorizontalBox()
        rbPanel = swing.JPanel()
        radio1=swing.JRadioButton("SHA-1")
        radio2=swing.JRadioButton("SHA-256",True)
        radio3=swing.JRadioButton("SHA-512")
        group = swing.ButtonGroup()
        group.add(radio1)
        group.add(radio2)
        group.add(radio3)
        rbPanel.add(radio1)
        rbPanel.add(radio2)
        rbPanel.add(radio3)
        boxHorizontal.add(rbPanel)
        boxVertical.add(boxHorizontal)
        # Add the text label and area to the text panel
        haPanel.add(boxVertical)
        # Add the text panel to the top of the main tab
        bTopPanel.add(haPanel, BorderLayout.CENTER)
		
		#create HMAC Key Text Area:
        sPanel=swing.JPanel()
		# Create the label for the text area
        boxVertical = swing.Box.createVerticalBox()
        boxHorizontal = swing.Box.createHorizontalBox()
        textLabel = swing.JLabel("Signature")
        boxHorizontal.add(textLabel)
        boxVertical.add(boxHorizontal)
        # Create the text area itself
        boxHorizontal = swing.Box.createHorizontalBox()
        rbPanel = swing.JPanel()
        radio1=swing.JRadioButton("HEX",True)
        radio2=swing.JRadioButton("BASE64")
        group = swing.ButtonGroup()
        group.add(radio1)
        group.add(radio2)
        rbPanel.add(radio1)
        rbPanel.add(radio2)
        boxHorizontal.add(rbPanel)
        boxVertical.add(boxHorizontal)
        # Add the text label and area to the text panel
        sPanel.add(boxVertical)
        # Add the text panel to the top of the main tab
        bTopPanel.add(sPanel, BorderLayout.SOUTH)

        topPanel.add(bTopPanel, BorderLayout.SOUTH)
		
        self.tab.add(topPanel, BorderLayout.NORTH) 
		
		#create HMAC Key Text Area:
        logPanel=swing.JPanel(BorderLayout())
		# Create the label for the text area
        boxVertical = swing.Box.createVerticalBox()
        boxHorizontal = swing.Box.createHorizontalBox()
        textLabel = swing.JLabel("Logs")
        boxHorizontal.add(textLabel)
        boxVertical.add(boxHorizontal)
        # Create the text area itself
        boxHorizontal = swing.Box.createHorizontalBox()
        logText = swing.JTextArea("",10,100)
        boxHorizontal.add(logText)
        boxVertical.add(boxHorizontal)
        # Add the text label and area to the text panel
        logPanel.add(boxVertical)
        # Add the text panel to the top of the main tab
        self.tab.add(logPanel, BorderLayout.SOUTH) 
		
		
        # Add the custom tab to Burp's UI
        callbacks.addSuiteTab(self)
Ejemplo n.º 10
0
    def initMenu(self):
        menubar = swing.JMenuBar()
        self.menuitems = []

        menu = swing.JMenu('File')
        menu.add(swing.JMenuItem('New model', actionPerformed = self.newModel, toolTipText = "Create a new model"))
        menu.add(swing.JMenuItem(OPENMODEL, actionPerformed = self.openModel, toolTipText = "Open a model from a tab-separated file (input file for FBACLT)"))
        menu.add(swing.JMenuItem('Import SBML', actionPerformed = self.openSBML, toolTipText = "Import SBML file"))

        #menu.add(swing.JMenuItem('Open extended model', actionPerformed = self.openModel, toolTipText = "Open a model"))
        items = [
            #swing.JMenuItem(SAVEMODEL, actionPerformed = self.saveModel, toolTipText = "Save the model as a workbook"),
            #swing.JMenuItem('Save extended model', actionPerformed = self.saveModel, toolTipText = "Save the model"),
            swing.JMenuItem('Save table', actionPerformed = self.saveTable, toolTipText = "Save the selected table in a tab-separated file"),
            swing.JMenuItem('Save graph', actionPerformed = self.saveGraph, toolTipText = "Save the selected graph in a tab-separated file"),#wtr#
#            swing.JMenuItem('Export SBML', actionPerformed = None),
            swing.JMenuItem('Open problem', actionPerformed = self.openProblem, toolTipText = "Open a problem from a tab-separated file"),
#            swing.JMenuItem('Close model', actionPerformed = self.closeModel)
            swing.JMenuItem('Open expression', actionPerformed = self.openExpression, toolTipText = "Open a gene/enzyme expression from a tab-separated file"),#Wataru#
            swing.JMenuItem('Open DPAplot', actionPerformed = self.openDPAplot, toolTipText = "Open a DPAplot output file for DPAsig problem"),#Wataru#
            swing.JMenuItem('Export SBML', actionPerformed = self.writeSBML, toolTipText = "Export to SBML format from SFBA format"),#Wataru#
            swing.JMenuItem('Export XGMML', actionPerformed = self.writeXGMML, toolTipText = "Export to XGMML (for Cytoscape).")
            ]
        for item in items: menu.add(item)
        menu.add(swing.JMenuItem('Print', actionPerformed = self.printTable, toolTipText = "Print the selected table"))
        menu.add(swing.JMenuItem('Exit', actionPerformed = self.exit))
        menubar.add(menu)
        self.menuitems += items

        menu = swing.JMenu('Edit')
        self.menuitems += [menu]
        menu.addSeparator()#wtr#
        menu.add(swing.JMenuItem('Insert rows', actionPerformed = self.insert))
        menu.add(swing.JMenuItem('Delete rows', actionPerformed = self.delete))
        menu.addSeparator();
        menu.add(swing.JMenuItem('Search', actionPerformed = self.filterRegEx, toolTipText = "Regular-expression based row filter"))
        menu.add(swing.JMenuItem('Merge', actionPerformed = self.merge, toolTipText = "Merge with another model"))
        menubar.add(menu)

        menu = swing.JMenu('View')
        self.menuitems += [menu]
        submenu = swing.JMenu('Show')
        submenu.add(swing.JMenuItem('Children', actionPerformed = self.showChildren, toolTipText = "Lower level in hierarchy"))
        submenu.add(swing.JMenuItem('Parents', actionPerformed = self.showParents, toolTipText = "Higher level in hierarchy"))
        submenu.add(swing.JMenuItem('All', actionPerformed = self.showAll, toolTipText = "All rows in the table"))
        menu.add(submenu)
        menu.addSeparator();
#        menu.add(swing.JMenuItem('XY plot', actionPerformed = self.showXY, toolTipText = "Show an XY-plot"))
#        menu.add(swing.JMenuItem('XYZ plot', actionPerformed = self.showXYZ, toolTipText = "Show an XYZ-plot")
        menu.add(swing.JMenuItem('Plot', actionPerformed = self.showPlot, toolTipText = "View plot output as a line plot, or 3D-plot output as a block plot"))

        submenu = swing.JMenu('Layout', toolTipText = "Show a graph representation")
        self.menuitems += [submenu]
        group = swing.ButtonGroup();
        for layoutclass in GraphPanel.LAYOUTCLASSES:
            rbMenuItem = swing.JRadioButtonMenuItem(layoutclass, layoutclass == GraphPanel.DEFAULT_LAYOUT, actionPerformed = self.showGraph);
            group.add(rbMenuItem);
            submenu.add(rbMenuItem);
        submenu.addSeparator()
        submenu.add(swing.JMenuItem('Custom',layoutclass==GraphPanel.DEFAULT_LAYOUT,actionPerformed = self.openGraph))#Wataru#
        submenu.addSeparator()
#        submenu.add(swing.JMenuItem('DOT', actionPerformed = self.dot, toolTipText = "Graphviz must be installed!"))
#        submenu.addSeparator()
        submenu.add(swing.JMenuItem('Logical metabolites', actionPerformed = self.setLogicals, toolTipText = "Define the metabolites to be shown as logical graph nodes"))
        menu.add(submenu)        
        menubar.add(menu)
        
        menu = swing.JMenu('Analyse')
        self.menuitems += [menu]
        group = swing.ButtonGroup()
        for problem in ProblemPanel.PROBLEMS:
            rbMenuItem = swing.JRadioButtonMenuItem(problem, problem == ProblemPanel.DEFAULT,
                actionPerformed = self.switchProgram);
            group.add(rbMenuItem)
            menu.add(rbMenuItem)
        menubar.add(menu)

        menu = swing.JMenu('Solve')#w#
        self.menuitems += [menu]
        menu.add(swing.JMenuItem('Write problem', actionPerformed = self.writeProblem, toolTipText = "Write the problem"))
        menu.add(swing.JMenuItem('Clear problem', actionPerformed = self.clearProblem, toolTipText = "Clear the problem"))
        menu.add(swing.JMenuItem('Externality tag', actionPerformed = self.setExternalTag, toolTipText = "Define the tag indicating external metabolites"))
        menu.addSeparator()
        self.solveMenu = swing.JMenuItem('Solve', actionPerformed = self.solve, toolTipText = "Solve the problem")
        self.stopMenu = swing.JMenuItem('Stop', actionPerformed = self.stop, enabled = False, toolTipText = "Stop solving")
        menu.add(swing.JMenuItem('Tolerance', actionPerformed = self.setTolerance, toolTipText = "Set Dual&Primal feasibility tolerance for Gurobi solver, tightening this tolerance can produce smaller constraint violations; default: 1e-6, Min: 1e-9, Max: 1e-2"))
        menu.add(self.solveMenu)
        menu.add(self.stopMenu)
        menubar.add(menu)

        menu = swing.JMenu('QSSPN')#w#---QSSPN analysis---
        self.menuitems += [menu]
        menu.add(swing.JMenuItem('Open QSSPN', actionPerformed = self.openQSSPN, toolTipText = "Open a QSSPN model file"))#w#
        menu.add(swing.JMenuItem('Import SPEPT', actionPerformed = self.openSPEPT, toolTipText = "Import snoopy SPEPT file and converted into QSSPN model"))#w#
        self.qrunMenu = swing.JMenuItem('Run', actionPerformed = self.runQSSPN, toolTipText = "Run simulation")#w#
        self.qstopMenu = swing.JMenuItem('Stop', actionPerformed = self.stopQSSPN, toolTipText = "Stop simulation")#w#
        items = [
#            swing.JMenuItem('Open GSMN', actionPerformed = self.openModel, toolTipText = "Open a GSMN model file"),
            swing.JMenuItem('Load control', actionPerformed = self.openControl, toolTipText = "Load control file for parameters"),#w#
            self.qrunMenu,#w#
            self.qstopMenu,#w#
            swing.JMenuItem('Plot trajectory', actionPerformed = self.plotTrajectory, toolTipText = "Plot trajectory from output"),#w#
            swing.JMenuItem('Save QSSPN', actionPerformed = self.saveQSSPN, toolTipText = "Save into QSSPN model file"),#w#
            swing.JMenuItem('Save control', actionPerformed = self.saveControl, toolTipText = "Save into QSSPN control file"),#w#
            swing.JMenuItem('Open output', actionPerformed = self.openOutput, toolTipText = "Open a QSSPN output file"),#w#
        ]#w#
        for item in items: menu.add(item)
        self.menuitems += items #active only if a qsspn model loaded
        menubar.add(menu)

        menu = swing.JMenu('Help')
        menu.add(swing.JMenuItem('Manual', actionPerformed = self.showHelp, toolTipText = "Show the JyMet manual"))
        #menu.add(swing.JMenuItem('About', actionPerformed = self.showAbout, toolTipText = "About JyMet"))
        menubar.add(menu)

        self.setJMenuBar(menubar)
def generateUI(file_list):
    # window
    frame = swing.JFrame("Marcksl1 prescreen tool")
    frame.setDefaultCloseOperation(swing.JFrame.DISPOSE_ON_CLOSE)
    frame.setPreferredSize(Dimension(700, 500))
    frame.setSize(Dimension(700, 500))
    frame.setLocationByPlatform(True)

    layout = GridBagLayout()
    frame.setLayout(layout)

    # image list
    lst_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0, 0,
                                                 0.5, 0.33)
    lst_constraints.fill = GridBagConstraints.BOTH
    lst = swing.JList(file_list)
    lst_scrollpane = swing.JScrollPane(lst)
    layout.setConstraints(lst_scrollpane, lst_constraints)
    frame.add(lst_scrollpane)

    # radio buttons
    radio_panel_constraints = quickSetGridBagConstraints(
        GridBagConstraints(), 1, 0, 0.25, 0.33)
    radio_panel_constraints.fill = GridBagConstraints.HORIZONTAL

    isvButton = swing.JRadioButton("ISV", True)
    dlavButton = swing.JRadioButton("DLAV")

    radio_group = swing.ButtonGroup()
    radio_group.add(isvButton)
    radio_group.add(dlavButton)

    radio_panel = swing.JPanel()
    radio_panel_layout = GridLayout(2, 1)
    radio_panel.setLayout(radio_panel_layout)
    radio_panel.add(isvButton)
    radio_panel.add(dlavButton)
    radio_panel.setBorder(
        swing.BorderFactory.createTitledBorder(
            swing.BorderFactory.createEtchedBorder(), "Vessel type"))
    layout.setConstraints(radio_panel, radio_panel_constraints)
    frame.add(radio_panel)

    # checkboxes
    chk_constraints = quickSetGridBagConstraints(GridBagConstraints(), 2, 0,
                                                 0.25, 0.33)
    chk_constraints.fill = GridBagConstraints.HORIZONTAL
    chkbox = swing.JCheckBox("Is lumenised?", True)
    layout.setConstraints(chkbox, chk_constraints)
    frame.add(chkbox)

    # add ROI button
    roi_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0,
                                                     1, 1, 0.16)
    roi_but_constraints.gridwidth = 3
    roi_but_constraints.fill = GridBagConstraints.BOTH
    roi_but = swing.JButton("Add current ROI")
    layout.setConstraints(roi_but, roi_but_constraints)
    frame.add(roi_but)

    # metadata display table
    mdtbl_constraints = quickSetGridBagConstraints(GridBagConstraints(), 0, 2,
                                                   1, 0.33)
    mdtbl_constraints.gridwidth = 3
    mdtbl_constraints.fill = GridBagConstraints.BOTH

    mdtbl_colnames = [
        'Experiment', 'Embryo', 'Imaged region index', 'ROI index',
        'Vessel type', 'Lumenised?'
    ]
    mdtbl_model = swing.table.DefaultTableModel(mdtbl_colnames, 10)
    mdtbl = swing.JTable()

    mdtbl_scrollpane = swing.JScrollPane(mdtbl)
    layout.setConstraints(mdtbl_scrollpane, mdtbl_constraints)
    frame.add(mdtbl_scrollpane)

    # buttons
    del_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 1,
                                                     3, 0.25, 0.16)
    del_but_constraints.fill = GridBagConstraints.BOTH
    del_but = swing.JButton("Delete selected ROI")
    layout.setConstraints(del_but, del_but_constraints)
    frame.add(del_but)

    save_but_constraints = quickSetGridBagConstraints(GridBagConstraints(), 2,
                                                      3, 0.25, 0.16)
    save_but_constraints.fill = GridBagConstraints.BOTH
    save_but = swing.JButton("Save...")
    layout.setConstraints(save_but, save_but_constraints)
    frame.add(save_but)

    # show window
    frame.setVisible(True)
    frame.pack()
 def drawUI(self):
     # Make a whole Burp Suite tab just for this plugin
     self.tab = swing.JPanel()
     # Draw title area
     self.uiLabel = swing.JLabel('Site Map to CSV Options')
     self.uiLabel.setFont(Font('Tahoma', Font.BOLD, 14))
     self.uiLabel.setForeground(Color(235,136,0))
     # UI for high-level options
     self.uiScopeOnly = swing.JRadioButton('In-scope only', True)
     self.uiScopeAll = swing.JRadioButton('All (disregard scope)', False)
     self.uiScopeButtonGroup = swing.ButtonGroup()
     self.uiScopeButtonGroup.add(self.uiScopeOnly)
     self.uiScopeButtonGroup.add(self.uiScopeAll)
     # Draw areas in the tab to keep different UI commands separate
     self.uipaneA = swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT)
     self.uipaneA.setMaximumSize(Dimension(900,125))
     self.uipaneA.setDividerSize(2)
     self.uipaneB = swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT)
     self.uipaneB.setDividerSize(2)
     self.uipaneA.setRightComponent(self.uipaneB)
     self.uipaneA.setBorder(BorderFactory.createLineBorder(Color.black))
     # Fill in UI area for response code filters
     self.uiCodesPanel = swing.JPanel()
     self.uiCodesPanel.setPreferredSize(Dimension(200, 75))
     self.uiCodesPanel.setBorder(EmptyBorder(10,10,10,10))
     self.uiCodesPanel.setLayout(BorderLayout())
     self.uiCodesLabel = swing.JLabel('Response code filters')
     self.uiCodesLabel.setFont(Font('Tahoma', Font.BOLD, 14))
     self.uiRcodePanel = swing.JPanel()
     self.uiRcodePanel.setLayout(GridLayout(1,1))
     self.uiRcode1xx = swing.JCheckBox('1XX  ', False)
     self.uiRcode2xx = swing.JCheckBox('2XX  ', True)
     self.uiRcode3xx = swing.JCheckBox('3XX  ', True)
     self.uiRcode4xx = swing.JCheckBox('4XX  ', True)
     self.uiRcode5xx = swing.JCheckBox('5XX     ', True)
     self.uiRcodePanel.add(self.uiRcode1xx)
     self.uiRcodePanel.add(self.uiRcode2xx)
     self.uiRcodePanel.add(self.uiRcode3xx)
     self.uiRcodePanel.add(self.uiRcode4xx)
     self.uiRcodePanel.add(self.uiRcode5xx)
     self.uiCodesPanel.add(self.uiCodesLabel,BorderLayout.NORTH)
     self.uiCodesPanel.add(self.uiRcodePanel,BorderLayout.WEST)
     self.uipaneA.setLeftComponent(self.uiCodesPanel)
     # Fill in UI area for initiating export to CSV
     self.uiExportPanel = swing.JPanel()
     self.uiExportPanel.setPreferredSize(Dimension(200, 75))
     self.uiExportPanel.setBorder(EmptyBorder(10,10,10,10))
     self.uiExportPanel.setLayout(BorderLayout())
     self.uiExportLabel = swing.JLabel('Export')
     self.uiExportLabel.setFont(Font('Tahoma', Font.BOLD, 14))
     self.uiMustHaveResponse = swing.JRadioButton('Must have a response     ', True)
     self.uiAllRequests = swing.JRadioButton('All (overrides response code filters)     ', False)
     self.uiResponseButtonGroup = swing.ButtonGroup()
     self.uiResponseButtonGroup.add(self.uiMustHaveResponse)
     self.uiResponseButtonGroup.add(self.uiAllRequests)
     self.uiExportRun = swing.JButton('Export',actionPerformed=self.exportAndSaveCsv)
     self.uiExportButtonPanel = swing.JPanel()
     self.uiExportButtonPanel.add(self.uiExportRun)    
     self.uiExportPanel.add(self.uiExportLabel,BorderLayout.NORTH)
     self.uiExportPanel.add(self.uiMustHaveResponse,BorderLayout.WEST)
     self.uiExportPanel.add(self.uiAllRequests,BorderLayout.CENTER)
     self.uiExportPanel.add(self.uiExportButtonPanel,BorderLayout.SOUTH)
     self.uipaneB.setLeftComponent(self.uiExportPanel)
     # Common UI stuff
     layout = swing.GroupLayout(self.tab)
     self.tab.setLayout(layout)
     # Thank you to Smeege (https://github.com/SmeegeSec/Burp-Importer/) for helping me figure out how this works.
     # He in turn gave credit to Antonio Sanchez (https://github.com/Dionach/HeadersAnalyzer/)
     layout.setHorizontalGroup(
         layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING)
         .addGroup(layout.createSequentialGroup()
             .addGap(10, 10, 10)
             .addGroup(layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING)
                 .addComponent(self.uiLabel)
                 .addGroup(layout.createSequentialGroup()
                     .addGap(10,10,10)
                     .addComponent(self.uiScopeOnly)
                     .addGap(10,10,10)
                     .addComponent(self.uiScopeAll))
                 .addGap(15,15,15)
                 .addComponent(self.uipaneA))
             .addContainerGap(26, lang.Short.MAX_VALUE)))
     layout.setVerticalGroup(
         layout.createParallelGroup(swing.GroupLayout.Alignment.LEADING)
         .addGroup(layout.createSequentialGroup()
             .addGap(15,15,15)
             .addComponent(self.uiLabel)
             .addGap(15,15,15)
             .addGroup(layout.createParallelGroup()
                 .addComponent(self.uiScopeOnly)
                 .addComponent(self.uiScopeAll))
             .addGap(20,20,20)
             .addComponent(self.uipaneA)
             .addGap(20,20,20)
             .addGap(5,5,5)
             .addGap(20,20,20)))
Ejemplo n.º 13
0
 def createFrame (self):
 
     # Create the find panel...
     #outer = Tk.Frame(self.frame,relief="groove",bd=2)
     #outer.pack(padx=2,pady=2)
     self.top = swing.JFrame()
     g.app.gui.addLAFListener( self.top )
     #self.top.setDefaultCloseOperation( swing.JFrame.EXIT_ON_CLOSE )
     self.top.title = self.title
     jtab = swing.JTabbedPane()
     self.top.add( jtab )
     cpane = swing.JPanel()
     jtab.addTab( "regular search", cpane )
     clnsearch = swing.JPanel()
     clnsearch.setName( "Leodialog" )
     jtab.addTab( "node search", clnsearch )
     #cpane = outer.getContentPane()
     cpane.setName( "Leodialog" )
     cpane.setLayout( awt.GridLayout( 3, 1 ) )
 
     
     #@    << Create the Find and Change panes >>
     #@+node:mork.20050127121143.6:<< Create the Find and Change panes >>
     #fc = Tk.Frame(outer, bd="1m")
     #fc.pack(anchor="n", fill="x", expand=1)
     findPanel = self.findPanel = swing.JTextArea()
     self.CutCopyPaste( findPanel )
     fspane = swing.JScrollPane( findPanel )
     
     self.changePanel = changePanel = swing.JTextArea()
     self.CutCopyPaste( changePanel )
     cpane2 = swing.JScrollPane( changePanel )
     splitpane = swing.JSplitPane( swing.JSplitPane.VERTICAL_SPLIT, fspane, cpane2 )
     splitpane.setDividerLocation( .5 )
     #outer.getContentPane().add( splitpane )
     cpane.add( splitpane )
     #outer.pack()
     
     
     # Removed unused height/width params: using fractions causes problems in some locales!
     #fpane = Tk.Frame(fc, bd=1)
     #cpane = Tk.Frame(fc, bd=1)
     
     #fpane.pack(anchor="n", expand=1, fill="x")
     #cpane.pack(anchor="s", expand=1, fill="x")
     
     # Create the labels and text fields...
     #flab = Tk.Label(fpane, width=8, text="Find:")
     #clab = Tk.Label(cpane, width=8, text="Change:")
     
     # Use bigger boxes for scripts.
     #self.find_text   = ftxt = Tk.Text(fpane,bd=1,relief="groove",height=4,width=20)
     #3self.change_text = ctxt = Tk.Text(cpane,bd=1,relief="groove",height=4,width=20)
     
     #fBar = Tk.Scrollbar(fpane,name='findBar')
     #cBar = Tk.Scrollbar(cpane,name='changeBar')
     
     # Add scrollbars.
     #for bar,txt in ((fBar,ftxt),(cBar,ctxt)):
     #    txt['yscrollcommand'] = bar.set
     #    bar['command'] = txt.yview
     #    bar.pack(side="right", fill="y")
     
     #flab.pack(side="left")
     #clab.pack(side="left")
     #ctxt.pack(side="right", expand=1, fill="both")
     #ftxt.pack(side="right", expand=1, fill="both")
     #@nonl
     #@-node:mork.20050127121143.6:<< Create the Find and Change panes >>
     #@nl
     #@    << Create four columns of radio and checkboxes >>
     #@+node:mork.20050127121143.7:<< Create four columns of radio and checkboxes >>
     #columnsFrame = Tk.Frame(outer,relief="groove",bd=2)
     #columnsFrame.pack(anchor="e",expand=1,padx="7p",pady="2p") # Don't fill.
     columnsFrame = swing.JPanel()
     columnsFrame.setLayout( swing.BoxLayout( columnsFrame, swing.BoxLayout.X_AXIS ) )
     cpane.add( columnsFrame, awt.BorderLayout.SOUTH )
     
     numberOfColumns = 4 # Number of columns
     columns = [] ; radioLists = [] ; checkLists = []; buttonGroups = []
     for i in xrange(numberOfColumns):
         #columns.append(Tk.Frame(columnsFrame,bd=1))
         jp = swing.JPanel()
         jp.setLayout( swing.BoxLayout( jp, swing.BoxLayout.Y_AXIS ) )
         columns.append( jp )
         radioLists.append([])
         checkLists.append([])
         buttonGroups.append( swing.ButtonGroup() )
     
     for i in xrange(numberOfColumns):
         columnsFrame.add( columns[ i ] )
         #columns[i].pack(side="left",padx="1p") # fill="y" Aligns to top. padx expands columns.
     
     radioLists[0] = [
         (self.dict["radio-find-type"],"Plain Search","plain-search"),  
         (self.dict["radio-find-type"],"Pattern Match Search","pattern-search"),
         (self.dict["radio-find-type"],"Script Search","script-search")]
     checkLists[0] = [
         ("Script Change",self.dict["script_change"])]
     checkLists[1] = [
         ("Whole Word",  self.dict["whole_word"]),
         ("Ignore Case", self.dict["ignore_case"]),
         ("Wrap Around", self.dict["wrap"]),
         ("Reverse",     self.dict["reverse"])]
     radioLists[2] = [
         (self.dict["radio-search-scope"],"Entire Outline","entire-outine"),
         (self.dict["radio-search-scope"],"Suboutline Only","suboutline-only"),  
         (self.dict["radio-search-scope"],"Node Only","node-only"),
         # I don't know what selection-only is supposed to do.
         (self.dict["radio-search-scope"],"Selection Only","selection-only")]
     checkLists[2] = []
     checkLists[3] = [
         ("Search Headline Text", self.dict["search_headline"]),
         ("Search Body Text",     self.dict["search_body"]),
         ("Mark Finds",           self.dict["mark_finds"]),
         ("Mark Changes",         self.dict["mark_changes"])]
         
         
     class rAction( swing.AbstractAction ):
         
         def __init__( self, name, var , val ):
             swing.AbstractAction.__init__( self, name )
             self.name = name
             self.var = var
             self.val = val
             
         def actionPerformed( self, aE ):
             self.var.set( self.val )
             
     class jcbAction( swing.AbstractAction ):
         
         def __init__( self, name, var ):
             swing.AbstractAction.__init__( self, name )
             self.var = var
             
         def actionPerformed( self, ae ):
         
             val = self.var.get()
             if val:
                 self.var.set( 0 )
             else:
                 self.var.set( 1 )
     
     for i in xrange(numberOfColumns):
         for var,name,val in radioLists[i]:
             aa = rAction( name, var, val )
             but = swing.JRadioButton( aa )
             columns[ i ].add( but )
             buttonGroups[ i ].add( but )
             #box = Tk.Radiobutton(columns[i],anchor="w",text=name,variable=var,value=val)
             #box.pack(fill="x")
             #box.bind("<1>", self.resetWrap)
             #if val == None: box.configure(state="disabled")
         for name, var in checkLists[i]:
             cbut = swing.JCheckBox( jcbAction( name, var ) )
             columns[ i ].add( cbut )
             #box = Tk.Checkbutton(columns[i],anchor="w",text=name,variable=var)
             #box.pack(fill="x")
             #box.bind("<1>", self.resetWrap)
             #if var is None: box.configure(state="disabled")
     
     for z in buttonGroups:
         
         elements = z.getElements()
         for x in elements:
             x.setSelected( True )
             break
     #@-node:mork.20050127121143.7:<< Create four columns of radio and checkboxes >>
     #@nl
     #@    << Create two rows of buttons >>
     #@+node:mork.20050127121143.8:<< Create two rows of buttons >>
     # Create the button panes
     secondGroup = swing.JPanel()
     secondGroup.setLayout( awt.GridLayout( 2, 3 , 10, 10 ) )
     cpane.add( secondGroup )
     #buttons  = Tk.Frame(outer,bd=1)
     #buttons2 = Tk.Frame(outer,bd=1)
     #buttons.pack (anchor="n",expand=1,fill="x")
     #buttons2.pack(anchor="n",expand=1,fill="x")
     class commandAA( swing.AbstractAction ):
         
         def __init__( self, name, command ):
             swing.AbstractAction.__init__( self, name )
             self.command = command
             
         def actionPerformed( self, aE ):
             self.command()
     
     
     # Create the first row of buttons
     #findButton=Tk.Button(buttons,width=8,text="Find",bd=4,command=self.findButton) # The default.
     #contextBox=Tk.Checkbutton(buttons,anchor="w",text="Show Context",variable=self.dict["batch"])
     #findAllButton=Tk.Button(buttons,width=8,text="Find All",command=self.findAllButton)
     findButton = swing.JButton( commandAA( "Find", self.findButton ) )
     contextBox = swing.JCheckBox( "Show Context" )
     findAllButton = swing.JButton( commandAA( "Find All", self.findAllButton ) )
     secondGroup.add( findButton )
     secondGroup.add( contextBox )
     secondGroup.add( findAllButton )
     
     #findButton.pack   (pady="1p",padx="25p",side="left")
     #contextBox.pack   (pady="1p",           side="left",expand=1)
     #findAllButton.pack(pady="1p",padx="25p",side="right",fill="x",)
     
     # Create the second row of buttons
     #changeButton    =Tk.Button(buttons2,width=8,text="Change",command=self.changeButton)
     #changeFindButton=Tk.Button(buttons2,        text="Change, Then Find",command=self.changeThenFindButton)
     #changeAllButton =Tk.Button(buttons2,width=8,text="Change All",command=self.changeAllButton)
     changeButton = swing.JButton( commandAA( "Change", self.changeButton ) )
     changeFindButton = swing.JButton( commandAA( "Change, Then Find", self.changeThenFindButton ) )
     changeAllButton = swing.JButton( commandAA( "Change All", self.changeAllButton ) )
     secondGroup.add( changeButton )
     secondGroup.add( changeFindButton )
     secondGroup.add( changeAllButton )
     
     #changeButton.pack    (pady="1p",padx="25p",side="left")
     #changeFindButton.pack(pady="1p",           side="left",expand=1)
     #changeAllButton.pack (pady="1p",padx="25p",side="right")
     #@nonl
     #@-node:mork.20050127121143.8:<< Create two rows of buttons >>
     #@nl
     
     self.createNodeSearchFrame( clnsearch )
     #self.top.setSize( 500, 500 )
     self.top.pack()
     size = self.top.getSize()
     size.width = size.width + 50
     self.top.setSize( size )
     splitpane.setDividerLocation( .5 )