8,6 → 8,11 |
using System.Text.RegularExpressions; |
using System.Xml; |
|
// GENERAL DESIGN |
// |
// Methods which are not running in the main application thread |
// are not allowed no interact with GUI elemenents. |
|
// FIXME: |
// - add soap validation |
// - icons for all items in the tree |
14,7 → 19,7 |
// - use pool of threads? |
// - do not store intermediate info, just row packets and the parsed fragments to display |
// - make the text fragment store switchable |
// - set locks and check exceptions during log writing (?) |
// - set locks during log writing (?) |
namespace TCPproxy |
{ |
public class MainForm : Form |
70,7 → 75,7 |
private MenuItem viewMenu; |
private MenuItem clearMainMenuItem; |
private MenuItem messagesMenu; |
private MenuItem saveFullLogMenuItem; |
private MenuItem saveLogMenuItem; |
private MenuItem saveTcoLogMenuItem; |
private MenuItem saveHttpLogMenuItem; |
private MenuItem saveXmlLogMenuItem; |
82,7 → 87,7 |
private MenuItem tcpShowByDirectionMenuItem; |
private MenuItem tcpShowByTimeMenuItem; |
private MenuItem menuSeparator4; |
private MenuItem autoExpandMenuItem; |
private MenuItem autoExpandMainMenuItem; |
private MenuItem wordWrapMainMenuItem; |
private MenuItem helpMenu; |
private Panel panel1; |
100,6 → 105,7 |
private MenuItem recentListeningNoItem; |
private SaveFileDialog saveBinLogDialog; |
private OpenFileDialog loadBinLogDialog; |
private MenuItem autoExpandMenuItem; |
private MenuItem aboutMenuItem; |
#endregion web forms fields |
|
111,57 → 117,58 |
private void InitializeComponent() { |
this.components = new System.ComponentModel.Container(); |
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); |
this.wordWrapMenuItem = new MenuItem(); |
this.treeImageList = new ImageList(this.components); |
this.messagesContextMenu = new ContextMenu(); |
this.selectAllmenuItem = new MenuItem(); |
this.copyMenuItem = new MenuItem(); |
this.statusBar = new StatusBar(); |
this.connectionStatusBar = new StatusBarPanel(); |
this.saveButtonImageList = new ImageList(this.components); |
this.closeConnectionMenuItem = new MenuItem(); |
this.viewContextMenu = new ContextMenu(); |
this.saveLogDialog = new SaveFileDialog(); |
this.mainMenu = new MainMenu(this.components); |
this.fileMenu = new MenuItem(); |
this.startMenuItem = new MenuItem(); |
this.stopMenuItem = new MenuItem(); |
this.recentListeningMenu = new MenuItem(); |
this.recentListeningNoItem = new MenuItem(); |
this.menuSeparator5 = new MenuItem(); |
this.loadBinLogMenuItem = new MenuItem(); |
this.saveBinLogMenuItem = new MenuItem(); |
this.menuSeparator1 = new MenuItem(); |
this.saveFullLogMenuItem = new MenuItem(); |
this.saveTcoLogMenuItem = new MenuItem(); |
this.saveHttpLogMenuItem = new MenuItem(); |
this.saveXmlLogMenuItem = new MenuItem(); |
this.menuSeparator2 = new MenuItem(); |
this.exitMenuItem = new MenuItem(); |
this.viewMenu = new MenuItem(); |
this.clearMainMenuItem = new MenuItem(); |
this.messagesMenu = new MenuItem(); |
this.allMessagesMenuItem = new MenuItem(); |
this.infoMessagesMenuItem = new MenuItem(); |
this.importantMessagesMenuItem = new MenuItem(); |
this.menuSeparator3 = new MenuItem(); |
this.tcpShowByDirectionMenuItem = new MenuItem(); |
this.tcpShowByTimeMenuItem = new MenuItem(); |
this.menuSeparator4 = new MenuItem(); |
this.autoExpandMenuItem = new MenuItem(); |
this.wordWrapMainMenuItem = new MenuItem(); |
this.helpMenu = new MenuItem(); |
this.aboutMenuItem = new MenuItem(); |
this.panel1 = new Panel(); |
this.panel3 = new Panel(); |
this.panel4 = new Panel(); |
this.wordWrapMenuItem = new System.Windows.Forms.MenuItem(); |
this.treeImageList = new System.Windows.Forms.ImageList(this.components); |
this.messagesContextMenu = new System.Windows.Forms.ContextMenu(); |
this.selectAllmenuItem = new System.Windows.Forms.MenuItem(); |
this.copyMenuItem = new System.Windows.Forms.MenuItem(); |
this.statusBar = new System.Windows.Forms.StatusBar(); |
this.connectionStatusBar = new System.Windows.Forms.StatusBarPanel(); |
this.saveButtonImageList = new System.Windows.Forms.ImageList(this.components); |
this.closeConnectionMenuItem = new System.Windows.Forms.MenuItem(); |
this.viewContextMenu = new System.Windows.Forms.ContextMenu(); |
this.saveLogDialog = new System.Windows.Forms.SaveFileDialog(); |
this.mainMenu = new System.Windows.Forms.MainMenu(); |
this.fileMenu = new System.Windows.Forms.MenuItem(); |
this.startMenuItem = new System.Windows.Forms.MenuItem(); |
this.stopMenuItem = new System.Windows.Forms.MenuItem(); |
this.recentListeningMenu = new System.Windows.Forms.MenuItem(); |
this.recentListeningNoItem = new System.Windows.Forms.MenuItem(); |
this.menuSeparator5 = new System.Windows.Forms.MenuItem(); |
this.loadBinLogMenuItem = new System.Windows.Forms.MenuItem(); |
this.saveBinLogMenuItem = new System.Windows.Forms.MenuItem(); |
this.menuSeparator1 = new System.Windows.Forms.MenuItem(); |
this.saveLogMenuItem = new System.Windows.Forms.MenuItem(); |
this.saveTcoLogMenuItem = new System.Windows.Forms.MenuItem(); |
this.saveHttpLogMenuItem = new System.Windows.Forms.MenuItem(); |
this.saveXmlLogMenuItem = new System.Windows.Forms.MenuItem(); |
this.menuSeparator2 = new System.Windows.Forms.MenuItem(); |
this.exitMenuItem = new System.Windows.Forms.MenuItem(); |
this.viewMenu = new System.Windows.Forms.MenuItem(); |
this.clearMainMenuItem = new System.Windows.Forms.MenuItem(); |
this.messagesMenu = new System.Windows.Forms.MenuItem(); |
this.allMessagesMenuItem = new System.Windows.Forms.MenuItem(); |
this.infoMessagesMenuItem = new System.Windows.Forms.MenuItem(); |
this.importantMessagesMenuItem = new System.Windows.Forms.MenuItem(); |
this.menuSeparator3 = new System.Windows.Forms.MenuItem(); |
this.tcpShowByDirectionMenuItem = new System.Windows.Forms.MenuItem(); |
this.tcpShowByTimeMenuItem = new System.Windows.Forms.MenuItem(); |
this.menuSeparator4 = new System.Windows.Forms.MenuItem(); |
this.autoExpandMainMenuItem = new System.Windows.Forms.MenuItem(); |
this.wordWrapMainMenuItem = new System.Windows.Forms.MenuItem(); |
this.helpMenu = new System.Windows.Forms.MenuItem(); |
this.aboutMenuItem = new System.Windows.Forms.MenuItem(); |
this.panel1 = new System.Windows.Forms.Panel(); |
this.panel3 = new System.Windows.Forms.Panel(); |
this.panel4 = new System.Windows.Forms.Panel(); |
this.splitter2 = new System.Windows.Forms.Splitter(); |
this.logBox = new System.Windows.Forms.ListBox(); |
this.splitter1 = new System.Windows.Forms.Splitter(); |
this.messageView = new System.Windows.Forms.TreeView(); |
this.saveBinLogDialog = new System.Windows.Forms.SaveFileDialog(); |
this.loadBinLogDialog = new System.Windows.Forms.OpenFileDialog(); |
this.autoExpandMenuItem = new System.Windows.Forms.MenuItem(); |
this.messagesBox = new TCPproxy.ViewControl(); |
this.splitter2 = new Splitter(); |
this.logBox = new ListBox(); |
this.splitter1 = new Splitter(); |
this.messageView = new TreeView(); |
this.saveBinLogDialog = new SaveFileDialog(); |
this.loadBinLogDialog = new OpenFileDialog(); |
((System.ComponentModel.ISupportInitialize)(this.connectionStatusBar)).BeginInit(); |
this.panel1.SuspendLayout(); |
this.panel3.SuspendLayout(); |
176,15 → 183,12 |
// |
// treeImageList |
// |
this.treeImageList.ImageStream = ((ImageListStreamer)(resources.GetObject("treeImageList.ImageStream"))); |
this.treeImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("treeImageList.ImageStream"))); |
this.treeImageList.TransparentColor = System.Drawing.Color.Magenta; |
this.treeImageList.Images.SetKeyName(0, ""); |
this.treeImageList.Images.SetKeyName(1, ""); |
this.treeImageList.Images.SetKeyName(2, ""); |
// |
// messagesContextMenu |
// |
this.messagesContextMenu.MenuItems.AddRange(new MenuItem[] { |
this.messagesContextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
this.selectAllmenuItem, |
this.copyMenuItem, |
this.wordWrapMenuItem}); |
192,7 → 196,7 |
// selectAllmenuItem |
// |
this.selectAllmenuItem.Index = 0; |
this.selectAllmenuItem.Shortcut = Shortcut.CtrlA; |
this.selectAllmenuItem.Shortcut = System.Windows.Forms.Shortcut.CtrlA; |
this.selectAllmenuItem.Text = "Select &All"; |
this.selectAllmenuItem.Click += new System.EventHandler(this.selectAllMenuItem_Click); |
// |
199,15 → 203,15 |
// copyMenuItem |
// |
this.copyMenuItem.Index = 1; |
this.copyMenuItem.Shortcut = Shortcut.CtrlC; |
this.copyMenuItem.Shortcut = System.Windows.Forms.Shortcut.CtrlC; |
this.copyMenuItem.Text = "&Copy"; |
this.copyMenuItem.Click += new System.EventHandler(this.copyMenuItem_Click); |
// |
// statusBar |
// |
this.statusBar.Location = new System.Drawing.Point(0, 359); |
this.statusBar.Location = new System.Drawing.Point(0, 339); |
this.statusBar.Name = "statusBar"; |
this.statusBar.Panels.AddRange(new StatusBarPanel[] { |
this.statusBar.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] { |
this.connectionStatusBar}); |
this.statusBar.ShowPanels = true; |
this.statusBar.Size = new System.Drawing.Size(780, 22); |
215,15 → 219,13 |
// |
// connectionStatusBar |
// |
this.connectionStatusBar.AutoSize = StatusBarPanelAutoSize.Spring; |
this.connectionStatusBar.Name = "connectionStatusBar"; |
this.connectionStatusBar.AutoSize = System.Windows.Forms.StatusBarPanelAutoSize.Spring; |
this.connectionStatusBar.Width = 764; |
// |
// saveButtonImageList |
// |
this.saveButtonImageList.ImageStream = ((ImageListStreamer)(resources.GetObject("saveButtonImageList.ImageStream"))); |
this.saveButtonImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("saveButtonImageList.ImageStream"))); |
this.saveButtonImageList.TransparentColor = System.Drawing.Color.Magenta; |
this.saveButtonImageList.Images.SetKeyName(0, ""); |
// |
// closeConnectionMenuItem |
// |
233,8 → 235,9 |
// |
// viewContextMenu |
// |
this.viewContextMenu.MenuItems.AddRange(new MenuItem[] { |
this.closeConnectionMenuItem}); |
this.viewContextMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
this.closeConnectionMenuItem, |
this.autoExpandMenuItem}); |
// |
// saveLogDialog |
// |
244,7 → 247,7 |
// |
// mainMenu |
// |
this.mainMenu.MenuItems.AddRange(new MenuItem[] { |
this.mainMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
this.fileMenu, |
this.viewMenu, |
this.helpMenu}); |
252,7 → 255,7 |
// fileMenu |
// |
this.fileMenu.Index = 0; |
this.fileMenu.MenuItems.AddRange(new MenuItem[] { |
this.fileMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
this.startMenuItem, |
this.stopMenuItem, |
this.recentListeningMenu, |
260,7 → 263,7 |
this.loadBinLogMenuItem, |
this.saveBinLogMenuItem, |
this.menuSeparator1, |
this.saveFullLogMenuItem, |
this.saveLogMenuItem, |
this.saveTcoLogMenuItem, |
this.saveHttpLogMenuItem, |
this.saveXmlLogMenuItem, |
284,7 → 287,7 |
// recentListeningMenu |
// |
this.recentListeningMenu.Index = 2; |
this.recentListeningMenu.MenuItems.AddRange(new MenuItem[] { |
this.recentListeningMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
this.recentListeningNoItem}); |
this.recentListeningMenu.Text = "&Recent Listenings"; |
// |
316,11 → 319,11 |
this.menuSeparator1.Index = 6; |
this.menuSeparator1.Text = "-"; |
// |
// saveFullLogMenuItem |
// saveLogMenuItem |
// |
this.saveFullLogMenuItem.Index = 7; |
this.saveFullLogMenuItem.Text = "Save F&ull Text Log..."; |
this.saveFullLogMenuItem.Click += new System.EventHandler(this.saveLogMenuItem_Click); |
this.saveLogMenuItem.Index = 7; |
this.saveLogMenuItem.Text = "Save Log Messa&ges..."; |
this.saveLogMenuItem.Click += new System.EventHandler(this.saveLogMenuItem_Click); |
// |
// saveTcoLogMenuItem |
// |
353,7 → 356,7 |
// viewMenu |
// |
this.viewMenu.Index = 1; |
this.viewMenu.MenuItems.AddRange(new MenuItem[] { |
this.viewMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
this.clearMainMenuItem, |
this.messagesMenu, |
this.menuSeparator3, |
360,7 → 363,7 |
this.tcpShowByDirectionMenuItem, |
this.tcpShowByTimeMenuItem, |
this.menuSeparator4, |
this.autoExpandMenuItem, |
this.autoExpandMainMenuItem, |
this.wordWrapMainMenuItem}); |
this.viewMenu.Text = "&View"; |
// |
373,7 → 376,7 |
// messagesMenu |
// |
this.messagesMenu.Index = 1; |
this.messagesMenu.MenuItems.AddRange(new MenuItem[] { |
this.messagesMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
this.allMessagesMenuItem, |
this.infoMessagesMenuItem, |
this.importantMessagesMenuItem}); |
421,11 → 424,11 |
this.menuSeparator4.Index = 5; |
this.menuSeparator4.Text = "-"; |
// |
// autoExpandMenuItem |
// autoExpandMainMenuItem |
// |
this.autoExpandMenuItem.Index = 6; |
this.autoExpandMenuItem.Text = "Auto E&xpand"; |
this.autoExpandMenuItem.Click += new System.EventHandler(this.autoExpandMenuItem_Click); |
this.autoExpandMainMenuItem.Index = 6; |
this.autoExpandMainMenuItem.Text = "Auto E&xpand"; |
this.autoExpandMainMenuItem.Click += new System.EventHandler(this.autoExpandMenuItem_Click); |
// |
// wordWrapMainMenuItem |
// |
436,7 → 439,7 |
// helpMenu |
// |
this.helpMenu.Index = 2; |
this.helpMenu.MenuItems.AddRange(new MenuItem[] { |
this.helpMenu.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { |
this.aboutMenuItem}); |
this.helpMenu.Text = "&Help"; |
// |
449,10 → 452,10 |
// panel1 |
// |
this.panel1.Controls.Add(this.panel3); |
this.panel1.Dock = DockStyle.Fill; |
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; |
this.panel1.Location = new System.Drawing.Point(0, 0); |
this.panel1.Name = "panel1"; |
this.panel1.Size = new System.Drawing.Size(780, 359); |
this.panel1.Size = new System.Drawing.Size(780, 339); |
this.panel1.TabIndex = 11; |
// |
// panel3 |
460,10 → 463,10 |
this.panel3.Controls.Add(this.panel4); |
this.panel3.Controls.Add(this.splitter1); |
this.panel3.Controls.Add(this.messageView); |
this.panel3.Dock = DockStyle.Fill; |
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; |
this.panel3.Location = new System.Drawing.Point(0, 0); |
this.panel3.Name = "panel3"; |
this.panel3.Size = new System.Drawing.Size(780, 359); |
this.panel3.Size = new System.Drawing.Size(780, 339); |
this.panel3.TabIndex = 5; |
// |
// panel4 |
471,27 → 474,16 |
this.panel4.Controls.Add(this.messagesBox); |
this.panel4.Controls.Add(this.splitter2); |
this.panel4.Controls.Add(this.logBox); |
this.panel4.Dock = DockStyle.Fill; |
this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; |
this.panel4.Location = new System.Drawing.Point(163, 0); |
this.panel4.Name = "panel4"; |
this.panel4.Size = new System.Drawing.Size(617, 359); |
this.panel4.Size = new System.Drawing.Size(617, 339); |
this.panel4.TabIndex = 13; |
// |
// messagesBox |
// |
this.messagesBox.ContextMenu = this.messagesContextMenu; |
this.messagesBox.Dock = DockStyle.Fill; |
this.messagesBox.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); |
this.messagesBox.Location = new System.Drawing.Point(0, 0); |
this.messagesBox.Name = "messagesBox"; |
this.messagesBox.Size = new System.Drawing.Size(617, 288); |
this.messagesBox.TabIndex = 7; |
this.messagesBox.WordWrap = true; |
// |
// splitter2 |
// |
this.splitter2.Dock = DockStyle.Bottom; |
this.splitter2.Location = new System.Drawing.Point(0, 288); |
this.splitter2.Dock = System.Windows.Forms.DockStyle.Bottom; |
this.splitter2.Location = new System.Drawing.Point(0, 268); |
this.splitter2.Name = "splitter2"; |
this.splitter2.Size = new System.Drawing.Size(617, 3); |
this.splitter2.TabIndex = 9; |
499,11 → 491,11 |
// |
// logBox |
// |
this.logBox.Dock = DockStyle.Bottom; |
this.logBox.Dock = System.Windows.Forms.DockStyle.Bottom; |
this.logBox.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); |
this.logBox.HorizontalScrollbar = true; |
this.logBox.ItemHeight = 16; |
this.logBox.Location = new System.Drawing.Point(0, 291); |
this.logBox.Location = new System.Drawing.Point(0, 271); |
this.logBox.Name = "logBox"; |
this.logBox.ScrollAlwaysVisible = true; |
this.logBox.Size = new System.Drawing.Size(617, 68); |
513,7 → 505,7 |
// |
this.splitter1.Location = new System.Drawing.Point(160, 0); |
this.splitter1.Name = "splitter1"; |
this.splitter1.Size = new System.Drawing.Size(3, 359); |
this.splitter1.Size = new System.Drawing.Size(3, 339); |
this.splitter1.TabIndex = 12; |
this.splitter1.TabStop = false; |
// |
520,7 → 512,7 |
// messageView |
// |
this.messageView.ContextMenu = this.viewContextMenu; |
this.messageView.Dock = DockStyle.Left; |
this.messageView.Dock = System.Windows.Forms.DockStyle.Left; |
this.messageView.HideSelection = false; |
this.messageView.ImageIndex = 0; |
this.messageView.ImageList = this.treeImageList; |
527,10 → 519,10 |
this.messageView.Location = new System.Drawing.Point(0, 0); |
this.messageView.Name = "messageView"; |
this.messageView.SelectedImageIndex = 0; |
this.messageView.Size = new System.Drawing.Size(160, 359); |
this.messageView.Size = new System.Drawing.Size(160, 339); |
this.messageView.TabIndex = 11; |
this.messageView.AfterSelect += new TreeViewEventHandler(this.messageView_AfterSelect); |
this.messageView.BeforeSelect += new TreeViewCancelEventHandler(this.messageView_BeforeSelect); |
this.messageView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.messageView_AfterSelect); |
this.messageView.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.messageView_BeforeSelect); |
// |
// saveBinLogDialog |
// |
544,16 → 536,33 |
this.loadBinLogDialog.Filter = "TCP Logs (*.bin)|*.bin|All Files|*.*"; |
this.loadBinLogDialog.Title = "Load Binary Log"; |
// |
// autoExpandMenuItem |
// |
this.autoExpandMenuItem.Index = 1; |
this.autoExpandMenuItem.Text = "Auto E&xpand"; |
this.autoExpandMenuItem.Click += new System.EventHandler(this.autoExpandMenuItem_Click); |
// |
// messagesBox |
// |
this.messagesBox.ContextMenu = this.messagesContextMenu; |
this.messagesBox.Dock = System.Windows.Forms.DockStyle.Fill; |
this.messagesBox.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); |
this.messagesBox.Location = new System.Drawing.Point(0, 0); |
this.messagesBox.Name = "messagesBox"; |
this.messagesBox.Size = new System.Drawing.Size(617, 268); |
this.messagesBox.TabIndex = 7; |
this.messagesBox.WordWrap = true; |
// |
// MainForm |
// |
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); |
this.ClientSize = new System.Drawing.Size(780, 381); |
this.ClientSize = new System.Drawing.Size(780, 361); |
this.Controls.Add(this.panel1); |
this.Controls.Add(this.statusBar); |
this.Menu = this.mainMenu; |
this.MinimumSize = new System.Drawing.Size(400, 200); |
this.Name = "MainForm"; |
this.StartPosition = FormStartPosition.Manual; |
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; |
this.Text = "TCPproxy"; |
((System.ComponentModel.ISupportInitialize)(this.connectionStatusBar)).EndInit(); |
this.panel1.ResumeLayout(false); |
588,6 → 597,8 |
} |
|
autoExpandMenuItem.Checked = autoExpand; |
autoExpandMainMenuItem.Checked = autoExpand; |
wordWrapMenuItem.Checked = messagesBox.WordWrap; |
wordWrapMainMenuItem.Checked = messagesBox.WordWrap; |
|
// save default values |
663,6 → 674,7 |
{ |
autoExpand = !autoExpand; |
autoExpandMenuItem.Checked = autoExpand; |
autoExpandMainMenuItem.Checked = autoExpand; |
} |
|
private void aboutMenuItem_Click(object sender, EventArgs e) |
735,47 → 747,87 |
|
private void saveLogMenuItem_Click(object sender, System.EventArgs e) |
{ |
if(saveLogDialog.ShowDialog() == DialogResult.OK) |
{ |
if(saveLogDialog.ShowDialog() == DialogResult.OK) { |
try { |
SaveLog(saveLogDialog.FileName); |
} |
catch(Exception ex) { |
MessageBox.Show("Cannot save log to file " + saveLogDialog.FileName |
+ ":\n" + ex.Message, "TCPproxy", |
MessageBoxButtons.OK, MessageBoxIcon.Error); |
} |
} |
} |
|
private void saveTcpMenuItem_Click(object sender, System.EventArgs e) |
{ |
if(saveLogDialog.ShowDialog() == DialogResult.OK) |
{ |
if(saveLogDialog.ShowDialog() == DialogResult.OK) { |
try { |
SaveTcp(saveLogDialog.FileName); |
} |
catch(Exception ex) { |
MessageBox.Show("Cannot save TCP log to file " + saveLogDialog.FileName |
+ ":\n" + ex.Message, "TCPproxy", |
MessageBoxButtons.OK, MessageBoxIcon.Error); |
} |
} |
} |
|
private void saveHttpMenuItem_Click(object sender, System.EventArgs e) |
{ |
if(saveLogDialog.ShowDialog() == DialogResult.OK) |
{ |
if(saveLogDialog.ShowDialog() == DialogResult.OK) { |
try { |
SaveHttp(saveLogDialog.FileName); |
} |
catch(Exception ex) { |
MessageBox.Show("Cannot save HTTP log to file " + saveLogDialog.FileName |
+ ":\n" + ex.Message, "TCPproxy", |
MessageBoxButtons.OK, MessageBoxIcon.Error); |
} |
} |
} |
|
private void saveXmlMenuItem_Click(object sender, System.EventArgs e) |
{ |
if(saveLogDialog.ShowDialog() == DialogResult.OK) |
{ |
if(saveLogDialog.ShowDialog() == DialogResult.OK) { |
try { |
SaveXml(saveLogDialog.FileName); |
} |
catch(Exception ex) { |
MessageBox.Show("Cannot save XML log to file " + saveLogDialog.FileName |
+ ":\n" + ex.Message, "TCPproxy", |
MessageBoxButtons.OK, MessageBoxIcon.Error); |
} |
} |
} |
|
private void saveBinLogMenuItem_Click(object sender, EventArgs e) |
{ |
if(saveBinLogDialog.ShowDialog() == DialogResult.OK) |
if(saveBinLogDialog.ShowDialog() == DialogResult.OK) { |
try { |
SaveBinLog(saveBinLogDialog.FileName); |
} |
catch(Exception ex) { |
MessageBox.Show("Cannot save binary log to file " + saveBinLogDialog.FileName |
+ ":\n" + ex.Message, "TCPproxy", |
MessageBoxButtons.OK, MessageBoxIcon.Error); |
} |
} |
} |
|
private void loadBinLogMenuItem_Click(object sender, EventArgs e) |
{ |
if(loadBinLogDialog.ShowDialog() == DialogResult.OK) |
if(loadBinLogDialog.ShowDialog() == DialogResult.OK) { |
try { |
LoadBinLog(loadBinLogDialog.FileName); |
} |
catch(Exception ex) { |
MessageBox.Show("Cannot load binary log from file " + loadBinLogDialog.FileName |
+ ":\n" + ex.Message, "TCPproxy", |
MessageBoxButtons.OK, MessageBoxIcon.Error); |
} |
} |
} |
|
private void messagesMenuItem_Click(object sender, EventArgs e) |
{ |
812,7 → 864,8 |
} |
catch(Exception ex) |
{ |
MessageBox.Show(ex.Message); |
MessageBox.Show("Cannot get host IP: " + ex.Message, "TCPproxy", |
MessageBoxButtons.OK, MessageBoxIcon.Error); |
return; |
} |
|
1175,7 → 1228,7 |
|
// header |
byte[] bufExpect = Encoding.ASCII.GetBytes(LOG_BIN_HEADER); |
if(file.Length < bufExpect.Length + sizeof(byte)) |
if(file.Length < (bufExpect.Length + 1 /* the type */)) |
throw new Exception("The file is too short"); |
|
byte[] bufRead = reader.ReadBytes(bufExpect.Length); |
1292,6 → 1345,11 |
#endregion network events handlers |
|
#region handlers for async GUI events |
|
// All handlers are called in main application thread only, no locks needed. |
// Other methods which are not running in the main application thread |
// are not allowed no interact with GUI elemenents. |
|
private delegate void AddLogMessageHandler(LogMessage message); |
private delegate void AddTcpNodeHandler(TcpConnection tcp); |
private delegate void UpdateTcpNodeHandler(TcpConnection tcp); |