def handle_exceptions(w3af_core): """ 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.core_helpers.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 w3af_core.exception_handler.get_unique_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 w3af_core.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 Github. title = _('Handled exceptions to report') bug_report_win = handled_bug_report.BugReportWindow(w3af_core, title) # Blocks waiting for user interaction bug_report_win.show()
def __init__(self, w3af_core, title): SimpleBaseWindow.__init__(self) exception_list = w3af_core.exception_handler.get_unique_exceptions() scan_id = w3af_core.exception_handler.get_scan_id() GithubMultiBugReport.__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)
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)