Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1200 → Rev 1201

/TCPproxy/trunk/ListenForm.cs
169,7 → 169,8
}
catch(FormatException)
{
MessageBox.Show("Listen port must be an integer number");
MessageBox.Show("Listen port must be an integer number", "TCPproxy",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
 
180,7 → 181,8
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
MessageBox.Show("Cannot get host IP: " + ex.Message, "TCPproxy",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
resendHost = resendHostBox.Text;
192,7 → 194,8
}
catch(FormatException)
{
MessageBox.Show("Resend port must be an integer number");
MessageBox.Show("Resend port must be an integer number", "TCPproxy",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
 
/TCPproxy/trunk/MainForm.cs
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);
587,8 → 596,10
tcpShowByTimeMenuItem.Checked = true;
}
 
autoExpandMenuItem.Checked = autoExpand;
wordWrapMainMenuItem.Checked = messagesBox.WordWrap;
autoExpandMenuItem.Checked = autoExpand;
autoExpandMainMenuItem.Checked = autoExpand;
wordWrapMenuItem.Checked = messagesBox.WordWrap;
wordWrapMainMenuItem.Checked = messagesBox.WordWrap;
 
// save default values
defaultCaption = this.Text;
661,8 → 672,9
 
private void autoExpandMenuItem_Click(object sender, System.EventArgs e)
{
autoExpand = !autoExpand;
autoExpandMenuItem.Checked = autoExpand;
autoExpand = !autoExpand;
autoExpandMenuItem.Checked = autoExpand;
autoExpandMainMenuItem.Checked = autoExpand;
}
 
private void aboutMenuItem_Click(object sender, EventArgs e)
735,46 → 747,86
 
private void saveLogMenuItem_Click(object sender, System.EventArgs e)
{
if(saveLogDialog.ShowDialog() == DialogResult.OK)
{
SaveLog(saveLogDialog.FileName);
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)
{
SaveTcp(saveLogDialog.FileName);
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)
{
SaveHttp(saveLogDialog.FileName);
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)
{
SaveXml(saveLogDialog.FileName);
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)
SaveBinLog(saveBinLogDialog.FileName);
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)
LoadBinLog(loadBinLogDialog.FileName);
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);