def __init__(self, radialnet): """ """ HIGExpanderRNet.__init__(self, 'Interpolation') self.radialnet = radialnet self.__create_widgets()
def __init__(self, radialnet): """ """ HIGExpanderRNet.__init__(self, 'Layout') self.radialnet = radialnet self.__create_widgets()
def __init__(self, radialnet): """ """ HIGExpanderRNet.__init__(self, 'View') self.set_expanded(True) self.radialnet = radialnet self.__create_widgets()
def __create_widgets(self): """ """ self.__vbox = HIGVBox() self.__vbox.set_border_width(6) self.__cell = gtk.CellRendererText() self.__general_frame = HIGExpanderRNet('General information') self.__sequences_frame = HIGExpanderRNet('Sequences') self.__os_frame = HIGExpanderRNet('Operating System') self.__sequences_frame._add(gtk.Label('No sequence information.')) self.__os_frame._add(gtk.Label('No OS information.')) # general information widgets self.__general = HIGTableRNet(3, 2) self.__address_label = HIGSectionLabel('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['addrtype'], address['addr'] address_text = SYSTEM_ADDRESS_TEXT % params if address.get('vendor', None): address_text += " (%s)" % address['vendor'] self.__address_list.append_text(address_text) self.__address_list.set_active(0) self.__general._attach_next(self.__address_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general._attach_next(self.__address_list, yoptions=gtk.FILL) if self.__node.get_info('hostnames') is not None: self.__hostname_label = HIGSectionLabel('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._attach_next(self.__hostname_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general._attach_next(self.__hostname_list, yoptions=gtk.FILL) if self.__node.get_info('uptime') is not None: self.__uptime_label = HIGSectionLabel('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 = HIGLabel(text) self.__uptime_value.set_selectable(True) self.__uptime_value.set_line_wrap(False) self.__general._attach_next(self.__uptime_label, yoptions=gtk.FILL, xoptions=gtk.FILL) self.__general._attach_next(self.__uptime_value, yoptions=gtk.FILL) self.__general_frame._add(self.__general) self.__general_frame.set_expanded(True) # sequences information widgets self.__sequences = HIGTableRNet(5, 3) sequences = self.__node.get_info('sequences') if len(sequences) > 0: self.__sequences.attach(HIGSectionLabel('Class'), 1, 2, 0, 1) self.__sequences.attach(HIGSectionLabel('Values'), 2, 3, 0, 1) self.__sequences.attach(HIGSectionLabel('TCP *'), 0, 1, 1, 2) self.__sequences.attach(HIGSectionLabel('IP ID'), 0, 1, 2, 3) self.__sequences.attach(HIGSectionLabel('TCP Timestamp'), 0, 1, 3, 4) # tcp sequence values tcp = sequences['tcp'] tcp_class = HIGLabel(tcp.get('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 = HIGLabel() tcp_note.set_selectable(True) tcp_note.set_line_wrap(False) tcp_note.set_alignment(1.0, 0.5) if tcp['index']: 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 = HIGLabel(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 = HIGLabel(tcp_ts['class']) tcp_ts_class.set_selectable(True) self.__sequences.attach(tcp_ts_class, 1, 2, 3, 4) if tcp_ts.get('values', None) is not 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._add(self.__sequences) # operating system information widgets self.__os = gtk.Notebook() # XXX Setting this custom positioning causes a hard gtk bug (verified # on Windows 7 at least, likely to happen under Vista too. Used # gtk 2.14.7 and gtk 2.12.9 both with pygtk 2.12.1). #self.__os.set_tab_pos(gtk.POS_LEFT) os = self.__node.get_info('os') if os is not None: if os.has_key('matches'): self.__match_scroll = HIGScrolledWindow() 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']: if 'accuracy' not in os_match: # this may happen with older .usr continue 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, HIGLabel('Match')) if os.has_key('classes'): self.__class_scroll = HIGScrolledWindow() 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, HIGLabel('Class')) self.__fp_viewer = HIGTextEditor() self.__fp_viewer._modify_font(self.__font) self.__fp_viewer._set_editable(False) self.__fp_viewer._set_text(os['fingerprint']) self.__fp_ports = HIGHBox() self.__fp_label = HIGSectionLabel('Used ports:') self.__fp_ports_list = gtk.combo_box_entry_new_text() self.__fp_ports_list.child.set_editable(False) self.__fp_vbox = HIGVBox() 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._pack_noexpand_nofill(self.__fp_label) self.__fp_ports._pack_expand_fill(self.__fp_ports_list) self.__fp_vbox._pack_noexpand_nofill(self.__fp_ports) self.__os.append_page(self.__fp_viewer, HIGLabel('Fingerprint')) self.__fp_vbox._pack_expand_fill(self.__os) self.__os_frame._add(self.__fp_vbox) self.__os_frame.set_expanded(True) self.__vbox._pack_noexpand_nofill(self.__general_frame) self.__vbox._pack_expand_fill(self.__os_frame) self.__vbox._pack_noexpand_nofill(self.__sequences_frame) self.add_with_viewport(self.__vbox)