def __create_widgets(self): """ """ self.__vbox = bw.BWVBox() self.__cartesian_radio = gtk.RadioButton(None, _("Cartesian")) self.__polar_radio = gtk.RadioButton(self.__cartesian_radio, _("Polar")) self.__cartesian_radio.connect('toggled', self.__change_system, INTERPOLATION_CARTESIAN) self.__polar_radio.connect('toggled', self.__change_system, INTERPOLATION_POLAR) self.__system_box = bw.BWHBox() self.__system_box.bw_pack_start_noexpand_nofill(self.__polar_radio) self.__system_box.bw_pack_start_noexpand_nofill(self.__cartesian_radio) self.__frames_box = bw.BWHBox() self.__frames_label = gtk.Label(_("Frames")) self.__frames_label.set_alignment(0.0, 0.5) self.__frames = gtk.Adjustment(self.radialnet.get_number_of_frames(), 1, 1000, 1) self.__frames.connect('value_changed', self.__change_frames) self.__frames_spin = gtk.SpinButton(self.__frames) self.__frames_box.bw_pack_start_expand_fill(self.__frames_label) self.__frames_box.bw_pack_start_noexpand_nofill(self.__frames_spin) self.__vbox.bw_pack_start_noexpand_nofill(self.__frames_box) self.__vbox.bw_pack_start_noexpand_nofill(self.__system_box) self.bw_add(self.__vbox) gobject.timeout_add(REFRESH_RATE, self.__update_animation)
def __create_widgets(self): """ """ # create body elements self.__services_page = ServicesPage(self.__node) self.__system_page = SystemPage(self.__node) self.__trace_page = TraceroutePage(self.__node) # packing notebook elements self.append_page(self.__system_page, bw.BWLabel(_("General"))) self.append_page(self.__services_page, bw.BWLabel(_("Services"))) self.append_page(self.__trace_page, bw.BWLabel(_("Traceroute")))
def __init__(self, radialnet): """ """ bw.BWExpander.__init__(self, _("Interpolation")) self.radialnet = radialnet self.__create_widgets()
def __init__(self, radialnet): """ """ bw.BWExpander.__init__(self, _("Layout")) self.radialnet = radialnet self.__create_widgets()
def __create_widgets(self): """ """ self.__params = bw.BWHBox() self.__fisheye_label = gtk.Label(_("<b>Fisheye</b> on ring")) self.__fisheye_label.set_use_markup(True) self.__ring = gtk.Adjustment(0, 0, self.__ring_max_value, 0.01, 0.01) self.__ring_spin = gtk.SpinButton(self.__ring) self.__ring_spin.set_digits(2) self.__ring_scale = gtk.HScale(self.__ring) self.__ring_scale.set_size_request(100, -1) self.__ring_scale.set_digits(2) self.__ring_scale.set_value_pos(gtk.POS_LEFT) self.__ring_scale.set_draw_value(False) self.__ring_scale.set_update_policy(gtk.UPDATE_CONTINUOUS) self.__interest_label = gtk.Label(_("with interest factor")) self.__interest = gtk.Adjustment(0, 0, 10, 0.01) self.__interest_spin = gtk.SpinButton(self.__interest) self.__interest_spin.set_digits(2) self.__spread_label = gtk.Label(_("and spread factor")) self.__spread = gtk.Adjustment(0, -1.0, 1.0, 0.01, 0.01) self.__spread_spin = gtk.SpinButton(self.__spread) self.__spread_spin.set_digits(2) self.__params.bw_pack_start_noexpand_nofill(self.__fisheye_label) self.__params.bw_pack_start_noexpand_nofill(self.__ring_spin) self.__params.bw_pack_start_expand_fill(self.__ring_scale) self.__params.bw_pack_start_noexpand_nofill(self.__interest_label) self.__params.bw_pack_start_noexpand_nofill(self.__interest_spin) self.__params.bw_pack_start_noexpand_nofill(self.__spread_label) self.__params.bw_pack_start_noexpand_nofill(self.__spread_spin) self.bw_pack_start_noexpand_nofill(self.__params) self.__ring.connect('value_changed', self.__change_ring) self.__interest.connect('value_changed', self.__change_interest) self.__spread.connect('value_changed', self.__change_spread) gobject.timeout_add(REFRESH_RATE, self.__update_fisheye)
def __init__(self, radialnet): """ """ bw.BWExpander.__init__(self, _("View")) self.set_expanded(True) self.radialnet = radialnet self.__create_widgets()
def __create_widgets(self): """ """ self.__hbox = bw.BWHBox() self.__layout = gtk.combo_box_new_text() self.__layout.append_text(_("Symmetric")) self.__layout.append_text(_("Weighted")) self.__layout.set_active(self.radialnet.get_layout()) self.__layout.connect('changed', self.__change_layout) self.__force = gtk.ToolButton(gtk.STOCK_REFRESH) self.__force.connect('clicked', self.__force_update) self.__hbox.bw_pack_start_expand_fill(self.__layout) self.__hbox.bw_pack_start_noexpand_nofill(self.__force) self.bw_add(self.__hbox) self.__check_layout()
def __create_widgets(self): """ """ self.__vbox = bw.BWVBox() self.__frame = bw.BWFrame(_("Scan form:")) self.__toolbar = ScanToolbar(self) self.__vbox.bw_pack_start_noexpand_nofill(self.__toolbar) self.__vbox.bw_pack_start_expand_fill(self.__frame) self.add(self.__vbox)
def __create_widgets(self): """ """ self.__radius = ControlVariable(_("Ring gap"), self.radialnet.get_ring_gap, self.radialnet.set_ring_gap) self.__label = gtk.Label(_("Lower ring gap")) self.__label.set_alignment(0.0, 0.5) self.__adjustment = gtk.Adjustment(self.radialnet.get_min_ring_gap(), 0, 50, 1) self.__spin = gtk.SpinButton(self.__adjustment) self.__spin.connect('value_changed', self.__change_lower) self.__lower_hbox = bw.BWHBox() self.__lower_hbox.bw_pack_start_expand_fill(self.__label) self.__lower_hbox.bw_pack_start_noexpand_nofill(self.__spin) self.bw_pack_start_noexpand_nofill(self.__radius) self.bw_pack_start_noexpand_nofill(self.__lower_hbox)
def __create_items(self): """ """ self.__hosts = gtk.ImageMenuItem(_("Hosts viewer")) self.__hosts.connect("activate", self.__hosts_viewer_callback) self.__hosts_image = gtk.Image() self.__hosts_image.set_from_stock(gtk.STOCK_INDEX, gtk.ICON_SIZE_MENU) self.__hosts.set_image(self.__hosts_image) self.append(self.__hosts) self.__hosts.show_all()
def __open_callback(self, widget=None): """ """ self.__chooser = gtk.FileChooserDialog(_("Open a Nmap XML file"), None, gtk.FILE_CHOOSER_ACTION_OPEN, FILE_CHOOSER_BUTTONS) self.__chooser.set_keep_above(True) if self.__chooser.run() == gtk.RESPONSE_OK: self.__window.parse_nmap_xml_file(self.__chooser.get_filename()) self.__chooser.destroy()
def __init__(self, nodes): """ """ bw.BWMainWindow.__init__(self) self.set_title(_("Hosts Viewer")) self.set_default_size(DIMENSION[0], DIMENSION[1]) self.set_position(gtk.WIN_POS_CENTER) self.__nodes = nodes self.__view = None self.__create_widgets()
def __init__(self, window): """ """ bw.BWMainWindow.__init__(self) self.set_title(_("Scan")) self.set_default_size(DIMENSION[0], DIMENSION[1]) self.__backend = None self.__window = window self.set_position(gtk.WIN_POS_CENTER) self.__create_widgets()
def __create_widgets(self): """ """ self.__tbox = bw.BWTable(1, 4) self.__tbox.bw_set_spacing(0) self.__vbox = bw.BWVBox() self.__tooltips = gtk.Tooltips() self.__jump_to = gtk.RadioToolButton(None, gtk.STOCK_JUMP_TO) self.__jump_to.set_tooltip(self.__tooltips, _("Change focus")) self.__jump_to.connect('toggled', self.__change_pointer, POINTER_JUMP_TO) self.__info = gtk.RadioToolButton(self.__jump_to, gtk.STOCK_INFO) self.__info.set_tooltip(self.__tooltips, _("Show information")) self.__info.connect('toggled', self.__change_pointer, POINTER_INFO) self.__group = gtk.RadioToolButton(self.__jump_to, gtk.STOCK_ADD) self.__group.set_tooltip(self.__tooltips, _("Group children")) self.__group.connect('toggled', self.__change_pointer, POINTER_GROUP) self.__region = gtk.RadioToolButton(self.__jump_to, gtk.STOCK_SELECT_COLOR) self.__region.set_tooltip(self.__tooltips, _("Fill region")) self.__region.connect('toggled', self.__change_pointer, POINTER_FILL) self.__region_color = gtk.combo_box_new_text() self.__region_color.append_text(_("Red")) self.__region_color.append_text(_("Yellow")) self.__region_color.append_text(_("Green")) self.__region_color.connect('changed', self.__change_region) self.__region_color.set_active(self.radialnet.get_region_color()) self.__tbox.bw_attach_next(self.__jump_to) self.__tbox.bw_attach_next(self.__info) self.__tbox.bw_attach_next(self.__group) self.__tbox.bw_attach_next(self.__region) self.__vbox.bw_pack_start_noexpand_nofill(self.__tbox) self.__vbox.bw_pack_start_noexpand_nofill(self.__region_color) self.bw_add(self.__vbox) self.__jump_to.set_active(True) self.__region_color.set_no_show_all(True) self.__region_color.hide()
def __create_widgets(self): """ """ self.__tooltips = gtk.Tooltips() self.__nmap = gtk.RadioToolButton(None, gtk.STOCK_FIND) self.__nmap.set_label('Nmap') self.__nmap.set_is_important(True) self.__nmap.connect('toggled', self.__backend_callback, BACKEND_NMAP) self.__nmap.set_tooltip(self.__tooltips, _("Nmap as backend")) self.__nmap.set_active(True) self.__backend_callback(self.__nmap, BACKEND_NMAP) self.insert(self.__nmap, 0)
def __create_widgets(self): """ """ self.__vbox = bw.BWVBox(spacing=0) self.__zoom = ControlVariable(_("Zoom"), self.radialnet.get_zoom, self.radialnet.set_zoom) self.__ring_gap = ControlRingGap(self.radialnet) self.__navigation = ControlNavigation(self.radialnet) self.__options = ControlOptions(self.radialnet) self.__options.set_border_width(0) self.__vbox.bw_pack_start_expand_nofill(self.__options) self.__vbox.bw_pack_start_noexpand_nofill(self.__navigation) self.__vbox.bw_pack_start_noexpand_nofill(self.__zoom) self.__vbox.bw_pack_start_noexpand_nofill(self.__ring_gap) self.bw_add(self.__vbox)
def __draw_rotate_control(self): """ """ xc, yc = self.__center_of_widget r, t = self.__rotate_node.get_coordinate() x, y = self.__rotate_node.to_cartesian() # draw text self.context.set_font_size(10) self.context.move_to(xc - 49, yc - 48) self.context.show_text(_("Navigation")) width = self.context.text_extents(str(int(t)))[2] self.context.move_to(xc + 49 - width - 2, yc - 48) self.context.show_text(str(round(t, 1))) self.context.set_line_width(1) self.context.stroke() # draw arc self.context.set_dash([1,2]) self.context.arc(xc, yc, 40, 0, 2 * math.pi) self.context.set_source_rgb(0.0, 0.0, 0.0) self.context.set_line_width(1) self.context.stroke() # draw node self.context.set_dash([1,0]) self.context.arc(xc + x, yc - y, self.__rotate_radius, 0, 2 * math.pi) if self.__rotating == True: self.context.set_source_rgb(0.0, 0.0, 0.0) else: self.context.set_source_rgb(1.0, 1.0, 1.0) self.context.fill_preserve() self.context.set_source_rgb(0.0, 0.0, 0.0) self.context.set_line_width(1) self.context.stroke() return False
def __draw_rotate_control(self): """ """ xc, yc = self.__center_of_widget r, t = self.__rotate_node.get_coordinate() x, y = self.__rotate_node.to_cartesian() # draw text self.context.set_font_size(10) self.context.move_to(xc - 49, yc - 48) self.context.show_text(_("Navigation")) width = self.context.text_extents(str(int(t)))[2] self.context.move_to(xc + 49 - width - 2, yc - 48) self.context.show_text(str(round(t, 1))) self.context.set_line_width(1) self.context.stroke() # draw arc self.context.set_dash([1, 2]) self.context.arc(xc, yc, 40, 0, 2 * math.pi) self.context.set_source_rgb(0.0, 0.0, 0.0) self.context.set_line_width(1) self.context.stroke() # draw node self.context.set_dash([1, 0]) self.context.arc(xc + x, yc - y, self.__rotate_radius, 0, 2 * math.pi) if self.__rotating == True: self.context.set_source_rgb(0.0, 0.0, 0.0) else: self.context.set_source_rgb(1.0, 1.0, 1.0) self.context.fill_preserve() self.context.set_source_rgb(0.0, 0.0, 0.0) self.context.set_line_width(1) self.context.stroke() return False
def __create_widgets(self): """ """ self.__liststore = gtk.ListStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING) self.__liststore.append([None, _("address")]) # address self.__liststore.append([None, _("hostname")]) # hostname self.__liststore.append([None, _("icon")]) # icon self.__liststore.append([None, _("latency")]) # latency self.__liststore.append([None, _("ring")]) # ring self.__liststore.append([None, _("region")]) # region self.__liststore.append([None, _("slow in/out")]) # slow in/out self.__cell_toggle = gtk.CellRendererToggle() self.__cell_toggle.set_property('activatable', True) self.__cell_toggle.connect('toggled', self.__change_option, self.__liststore) self.__column_toggle = gtk.TreeViewColumn('', self.__cell_toggle) self.__column_toggle.add_attribute(self.__cell_toggle, 'active', 0) self.__cell_text = gtk.CellRendererText() self.__column_text = gtk.TreeViewColumn(_("Enable"), self.__cell_text, text=1) self.__treeview = gtk.TreeView(self.__liststore) self.__treeview.set_enable_search(True) self.__treeview.set_search_column(1) self.__treeview.append_column(self.__column_toggle) self.__treeview.append_column(self.__column_text) self.add_with_viewport(self.__treeview) gobject.timeout_add(REFRESH_RATE, self.__update_options)
def __create_widgets(self): """ """ self.__scan = gtk.ToolButton(gtk.STOCK_FIND) self.__scan.set_label(_("Scan")) self.__scan.set_tooltip_text(_("Open scan window")) self.__scan.set_is_important(True) self.__scan.connect('clicked', self.__scan_callback) self.__open = gtk.ToolButton(gtk.STOCK_OPEN) self.__open.set_label(_("Open")) self.__open.set_tooltip_text(_("Open a file")) self.__open.set_is_important(True) self.__open.connect('clicked', self.__open_callback) self.__tools_menu = ToolsMenu(self.radialnet) self.__tools_button = gtk.MenuToolButton(gtk.STOCK_PREFERENCES) self.__tools_button.set_label(_("Tools")) self.__tools_button.set_tooltip_text(_("Show tools menu")) self.__tools_button.set_is_important(True) self.__tools_button.set_menu(self.__tools_menu) self.__tools_button.connect('clicked', self.__tools_callback) self.__control = gtk.ToggleToolButton(gtk.STOCK_PROPERTIES) self.__control.set_label(_("Controls")) self.__control.set_is_important(True) self.__control.connect('clicked', self.__control_callback) self.__control.set_tooltip_text(_("Show control panel")) self.__control.set_active(False) self.__fisheye = gtk.ToggleToolButton(gtk.STOCK_ZOOM_FIT) self.__fisheye.set_label(_("Fisheye")) self.__fisheye.set_is_important(True) self.__fisheye.connect('clicked', self.__fisheye_callback) self.__fisheye.set_tooltip_text(_("Enable fisheye")) self.__fisheye.set_active(False) self.__fullscreen = gtk.ToggleToolButton(gtk.STOCK_FULLSCREEN) self.__fullscreen.set_label(_("Fullscreen")) self.__fullscreen.set_is_important(True) self.__fullscreen.connect('clicked', self.__fullscreen_callback) self.__fullscreen.set_tooltip_text(_("Toggle fullscreen")) self.__about = gtk.ToolButton(gtk.STOCK_ABOUT) self.__about.set_label(_("About")) self.__about.set_is_important(True) self.__about.connect('clicked', self.__about_callback) self.__about.set_tooltip_text(_("About RadialNet")) self.__separator = gtk.SeparatorToolItem() self.__expander = gtk.SeparatorToolItem() self.__expander.set_expand(True) self.__expander.set_draw(False) self.insert(self.__scan, 0) self.insert(self.__open, 1) self.insert(self.__separator, 2) self.insert(self.__tools_button, 3) self.insert(self.__expander, 4) self.insert(self.__control, 5) self.insert(self.__fisheye, 6) self.insert(self.__fullscreen, 7) self.insert(self.__about, 8) gobject.timeout_add(REFRESH_RATE, self.__update)
def __create_widgets(self): """ """ if self.__node.get_info('trace') == None: self.__trace_label = gtk.Label(NO_TRACE_TEXT) self.pack_start(self.__trace_label, True, True) else: # add hops hops = self.__node.get_info('trace')['hops'] ttls = [int(i['ttl']) for i in hops] self.__cell = gtk.CellRendererText() self.__trace_scroll = bw.BWScrolledWindow() self.__trace_scroll.set_border_width(0) self.__trace_store = gtk.ListStore( gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.__trace_treeview = gtk.TreeView(self.__trace_store) count = 0 for i in range(1, max(ttls) + 1): if i in ttls: hop = hops[count] count += 1 self.__trace_store.append([ hop['ttl'], hop['rtt'], hop['ip'], hop['hostname'], HOP_COLOR['known'], True ]) else: self.__trace_store.append([ i, '', _("<unknown>"), '', HOP_COLOR['unknown'], True ]) self.__trace_column = list() for i in range(len(TRACE_HEADER)): column = gtk.TreeViewColumn(TRACE_HEADER[i], self.__cell, text=i) self.__trace_column.append(column) self.__trace_column[i].set_reorderable(True) self.__trace_column[i].set_resizable(True) self.__trace_column[i].set_attributes(self.__cell, text=i, background=4, editable=5) self.__trace_treeview.append_column(self.__trace_column[i]) self.__trace_column[0].set_sort_column_id(0) self.__trace_scroll.add_with_viewport(self.__trace_treeview) self.__trace_info = (self.__node.get_info('trace')['port'], len(self.__node.get_info('trace')['hops'])) self.__trace_label = bw.BWLabel(TRACE_TEXT % self.__trace_info) self.__trace_label.set_use_markup(True) self.bw_pack_start_expand_fill(self.__trace_scroll) self.bw_pack_start_noexpand_nofill(self.__trace_label)
def __create_widgets(self): """ """ self.__vbox = bw.BWVBox() self.__vbox.set_border_width(6) self.__cell = gtk.CellRendererText() self.__general_frame = bw.BWExpander(_("General information")) self.__sequences_frame = bw.BWExpander(_("Sequences")) self.__os_frame = bw.BWExpander(_("Operating System")) self.__sequences_frame.bw_add(gtk.Label(_("No sequence information."))) self.__os_frame.bw_add(gtk.Label(_("No OS information."))) # general information widgets self.__general = bw.BWTable(3, 2) self.__address_label = bw.BWSectionLabel(_("Address:")) self.__address_list = gtk.combo_box_entry_new_text() self.__address_list.child.set_editable(False) for address in self.__node.get_info('addresses'): params = address['type'], address['addr'] address_text = SYSTEM_ADDRESS_TEXT % params if address['vendor'] != None: address_text += " (%s)" % address['vendor'] self.__address_list.append_text(address_text) self.__address_list.set_active(0) self.__general.bw_attach_next(self.__address_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general.bw_attach_next(self.__address_list, yoptions=gtk.FILL) if self.__node.get_info('hostnames') != None: self.__hostname_label = bw.BWSectionLabel(_("Hostname:")) self.__hostname_list = gtk.combo_box_entry_new_text() self.__hostname_list.child.set_editable(False) for hostname in self.__node.get_info('hostnames'): params = hostname['type'], hostname['name'] self.__hostname_list.append_text(SYSTEM_ADDRESS_TEXT % params) self.__hostname_list.set_active(0) self.__general.bw_attach_next(self.__hostname_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general.bw_attach_next(self.__hostname_list, yoptions=gtk.FILL) if self.__node.get_info('uptime') != None: self.__uptime_label = bw.BWSectionLabel(_("Last boot:")) seconds = self.__node.get_info('uptime')['seconds'] lastboot = self.__node.get_info('uptime')['lastboot'] text = _("%s (%s seconds).") % (lastboot, seconds) self.__uptime_value = bw.BWLabel(text) self.__uptime_value.set_selectable(True) self.__uptime_value.set_line_wrap(False) self.__general.bw_attach_next(self.__uptime_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general.bw_attach_next(self.__uptime_value, yoptions=gtk.FILL) self.__general_frame.bw_add(self.__general) self.__general_frame.set_expanded(True) # sequences information widgets self.__sequences = bw.BWTable(5, 3) sequences = self.__node.get_info('sequences') if len(sequences) > 0: self.__sequences.attach(bw.BWSectionLabel(_("Class")), 1, 2, 0, 1) self.__sequences.attach(bw.BWSectionLabel(_("Values")), 2, 3, 0, 1) self.__sequences.attach(bw.BWSectionLabel(_("TCP *")), 0, 1, 1, 2) self.__sequences.attach(bw.BWSectionLabel(_("IP ID")), 0, 1, 2, 3) self.__sequences.attach(bw.BWSectionLabel(_("TCP Timestamp")), 0, 1, 3, 4) # tcp sequence values tcp = sequences['tcp'] tcp_class = bw.BWLabel(tcp['class']) tcp_class.set_selectable(True) self.__sequences.attach(tcp_class, 1, 2, 1, 2) tcp_values = gtk.combo_box_entry_new_text() for value in tcp['values']: tcp_values.append_text(value) tcp_values.set_active(0) self.__sequences.attach(tcp_values, 2, 3, 1, 2) tcp_note = bw.BWLabel() tcp_note.set_selectable(True) tcp_note.set_line_wrap(False) tcp_note.set_alignment(1.0, 0.5) tcp_note.set_markup(TCP_SEQ_NOTE % (tcp['index'], tcp['difficulty'])) self.__sequences.attach(tcp_note, 0, 3, 4, 5) # ip id sequence values ip_id = sequences['ip_id'] ip_id_class = bw.BWLabel(ip_id['class']) ip_id_class.set_selectable(True) self.__sequences.attach(ip_id_class, 1, 2, 2, 3) ip_id_values = gtk.combo_box_entry_new_text() for value in ip_id['values']: ip_id_values.append_text(value) ip_id_values.set_active(0) self.__sequences.attach(ip_id_values, 2, 3, 2, 3) # tcp sequence values tcp_ts = sequences['tcp_ts'] tcp_ts_class = bw.BWLabel(tcp_ts['class']) tcp_ts_class.set_selectable(True) self.__sequences.attach(tcp_ts_class, 1, 2, 3, 4) if tcp_ts['values'] != None: tcp_ts_values = gtk.combo_box_entry_new_text() for value in tcp_ts['values']: tcp_ts_values.append_text(value) tcp_ts_values.set_active(0) self.__sequences.attach(tcp_ts_values, 2, 3, 3, 4) self.__sequences_frame.bw_add(self.__sequences) # operating system information widgets self.__os = gtk.Notebook() self.__os.set_tab_pos(gtk.POS_LEFT) os = self.__node.get_info('os') if os != None: if os.has_key('matches'): self.__match_scroll = bw.BWScrolledWindow() self.__match_store = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_BOOLEAN) self.__match_treeview = gtk.TreeView(self.__match_store) for os_match in os['matches']: self.__match_store.append([ os_match['accuracy'], os_match['name'], os_match['db_line'], True ]) self.__match_column = list() for i in range(len(OSMATCH_HEADER)): column = gtk.TreeViewColumn(OSMATCH_HEADER[i], self.__cell, text=i) self.__match_column.append(column) self.__match_column[i].set_reorderable(True) self.__match_column[i].set_resizable(True) self.__match_column[i].set_attributes(self.__cell, text=i, editable=3) self.__match_column[i].set_sort_column_id(i) self.__match_treeview.append_column(self.__match_column[i]) self.__match_scroll.add_with_viewport(self.__match_treeview) self.__os.append_page(self.__match_scroll, bw.BWLabel(_("Match"))) if os.has_key('classes'): self.__class_scroll = bw.BWScrolledWindow() self.__class_store = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.__class_treeview = gtk.TreeView(self.__class_store) for os_class in os['classes']: os_gen = '' if os_class.has_key('os_gen'): os_gen = os_class['os_gen'] self.__class_store.append([ os_class['accuracy'], os_class['vendor'], os_class['type'], os_class['os_family'], os_gen, True ]) self.__class_column = list() for i in range(len(OSCLASS_HEADER)): column = gtk.TreeViewColumn(OSCLASS_HEADER[i], self.__cell, text=i) self.__class_column.append(column) self.__class_column[i].set_reorderable(True) self.__class_column[i].set_resizable(True) self.__class_column[i].set_attributes(self.__cell, text=i, editable=5) self.__class_column[i].set_sort_column_id(i) self.__class_treeview.append_column(self.__class_column[i]) self.__class_scroll.add_with_viewport(self.__class_treeview) self.__os.append_page(self.__class_scroll, bw.BWLabel(_("Class"))) self.__fp_viewer = bw.BWTextEditor() self.__fp_viewer.bw_modify_font(self.__font) self.__fp_viewer.bw_set_editable(False) self.__fp_viewer.bw_set_text(os['fingerprint']) self.__fp_ports = bw.BWHBox() self.__fp_label = bw.BWSectionLabel(_("Used ports:")) self.__fp_ports_list = gtk.combo_box_entry_new_text() self.__fp_ports_list.child.set_editable(False) self.__fp_vbox = bw.BWVBox() if os.has_key('used_ports'): used_ports = os['used_ports'] for port in used_ports: params = port['id'], port['protocol'], port['state'] self.__fp_ports_list.append_text(USED_PORTS_TEXT % params) self.__fp_ports_list.set_active(0) self.__fp_ports.bw_pack_start_noexpand_nofill(self.__fp_label) self.__fp_ports.bw_pack_start_expand_fill(self.__fp_ports_list) self.__fp_vbox.bw_pack_start_noexpand_nofill(self.__fp_ports) self.__os.append_page(self.__fp_viewer, bw.BWLabel(_("Fingerprint"))) self.__fp_vbox.bw_pack_start_expand_fill(self.__os) self.__os_frame.bw_add(self.__fp_vbox) self.__os_frame.set_expanded(True) self.__vbox.bw_pack_start_noexpand_nofill(self.__general_frame) self.__vbox.bw_pack_start_expand_fill(self.__os_frame) self.__vbox.bw_pack_start_noexpand_nofill(self.__sequences_frame) self.add_with_viewport(self.__vbox)
# along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import re import gtk import gobject import bestwidgets as bw from core.I18n import _ from gui.NodeNotebook import NodeNotebook from util.misc import ipv4_compare HOSTS_COLORS = ['#d5ffd5', '#ffffd5', '#ffd5d5'] HOSTS_HEADER = [_("ID"), _("#"), _("Hosts")] DIMENSION = (700, 400) IP_RE = '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' class HostsViewer(bw.BWMainWindow): """ """ def __init__(self, nodes): """ """ bw.BWMainWindow.__init__(self) self.set_title(_("Hosts Viewer")) self.set_default_size(DIMENSION[0], DIMENSION[1])
def __create_widgets(self): """ """ self.__font = pango.FontDescription('Monospace') self.__command = bw.BWHBox() self.__actions = bw.BWHBox() self.__label = bw.BWSectionLabel("Nmap") self.__entry = gtk.Entry() self.__entry.modify_font(self.__font) self.__entry.set_text(self.__cmd) self.__entry.connect("changed", self.set_command) self.__entry.connect("key-press-event", self.entry_check) self.__button = bw.BWStockButton(gtk.STOCK_EXECUTE, _("Scan"), gtk.ICON_SIZE_MENU) self.__button.connect("clicked", self.run) self.__load = bw.BWStockButton(gtk.STOCK_JUMP_TO, _("Load"), gtk.ICON_SIZE_MENU) self.__load.connect("clicked", self.load) self.__load.set_sensitive(False) self.__view = bw.BWTextView() self.__view.set_border_width(0) self.__view.bw_set_scroll(True) self.__view.bw_set_editable(False) self.__view.bw_modify_font(self.__font) self.__view.bw_set_wrap_mode(gtk.WRAP_WORD) self.__scroll = gtk.CheckButton(_("Auto-scroll")) self.__scroll.connect("toggled", self.__toggle_scroll) self.__scroll.set_active(True) self.create_text_tags() self.__colors = gtk.CheckButton(_("Highlight")) self.__colors.connect("toggled", self.__toggle_colors) self.__colors.set_active(True) self.__wrap = gtk.CheckButton(_("Wrap")) self.__wrap.connect("toggled", self.__toggle_wrap) self.__wrap.set_active(True) self.__actions.bw_pack_start_noexpand_nofill(self.__scroll) self.__actions.bw_pack_start_noexpand_nofill(self.__colors) self.__actions.bw_pack_start_noexpand_nofill(self.__wrap) self.__actions.bw_pack_start_expand_fill(self.__load) self.__statusbar = bw.BWStatusbar() self.__command.bw_pack_start_noexpand_nofill(self.__label) self.__command.bw_pack_start_expand_fill(self.__entry) self.__command.bw_pack_start_noexpand_nofill(self.__button) self.bw_pack_start_noexpand_nofill(self.__command) self.bw_pack_start_expand_fill(self.__view) self.bw_pack_start_noexpand_nofill(self.__actions) self.bw_pack_start_noexpand_nofill(self.__statusbar) self.show_all()
def __create_widgets(self): """ """ self.__vbox = bw.BWVBox() self.__vbox.set_border_width(6) self.__cell = gtk.CellRendererText() self.__general_frame = bw.BWExpander(_("General information")) self.__sequences_frame = bw.BWExpander(_("Sequences")) self.__os_frame = bw.BWExpander(_("Operating System")) self.__sequences_frame.bw_add(gtk.Label(_("No sequence information."))) self.__os_frame.bw_add(gtk.Label(_("No OS information."))) # general information widgets self.__general = bw.BWTable(3, 2) self.__address_label = bw.BWSectionLabel(_("Address:")) self.__address_list = gtk.combo_box_entry_new_text() self.__address_list.child.set_editable(False) for address in self.__node.get_info('addresses'): params = address['type'], address['addr'] address_text = SYSTEM_ADDRESS_TEXT % params if address['vendor'] != None: address_text += " (%s)" % address['vendor'] self.__address_list.append_text(address_text) self.__address_list.set_active(0) self.__general.bw_attach_next(self.__address_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general.bw_attach_next(self.__address_list, yoptions=gtk.FILL) if self.__node.get_info('hostnames') != None: self.__hostname_label = bw.BWSectionLabel(_("Hostname:")) self.__hostname_list = gtk.combo_box_entry_new_text() self.__hostname_list.child.set_editable(False) for hostname in self.__node.get_info('hostnames'): params = hostname['type'], hostname['name'] self.__hostname_list.append_text(SYSTEM_ADDRESS_TEXT % params) self.__hostname_list.set_active(0) self.__general.bw_attach_next(self.__hostname_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general.bw_attach_next(self.__hostname_list, yoptions=gtk.FILL) if self.__node.get_info('uptime') != None: self.__uptime_label = bw.BWSectionLabel(_("Last boot:")) seconds = self.__node.get_info('uptime')['seconds'] lastboot = self.__node.get_info('uptime')['lastboot'] text = _("%s (%s seconds).") % (lastboot, seconds) self.__uptime_value = bw.BWLabel(text) self.__uptime_value.set_selectable(True) self.__uptime_value.set_line_wrap(False) self.__general.bw_attach_next(self.__uptime_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general.bw_attach_next(self.__uptime_value, yoptions=gtk.FILL) self.__general_frame.bw_add(self.__general) self.__general_frame.set_expanded(True) # sequences information widgets self.__sequences = bw.BWTable(5, 3) sequences = self.__node.get_info('sequences') if len(sequences) > 0: self.__sequences.attach(bw.BWSectionLabel(_("Class")), 1, 2, 0, 1) self.__sequences.attach(bw.BWSectionLabel(_("Values")), 2, 3, 0, 1) self.__sequences.attach(bw.BWSectionLabel(_("TCP *")), 0, 1, 1, 2) self.__sequences.attach(bw.BWSectionLabel(_("IP ID")), 0, 1, 2, 3) self.__sequences.attach(bw.BWSectionLabel(_("TCP Timestamp")), 0, 1, 3, 4) # tcp sequence values tcp = sequences['tcp'] tcp_class = bw.BWLabel(tcp['class']) tcp_class.set_selectable(True) self.__sequences.attach(tcp_class, 1, 2, 1, 2) tcp_values = gtk.combo_box_entry_new_text() for value in tcp['values']: tcp_values.append_text(value) tcp_values.set_active(0) self.__sequences.attach(tcp_values, 2, 3, 1, 2) tcp_note = bw.BWLabel() tcp_note.set_selectable(True) tcp_note.set_line_wrap(False) tcp_note.set_alignment(1.0, 0.5) tcp_note.set_markup(TCP_SEQ_NOTE % (tcp['index'], tcp['difficulty'])) self.__sequences.attach(tcp_note, 0, 3, 4, 5) # ip id sequence values ip_id = sequences['ip_id'] ip_id_class = bw.BWLabel(ip_id['class']) ip_id_class.set_selectable(True) self.__sequences.attach(ip_id_class, 1, 2, 2, 3) ip_id_values = gtk.combo_box_entry_new_text() for value in ip_id['values']: ip_id_values.append_text(value) ip_id_values.set_active(0) self.__sequences.attach(ip_id_values, 2, 3, 2, 3) # tcp sequence values tcp_ts = sequences['tcp_ts'] tcp_ts_class = bw.BWLabel(tcp_ts['class']) tcp_ts_class.set_selectable(True) self.__sequences.attach(tcp_ts_class, 1, 2, 3, 4) if tcp_ts['values'] != None: tcp_ts_values = gtk.combo_box_entry_new_text() for value in tcp_ts['values']: tcp_ts_values.append_text(value) tcp_ts_values.set_active(0) self.__sequences.attach(tcp_ts_values, 2, 3, 3, 4) self.__sequences_frame.bw_add(self.__sequences) # operating system information widgets self.__os = gtk.Notebook() self.__os.set_tab_pos(gtk.POS_LEFT) os = self.__node.get_info('os') if os != None: if os.has_key('matches'): self.__match_scroll = bw.BWScrolledWindow() self.__match_store = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_BOOLEAN) self.__match_treeview = gtk.TreeView(self.__match_store) for os_match in os['matches']: self.__match_store.append([os_match['accuracy'], os_match['name'], os_match['db_line'], True]) self.__match_column = list() for i in range(len(OSMATCH_HEADER)): column = gtk.TreeViewColumn(OSMATCH_HEADER[i], self.__cell, text = i) self.__match_column.append(column) self.__match_column[i].set_reorderable(True) self.__match_column[i].set_resizable(True) self.__match_column[i].set_attributes(self.__cell, text = i, editable = 3) self.__match_column[i].set_sort_column_id(i) self.__match_treeview.append_column(self.__match_column[i]) self.__match_scroll.add_with_viewport(self.__match_treeview) self.__os.append_page(self.__match_scroll, bw.BWLabel(_("Match"))) if os.has_key('classes'): self.__class_scroll = bw.BWScrolledWindow() self.__class_store = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.__class_treeview = gtk.TreeView(self.__class_store) for os_class in os['classes']: os_gen = '' if os_class.has_key('os_gen'): os_gen = os_class['os_gen'] self.__class_store.append([os_class['accuracy'], os_class['vendor'], os_class['type'], os_class['os_family'], os_gen, True]) self.__class_column = list() for i in range(len(OSCLASS_HEADER)): column = gtk.TreeViewColumn(OSCLASS_HEADER[i], self.__cell, text = i) self.__class_column.append(column) self.__class_column[i].set_reorderable(True) self.__class_column[i].set_resizable(True) self.__class_column[i].set_attributes(self.__cell, text = i, editable = 5) self.__class_column[i].set_sort_column_id(i) self.__class_treeview.append_column(self.__class_column[i]) self.__class_scroll.add_with_viewport(self.__class_treeview) self.__os.append_page(self.__class_scroll, bw.BWLabel(_("Class"))) self.__fp_viewer = bw.BWTextEditor() self.__fp_viewer.bw_modify_font(self.__font) self.__fp_viewer.bw_set_editable(False) self.__fp_viewer.bw_set_text(os['fingerprint']) self.__fp_ports = bw.BWHBox() self.__fp_label = bw.BWSectionLabel(_("Used ports:")) self.__fp_ports_list = gtk.combo_box_entry_new_text() self.__fp_ports_list.child.set_editable(False) self.__fp_vbox = bw.BWVBox() if os.has_key('used_ports'): used_ports = os['used_ports'] for port in used_ports: params = port['id'], port['protocol'], port['state'] self.__fp_ports_list.append_text(USED_PORTS_TEXT % params) self.__fp_ports_list.set_active(0) self.__fp_ports.bw_pack_start_noexpand_nofill(self.__fp_label) self.__fp_ports.bw_pack_start_expand_fill(self.__fp_ports_list) self.__fp_vbox.bw_pack_start_noexpand_nofill(self.__fp_ports) self.__os.append_page(self.__fp_viewer, bw.BWLabel(_("Fingerprint"))) self.__fp_vbox.bw_pack_start_expand_fill(self.__os) self.__os_frame.bw_add(self.__fp_vbox) self.__os_frame.set_expanded(True) self.__vbox.bw_pack_start_noexpand_nofill(self.__general_frame) self.__vbox.bw_pack_start_expand_fill(self.__os_frame) self.__vbox.bw_pack_start_noexpand_nofill(self.__sequences_frame) self.add_with_viewport(self.__vbox)
def __create_widgets(self): """ """ self.__cell = gtk.CellRendererText() # texteditor widgets self.__texteditor = bw.BWTextEditor() self.__texteditor.bw_modify_font(self.__font) self.__texteditor.bw_set_editable(False) self.__texteditor.set_border_width(0) self.__select_combobox = gtk.combo_box_new_text() self.__select_combobox.connect('changed', self.__change_text_value) self.__viewer = bw.BWVBox(spacing=6) self.__viewer.set_border_width(6) self.__viewer.bw_pack_start_noexpand_nofill(self.__select_combobox) self.__viewer.bw_pack_start_expand_fill(self.__texteditor) self.__text = list() # ports information number_of_ports = len(self.__node.get_info('ports')) self.__ports_label = bw.BWLabel(_("Ports (%s)") % number_of_ports) self.__ports_scroll = bw.BWScrolledWindow() self.__ports_store = gtk.TreeStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.__ports_treeview = gtk.TreeView(self.__ports_store) for port in self.__node.get_info('ports'): color = SERVICE_COLORS[port['state']['state']] if port['service'].has_key('name'): service_name = port['service']['name'] else: service_name = _("<unknown>") if port['service'].has_key('method'): service_method = port['service']['method'] else: service_method = _("<none>") reference = self.__ports_store.append(None, [port['id'], port['protocol'], port['state']['state'], service_name, service_method, color, True]) for key in port['state']: self.__ports_store.append(reference, [port['id'], 'state', key, port['state'][key], '', 'white', True]) for key in port['service']: if key in ['servicefp', 'extrainfo']: text = _("[%d] service: %s") % (port['id'], key) self.__select_combobox.append_text(text) self.__text.append(port['service'][key]) value = _("<special field>") else: value = port['service'][key] self.__ports_store.append(reference, [port['id'], 'service', key, value, '', 'white', True]) for script in port['scripts']: text = _("[%d] script: %s") % (port['id'], script['id']) self.__select_combobox.append_text(text) self.__text.append(script['output']) self.__ports_store.append(reference, [port['id'], 'script', 'id', script['id'], _("<special field>"), 'white', True]) self.__ports_column = list() for i in range(len(PORTS_HEADER)): column = gtk.TreeViewColumn(PORTS_HEADER[i], self.__cell, text = i) self.__ports_column.append(column) self.__ports_column[i].set_reorderable(True) self.__ports_column[i].set_resizable(True) self.__ports_column[i].set_sort_column_id(i) self.__ports_column[i].set_attributes(self.__cell, text = i, background = 5, editable = 6) self.__ports_treeview.append_column(self.__ports_column[i]) self.__ports_scroll.add_with_viewport(self.__ports_treeview) # extraports information number_of_xports = 0 self.__xports_scroll = bw.BWScrolledWindow() self.__xports_store = gtk.TreeStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.__xports_treeview = gtk.TreeView(self.__xports_store) for xports in self.__node.get_info('extraports'): color = SERVICE_COLORS[xports['state']] number_of_xports += xports['count'] reference = self.__xports_store.append(None, [xports['count'], xports['state'], ", ".join(xports['reason']), color, True]) for xreason in xports['all_reason']: self.__xports_store.append(reference, [xreason['count'], xports['state'], xreason['reason'], 'white', True]) self.__xports_column = list() for i in range(len(EXTRAPORTS_HEADER)): column = gtk.TreeViewColumn(EXTRAPORTS_HEADER[i], self.__cell, text = i) self.__xports_column.append(column) self.__xports_column[i].set_reorderable(True) self.__xports_column[i].set_resizable(True) self.__xports_column[i].set_sort_column_id(i) self.__xports_column[i].set_attributes(self.__cell, text = i, background = 3, editable = 4) self.__xports_treeview.append_column(self.__xports_column[i]) xports_label_text = _("Extraports (%s)") % number_of_xports self.__xports_label = bw.BWLabel(xports_label_text) self.__xports_scroll.add_with_viewport(self.__xports_treeview) self.append_page(self.__ports_scroll, self.__ports_label) self.append_page(self.__xports_scroll, self.__xports_label) self.append_page(self.__viewer, bw.BWLabel(_("Special fields"))) if len(self.__text) > 0: self.__select_combobox.set_active(0)
def __create_widgets(self): """ """ self.__cell = gtk.CellRendererText() # texteditor widgets self.__texteditor = bw.BWTextEditor() self.__texteditor.bw_modify_font(self.__font) self.__texteditor.bw_set_editable(False) self.__texteditor.set_border_width(0) self.__select_combobox = gtk.combo_box_new_text() self.__select_combobox.connect('changed', self.__change_text_value) self.__viewer = bw.BWVBox(spacing=6) self.__viewer.set_border_width(6) self.__viewer.bw_pack_start_noexpand_nofill(self.__select_combobox) self.__viewer.bw_pack_start_expand_fill(self.__texteditor) self.__text = list() # ports information number_of_ports = len(self.__node.get_info('ports')) self.__ports_label = bw.BWLabel(_("Ports (%s)") % number_of_ports) self.__ports_scroll = bw.BWScrolledWindow() self.__ports_store = gtk.TreeStore( gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.__ports_treeview = gtk.TreeView(self.__ports_store) for port in self.__node.get_info('ports'): color = SERVICE_COLORS[port['state']['state']] if port['service'].has_key('name'): service_name = port['service']['name'] else: service_name = _("<unknown>") if port['service'].has_key('method'): service_method = port['service']['method'] else: service_method = _("<none>") reference = self.__ports_store.append(None, [ port['id'], port['protocol'], port['state']['state'], service_name, service_method, color, True ]) for key in port['state']: self.__ports_store.append(reference, [ port['id'], 'state', key, port['state'][key], '', 'white', True ]) for key in port['service']: if key in ['servicefp', 'extrainfo']: text = _("[%d] service: %s") % (port['id'], key) self.__select_combobox.append_text(text) self.__text.append(port['service'][key]) value = _("<special field>") else: value = port['service'][key] self.__ports_store.append( reference, [port['id'], 'service', key, value, '', 'white', True]) for script in port['scripts']: text = _("[%d] script: %s") % (port['id'], script['id']) self.__select_combobox.append_text(text) self.__text.append(script['output']) self.__ports_store.append(reference, [ port['id'], 'script', 'id', script['id'], _("<special field>"), 'white', True ]) self.__ports_column = list() for i in range(len(PORTS_HEADER)): column = gtk.TreeViewColumn(PORTS_HEADER[i], self.__cell, text=i) self.__ports_column.append(column) self.__ports_column[i].set_reorderable(True) self.__ports_column[i].set_resizable(True) self.__ports_column[i].set_sort_column_id(i) self.__ports_column[i].set_attributes(self.__cell, text=i, background=5, editable=6) self.__ports_treeview.append_column(self.__ports_column[i]) self.__ports_scroll.add_with_viewport(self.__ports_treeview) # extraports information number_of_xports = 0 self.__xports_scroll = bw.BWScrolledWindow() self.__xports_store = gtk.TreeStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.__xports_treeview = gtk.TreeView(self.__xports_store) for xports in self.__node.get_info('extraports'): color = SERVICE_COLORS[xports['state']] number_of_xports += xports['count'] reference = self.__xports_store.append(None, [ xports['count'], xports['state'], ", ".join(xports['reason']), color, True ]) for xreason in xports['all_reason']: self.__xports_store.append(reference, [ xreason['count'], xports['state'], xreason['reason'], 'white', True ]) self.__xports_column = list() for i in range(len(EXTRAPORTS_HEADER)): column = gtk.TreeViewColumn(EXTRAPORTS_HEADER[i], self.__cell, text=i) self.__xports_column.append(column) self.__xports_column[i].set_reorderable(True) self.__xports_column[i].set_resizable(True) self.__xports_column[i].set_sort_column_id(i) self.__xports_column[i].set_attributes(self.__cell, text=i, background=3, editable=4) self.__xports_treeview.append_column(self.__xports_column[i]) xports_label_text = _("Extraports (%s)") % number_of_xports self.__xports_label = bw.BWLabel(xports_label_text) self.__xports_scroll.add_with_viewport(self.__xports_treeview) self.append_page(self.__ports_scroll, self.__ports_label) self.append_page(self.__xports_scroll, self.__xports_label) self.append_page(self.__viewer, bw.BWLabel(_("Special fields"))) if len(self.__text) > 0: self.__select_combobox.set_active(0)
def __create_widgets(self): """ """ if self.__node.get_info('trace') == None: self.__trace_label = gtk.Label(NO_TRACE_TEXT) self.pack_start(self.__trace_label, True, True) else: # add hops hops = self.__node.get_info('trace')['hops'] ttls = [int(i['ttl']) for i in hops] self.__cell = gtk.CellRendererText() self.__trace_scroll = bw.BWScrolledWindow() self.__trace_scroll.set_border_width(0) self.__trace_store = gtk.ListStore(gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.__trace_treeview = gtk.TreeView(self.__trace_store) count = 0 for i in range(1, max(ttls) + 1): if i in ttls: hop = hops[count] count += 1 self.__trace_store.append([hop['ttl'], hop['rtt'], hop['ip'], hop['hostname'], HOP_COLOR['known'], True]) else: self.__trace_store.append([i, '', _("<unknown>"), '', HOP_COLOR['unknown'], True]) self.__trace_column = list() for i in range(len(TRACE_HEADER)): column = gtk.TreeViewColumn(TRACE_HEADER[i], self.__cell, text = i) self.__trace_column.append(column) self.__trace_column[i].set_reorderable(True) self.__trace_column[i].set_resizable(True) self.__trace_column[i].set_attributes(self.__cell, text = i, background = 4, editable = 5) self.__trace_treeview.append_column(self.__trace_column[i]) self.__trace_column[0].set_sort_column_id(0) self.__trace_scroll.add_with_viewport(self.__trace_treeview) self.__trace_info = (self.__node.get_info('trace')['port'], len(self.__node.get_info('trace')['hops'])) self.__trace_label = bw.BWLabel(TRACE_TEXT % self.__trace_info) self.__trace_label.set_use_markup(True) self.bw_pack_start_expand_fill(self.__trace_scroll) self.bw_pack_start_noexpand_nofill(self.__trace_label)
# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import gtk import pango import gobject import bestwidgets as bw from core.I18n import _ PORTS_HEADER = [ _("Port"), _("Protocol"), _("State"), _("Service"), _("Method") ] EXTRAPORTS_HEADER = [_("Count"), _("State"), _("Reasons")] SERVICE_COLORS = { 'open': '#ffd5d5', 'closed': '#d5ffd5', 'filtered': '#ffffd5', 'unfiltered': '#ffd5d5', 'open|filtered': '#ffd5d5', 'closed|filtered': '#d5ffd5' }
# GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import gtk import pango import gobject import bestwidgets as bw from core.I18n import _ PORTS_HEADER = [_("Port"), _("Protocol"), _("State"), _("Service"), _("Method")] EXTRAPORTS_HEADER = [_("Count"), _("State"), _("Reasons")] SERVICE_COLORS = {'open' : '#ffd5d5', 'closed' : '#d5ffd5', 'filtered' : '#ffffd5', 'unfiltered' : '#ffd5d5', 'open|filtered' : '#ffd5d5', 'closed|filtered' : '#d5ffd5'} TRACE_HEADER = [_("TTL"), _("RTT"), _("IP"), _("Hostname")]
# You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import re import gtk import gobject import bestwidgets as bw from core.I18n import _ from gui.NodeNotebook import NodeNotebook from util.misc import ipv4_compare HOSTS_COLORS = ['#d5ffd5', '#ffffd5', '#ffd5d5'] HOSTS_HEADER = [_("ID"), _("#"), _("Hosts")] DIMENSION = (700, 400) IP_RE = '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' class HostsViewer(bw.BWMainWindow): """ """ def __init__(self, nodes): """ """ bw.BWMainWindow.__init__(self) self.set_title(_("Hosts Viewer")) self.set_default_size(DIMENSION[0], DIMENSION[1]) self.set_position(gtk.WIN_POS_CENTER)