📄 np_tcpdisplay.py
字号:
pageheight='250m') d.canv.place_forget() del(d.canv) del(d) print 'printing %s' % (path) ############################################################################ def clear(self): self.display.clear_canvasses() print 'cleared' ############################################################################ def change_simp(self): print 'change_simp val %s' % (self.simp_curr.get()) self.TCP_imps.simp_curr = self.TCP_imps.imps_dict[self.simp_curr.get()] self.re_draw() ############################################################################ def change_cimp(self): print 'change_cimp val %s' % (self.cimp_curr.get()) self.TCP_imps.cimp_curr = self.TCP_imps.imps_dict[self.cimp_curr.get()] self.re_draw() ############################################################################ def make_impmenu(self, master): self.toolbar.ibar = Frame(self.toolbar, name='bar', relief=FLAT, borderwidth=0, bg='gray') self.toolbar.ibar.pack(side=LEFT) self.simpbm = BarButton(self.toolbar.ibar, text='Server-Imp', bg='gray', relief=RAISED, padx=2).menu self.cimpbm = BarButton(self.toolbar.ibar, text='Client-Imp', bg='gray', relief=RAISED, padx=2).menu smenu = self.simpbm cmenu = self.cimpbm self.simp_curr = StringVar(self) self.simp_curr.set(self.TCP_imps.simp_curr) self.cimp_curr = StringVar(self) self.cimp_curr.set(self.TCP_imps.cimp_curr) ilist = self.TCP_imps.imps_dict.values() for i in ilist: name = i.sig smenu.add_radiobutton(label=name, command=self.change_simp, variable=self.simp_curr, value=name, indicatoron=1, selectcolor='blue') cmenu.add_radiobutton(label=name, command=self.change_cimp, variable=self.cimp_curr, value=name, indicatoron=1, selectcolor='blue') if name == 'Auto': smenu.add_separator() cmenu.add_separator()############################################################################ def imp_menus_add(self, imp): self.simpbm.add_radiobutton(label=imp.sig, command=self.change_simp, variable=self.simp_curr, value=imp.sig, indicatoron=1, selectcolor='blue') self.cimpbm.add_radiobutton(label=imp.sig, command=self.change_cimp, variable=self.cimp_curr, value=imp.sig, indicatoron=1, selectcolor='blue') ############################################################################ def add_imps(self, simp, cimp): for i in [simp, cimp]: if i != None and not self.TCP_imps.imp_stored(i): self.TCP_imps.store(i) self.imp_menus_add(i)########################################################################################################################################################class ConnTransInfo(PListB): """ A listbox subclass displaying connection/transaction info. """ def __init__(self, master): """ __init__(self, master) Initialize a new instance. """ PListB.__init__(self, master, XYSCROLL) self.config(bg='white') #self.ht = canv_ht self.expand_what = {} self.transdata = None self.bind("<Double-Button-1>", self.expand) return ############################################################################ def list_trans(self, conn): """ list_trans(self, conn) """ self.delete(0, END) if self.transdata == None: # first time - get the data self.get_trans_data(conn) for s in self.transdata: #print s self.insert(END, s[0]) try: if self.expand_what[s[0]] == 1: for t in s[1]: self.insert(END, t[0]) try: if self.expand_what[t[0]] == 1: for l in t[1]: self.insert(END, l) except KeyError: pass except KeyError: pass self.insert(END, '') self.insert(END, ' --- End ---') self.insert(END, '') return ############################################################################ def get_trans_data(self, conn): """ get_trans_data(self, conn) """ tempdir = '/tmp' fnm = mktemp('.%d.trans_data' % (conn.id)) #print fnm conn.printself_with_trans(fnm=fnm) try: f = open(fnm, 'r') #print 'opened', fnm except IOError, s: print 'Couldn\'t open file %s for read: %s' % (fnm, s) sys.exit(1) self.transdata = td = [] self.expand_what = {} line = 0 in_trans = 0 in_links = 0 while 1: s = f.readline() line = line +1 if not len(s): break if s[0] =='\n': continue s = s[:-1] if not in_trans: p = string.find(s, ' transactions ') if p != -1 and string.find(s, ' dummy)') != -1: in_trans += 1 td.append(('', [])) td.append((s, [])) else: if string.find(s, ' Transaction #') == 0: tt = [] td.append(('', [])) td.append((s, tt)) self.expand_what[s] = 0 in_links = 0 else: if not in_links: if string.find(s, ' References') == 0: lt = [] tt.append(('', [])) tt.append((s, lt)) self.expand_what[s] = 0 in_links = 1 else: tt.append((s, [])) else: lt.append(s) os.remove(fnm) return ############################################################################ def expand(self, ev): """ expand(self, ev) """ items = self.curselection() try: items = map(string.atoi, items) except ValueError: pass key = self.get(items[0]) try: self.expand_what[key] = not self.expand_what[key] self.list_trans(None) except KeyError: pass return########################################################################################################################################################class ConnPktInfo(PCan): """ Display connection packet info """ def __init__(self, master, ht): """ __init__(self) Initialize a new instance. """ PCan.__init__(self, master, XYSCROLL) self.ht = ht #self.pack(side=TOP, fill=BOTH, expand=1) self.config(bg='white') return ############################################################################ def pkt_txt(self, p, y, extend = 'false', fold = 'false', scol=None, ccol=None, canv=None): """ pkt_txt(self) """ if canv == None: canv = self TEXT = canv.create_text way = p.dir flags = p.flags if flags & TH_ACK: ackstr = 'ack%s' % (Longstring(p.ack, width=10)) else: ackstr = '' if way == SERVER: dir = '<' if scol == None: col = 'darkblue' else: col = scol else: dir = '>' col = 'darkgreen' flagstr = '' if flags & TH_SYN: flagstr = flagstr+'S' if flags & TH_ACK: flagstr = flagstr+'A' if flags & TH_FIN: flagstr = flagstr+'F' if flags & TH_RST: flagstr = flagstr+'R' if flags & TH_PUSH: flagstr = flagstr+'P' if flags & TH_URG: flagstr = flagstr+'U' tstr = string.rjust('%.3f' % (p.tm/1000.0), 9) str = '%3d %s %s %s +%4d %s w:%5d %-5s' % (p.indx, tstr, dir, Longstring(p.seq, width=10), p.len, ackstr, p.window, flagstr) if fold == 'true': istr = '' else: istr = '%d ' % (p.indx) if extend == 'true': extstr = '%s' % (trig_str(p)) if p.prtt or p.trtt or p.delay: if (p.trig & TRIG_RTT): obkt = '' cbkt = '' else: obkt = '(' cbkt = ')' extstr = extstr + ' %s' % (istr) if p.prtt: extstr = extstr + ' %sprtt=%.3f%s' % (obkt, p.prtt/1000.0, cbkt) if p.trtt: extstr = extstr + ' trtt=%.3f ' % (p.trtt/1000.0) if p.delay: extstr = extstr + ' delay=%.3f ' % (p.delay/1000.0) if fold == 'true' and len(extstr): extstr = '\n\t' + extstr str = str + extstr #t=TEXT(0, y, fill=col, anchor=NW, text=str, font=("helvetica", 10)) t=TEXT(0, y, fill=col, anchor=NW, text=str, font=("-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*")) return canv.bbox(t) ############################################################################ def list_pkts(self, conn, ok, extend = 'false'): """ list_pkts(self) """ self.delete(ALL) plist = conn.pktlist x = ROOT_WI y2 = 0 for p in plist: x1, y1, x2, y2 = self.pkt_txt(p, y2, extend) x = MAX(x, x2+15) y = MAX(self.ht, y2+25) if not ok: t = self.create_text(0, y2+25, fill='red', anchor=NW, font=("helvetica", 8), text='Can\'t model this connection') bb = self.bbox(t) x = MAX(x, bb[2]+15) y = MAX(self.ht, bb[3]+25) self.config(scrollregion=(0,0,x,y)) return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -