def __init__(self): HIGVBox.__init__(self) # The borders are consuming too much space on Maemo. Setting it to # 0 pixels while on Maemo if is_maemo(): self.set_border_width(0) self.set_spacing(0) # True if nothing has happened here page yet, i.e., it's okay to load a # scan from a file here. self.empty = True # The most recent name the inventory on this page has been saved under. self.saved_filename = None # The network inventory shown by this page. It may consist of multiple # scans. self.inventory = FilteredNetworkInventory() # The list of currently running scans (NmapCommand objects). self.jobs = [] # The list of running and finished scans shown on the Nmap Output page. self.scans_store = ScansListStore() self.top_box = HIGVBox() self.__create_toolbar() self.__create_command_toolbar() self.select_default_profile() self.scan_result = ScanResult(self.inventory, self.scans_store, scan_interface=self) self.host_view_selection = self.scan_result.get_host_selection() self.service_view_selection = self.scan_result.get_service_selection() self.host_view_selection.connect( 'changed', self.host_selection_changed) self.service_view_selection.connect( 'changed', self.service_selection_changed) host_page = self.scan_result.scan_result_notebook.open_ports.host host_page.host_view.get_selection().connect( 'changed', self.service_host_selection_changed) self.host_view_selection.connect( 'changed', self.host_selection_changed) self.scan_result.scan_result_notebook.nmap_output.connect( "changed", self._displayed_scan_change_cb) self.scan_result.scan_result_notebook.scans_list.remove_button.connect( "clicked", self._remove_scan_cb) # The hosts dict maps hostnames (as returned by HostInfo.get_hostname) # to HostInfo objects. self.hosts = {} # The services dict maps service names ("http") to lists of dicts of # the form # {'host': <HostInfo object>, 'hostname': u'example.com', # 'port_state': u'open', 'portid': u'22', 'protocol': u'tcp', # 'service_conf': u'10', 'service_extrainfo': u'protocol 2.0', # 'service_method': u'probed', 'service_name': u'ssh', # 'service_product': u'OpenSSH', 'service_version': u'4.3'} # In other words each dict has the same keys as an entry in # HostInfo.ports, with the addition of "host" and "hostname" keys. self.services = {} self.top_box.set_border_width(6) self.top_box.set_spacing(5) self.top_box._pack_noexpand_nofill(self.toolbar) self.top_box._pack_noexpand_nofill(self.command_toolbar) self._pack_noexpand_nofill(self.top_box) self._pack_expand_fill(self.scan_result) self.scan_result.scan_result_notebook.scans_list.cancel_button.connect( "clicked", self._cancel_scans_list_cb) self.update_cancel_button() # Create the filter GUI self.filter_bar = FilterBar() self.pack_start(self.filter_bar, False, True, 0) self.filter_bar.set_no_show_all(True) self.filter_timeout_id = None self.filter_bar.connect("changed", self.filter_changed) self.scan_result.filter_toggle_button.connect("toggled", self.filter_toggle_toggled) self.scan_result.filter_toggle_button.show()