Exemplo n.º 1
0
def handle_exceptions():
    '''
    In w3af's new exception handling method, some exceptions raising from
    plugins are "allowed" and the scan is NOT stopped because of them.
    
    At the same time, developers still want users to report their bugs.
    
    Because of that, we need to have a handler that at the end of the scan
    will allow the user to report the exceptions that were found during the
    scan.
    
    The main class in this game is core.controllers.coreHelpers.exception_handler
    and you should read it before this one.
    ''' 
    # Save the info to a file for later analysis by the user   
    for edata in exception_handler.get_all_exceptions():
        edata_str = edata.get_details()
        create_crash_file(edata_str)

    msg = 'Complete information related to the exceptions is available at "%s"'
    print msg  % gettempdir()
    
    # We do this because it would be both awful and useless to simply
    # print all exceptions one below the other in the console
    print exception_handler.generate_summary_str()
    
    # Create the dialog that allows the user to send the bugs, potentially more
    # than one since we captured all of them during the scan using the new
    # exception_handler, to Trac.
    title = _('Handled exceptions to report')
    bug_report_win = handled_bug_report.bug_report_window( title )
    
    # Blocks waiting for user interaction
    bug_report_win.show()
Exemplo n.º 2
0
    def __init__(self, w3af_core, title):
        simple_base_window.__init__(self)

        exception_list = w3af_core.exception_handler.get_all_exceptions()
        scan_id = w3af_core.exception_handler.get_scan_id()

        github_multi_bug_report.__init__(self, exception_list, scan_id)

        # We got here because of an autogenerated bug, not because of the user
        # going to the Help menu and then clicking on "Report a bug"
        self.autogen = True

        # Set generic window settings
        self.set_modal(True)
        self.set_title(title)

        self.vbox = gtk.VBox()
        self.vbox.set_border_width(10)

        # the label for the title
        self.title_label = gtk.Label()
        self.title_label.set_line_wrap(True)
        label_text = _(
            '<b>The following exceptions were raised and handled</b>')
        self.title_label.set_markup(label_text)
        self.title_label.show()

        # A gtk.TextView for the exception
        frame = gtk.Frame('Handled exceptions')
        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.set_size_request(200, 280)

        # Create the TreeStore to display all exceptions
        self.treestore = gtk.TreeStore(str, str)

        for edata in exception_list:
            where = edata.get_where()
            exception = str(edata.exception)
            tdata = [where,
                     exception]
            self.treestore.append(None, tdata)

        # create the TreeView using treestore
        self.treeview = gtk.TreeView(self.treestore)

        # First column that holds the icon and the location
        tvcol = gtk.TreeViewColumn('Location')

        cell = gtk.CellRendererPixbuf()
        pb = self.treeview.render_icon(
            gtk.STOCK_DND, gtk.ICON_SIZE_SMALL_TOOLBAR, None)
        cell.set_property('pixbuf', pb)
        tvcol.pack_start(cell, expand=False)

        cell = gtk.CellRendererText()
        tvcol.pack_start(cell, expand=False)
        tvcol.add_attribute(cell, "text", 0)
        self.treeview.append_column(tvcol)

        # Second column that holds the exception
        tvcol = gtk.TreeViewColumn('Exception')
        cell = gtk.CellRendererText()
        tvcol.pack_start(cell, expand=True)
        tvcol.add_attribute(cell, "text", 1)
        self.treeview.append_column(tvcol)

        sw.add(self.treeview)
        frame.add(sw)

        # the label for the rest of the message
        self.label = gtk.Label()
        self.label.set_line_wrap(True)
        label_text = _("<i>All these exceptions were stored in '%s' for your later"
                       ' review.</i>\n\nReporting these is recommended and will'
                       ' help us improve w3af. <b>You can contribute</b> to the'
                       ' w3af project and submit these exceptions to our'
                       ' bug tracking system from within this window only using'
                       ' <i>two clicks</i>.\n\n'
                       'w3af will only send the exception traceback and the'
                       ' version information to Github, no personal or '
                       ' confidential information is collected.')
        self.label.set_markup(label_text % gettempdir())
        self.label.show()

        self.vbox.pack_start(self.title_label, True, True, 10)
        self.vbox.pack_start(frame, True, True)
        self.vbox.pack_start(self.label, True, True, 10)

        # the buttons
        self.hbox = gtk.HBox()

        self.butt_cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
        self.butt_cancel.connect("clicked", self._handle_cancel)
        self.hbox.pack_start(self.butt_cancel, True, False)

        self.butt_send = gtk.Button(stock=gtk.STOCK_OK)
        self.butt_send.connect("clicked", self.report_bug)
        self.hbox.pack_start(self.butt_send, True, False)

        self.vbox.pack_start(self.hbox, True, False, 10)

        #self.resize(400,450)
        self.add(self.vbox)
        self.show_all()

        # This is a quick fix to get around the problem generated by
        # "set_selectable" that selects the text by default
        self.label.select_region(0, 0)
Exemplo n.º 3
0
    def __init__(self, w3af_core, title):
        simple_base_window.__init__(self)

        exception_list = w3af_core.exception_handler.get_all_exceptions()
        scan_id = w3af_core.exception_handler.get_scan_id()

        github_multi_bug_report.__init__(self, exception_list, scan_id)

        # We got here because of an autogenerated bug, not because of the user
        # going to the Help menu and then clicking on "Report a bug"
        self.autogen = True

        # Set generic window settings
        self.set_modal(True)
        self.set_title(title)

        self.vbox = gtk.VBox()
        self.vbox.set_border_width(10)

        # the label for the title
        self.title_label = gtk.Label()
        self.title_label.set_line_wrap(True)
        label_text = _(
            '<b>The following exceptions were raised and handled</b>')
        self.title_label.set_markup(label_text)
        self.title_label.show()

        # A gtk.TextView for the exception
        frame = gtk.Frame('Handled exceptions')
        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.set_size_request(200, 280)

        # Create the TreeStore to display all exceptions
        self.treestore = gtk.TreeStore(str, str)

        for edata in exception_list:
            where = edata.get_where()
            exception = str(edata.exception)
            tdata = [where, exception]
            self.treestore.append(None, tdata)

        # create the TreeView using treestore
        self.treeview = gtk.TreeView(self.treestore)

        # First column that holds the icon and the location
        tvcol = gtk.TreeViewColumn('Location')

        cell = gtk.CellRendererPixbuf()
        pb = self.treeview.render_icon(gtk.STOCK_DND,
                                       gtk.ICON_SIZE_SMALL_TOOLBAR, None)
        cell.set_property('pixbuf', pb)
        tvcol.pack_start(cell, expand=False)

        cell = gtk.CellRendererText()
        tvcol.pack_start(cell, expand=False)
        tvcol.add_attribute(cell, "text", 0)
        self.treeview.append_column(tvcol)

        # Second column that holds the exception
        tvcol = gtk.TreeViewColumn('Exception')
        cell = gtk.CellRendererText()
        tvcol.pack_start(cell, expand=True)
        tvcol.add_attribute(cell, "text", 1)
        self.treeview.append_column(tvcol)

        sw.add(self.treeview)
        frame.add(sw)

        # the label for the rest of the message
        self.label = gtk.Label()
        self.label.set_line_wrap(True)
        label_text = _(
            "<i>All these exceptions were stored in '%s' for your later"
            ' review.</i>\n\nReporting these is recommended and will'
            ' help us improve w3af. <b>You can contribute</b> to the'
            ' w3af project and submit these exceptions to our'
            ' bug tracking system from within this window only using'
            ' <i>two clicks</i>.\n\n'
            'w3af will only send the exception traceback and the'
            ' version information to Github, no personal or '
            ' confidential information is collected.')
        self.label.set_markup(label_text % gettempdir())
        self.label.show()

        self.vbox.pack_start(self.title_label, True, True, 10)
        self.vbox.pack_start(frame, True, True)
        self.vbox.pack_start(self.label, True, True, 10)

        # the buttons
        self.hbox = gtk.HBox()

        self.butt_cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
        self.butt_cancel.connect("clicked", self._handle_cancel)
        self.hbox.pack_start(self.butt_cancel, True, False)

        self.butt_send = gtk.Button(stock=gtk.STOCK_OK)
        self.butt_send.connect("clicked", self.report_bug)
        self.hbox.pack_start(self.butt_send, True, False)

        self.vbox.pack_start(self.hbox, True, False, 10)

        #self.resize(400,450)
        self.add(self.vbox)
        self.show_all()

        # This is a quick fix to get around the problem generated by
        # "set_selectable" that selects the text by default
        self.label.select_region(0, 0)