From ba644b5ff39bef67d858edf72e23dfbf79798d5c Mon Sep 17 00:00:00 2001 From: Jim Radford Date: Thu, 7 May 2009 20:55:03 +0000 Subject: [PATCH] LIBOMV-512 PacketToString now decodes nested properties LIBOMV-509 Loading saved filters will prompt to apply to current session list LIBOMV-519 Adds initial support for loading GridProxy plugins (not well tested yet) git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2705 52acb1d6-8a22-11de-b505-999d5b087335 --- Programs/WinGridProxy/Form1.Designer.cs | 332 +++++++++--------- Programs/WinGridProxy/Form1.cs | 58 ++- Programs/WinGridProxy/Form1.resx | 30 +- .../FormPluginManager.Designer.cs | 115 ++++++ Programs/WinGridProxy/FormPluginManager.cs | 55 +++ Programs/WinGridProxy/FormPluginManager.resx | 123 +++++++ Programs/WinGridProxy/ProxyManager.cs | 2 +- 7 files changed, 522 insertions(+), 193 deletions(-) create mode 100644 Programs/WinGridProxy/FormPluginManager.Designer.cs create mode 100644 Programs/WinGridProxy/FormPluginManager.cs create mode 100644 Programs/WinGridProxy/FormPluginManager.resx diff --git a/Programs/WinGridProxy/Form1.Designer.cs b/Programs/WinGridProxy/Form1.Designer.cs index 6bd3bf45..874e4e93 100644 --- a/Programs/WinGridProxy/Form1.Designer.cs +++ b/Programs/WinGridProxy/Form1.Designer.cs @@ -40,13 +40,6 @@ this.label1 = new System.Windows.Forms.Label(); this.panelMainWindow = new System.Windows.Forms.Panel(); this.splitContainerSessionsTabs = new System.Windows.Forms.SplitContainer(); - this.listViewSessions = new WinGridProxy.ListViewNoFlicker(); - this.columnHeaderCounter = new System.Windows.Forms.ColumnHeader(); - this.columnHeaderProtocol = new System.Windows.Forms.ColumnHeader(); - this.columnHeaderType = new System.Windows.Forms.ColumnHeader(); - this.columnHeaderSize = new System.Windows.Forms.ColumnHeader(); - this.columnHeaderUrl = new System.Windows.Forms.ColumnHeader(); - this.columnHeaderContentType = new System.Windows.Forms.ColumnHeader(); this.contextMenuStripSessions = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemAutoScroll = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); @@ -55,7 +48,6 @@ this.toolStripMenuItemRemoveAll = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemRemoveSelected = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItemRemoveUnselected = new System.Windows.Forms.ToolStripMenuItem(); - this.removeToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); this.selectToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStripSelect = new System.Windows.Forms.ContextMenuStrip(this.components); this.allToolStripMenuItem4 = new System.Windows.Forms.ToolStripMenuItem(); @@ -63,7 +55,6 @@ this.noneToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparatorSelectPacketProto = new System.Windows.Forms.ToolStripSeparator(); this.toolStripMenuItemSelectPacketName = new System.Windows.Forms.ToolStripMenuItem(); - this.selectToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparatorFilterPacketByName = new System.Windows.Forms.ToolStripSeparator(); this.enableDisableFilterByNameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator(); @@ -76,6 +67,7 @@ this.orangeToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator(); this.unmarkToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.markToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator(); this.findToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.imageList1 = new System.Windows.Forms.ImageList(this.components); @@ -100,14 +92,8 @@ this.splitContainerFilters = new System.Windows.Forms.SplitContainer(); this.checkBoxCheckAllPackets = new System.Windows.Forms.CheckBox(); this.grpUDPFilters = new System.Windows.Forms.GroupBox(); - this.listViewPacketFilters = new WinGridProxy.ListViewNoFlicker(); - this.columnHeaderPacketName = new System.Windows.Forms.ColumnHeader(); - this.columnHeaderPacketType = new System.Windows.Forms.ColumnHeader(); this.checkBoxCheckAllMessages = new System.Windows.Forms.CheckBox(); this.grpCapsFilters = new System.Windows.Forms.GroupBox(); - this.listViewMessageFilters = new WinGridProxy.ListViewNoFlicker(); - this.columnHeaderName = new System.Windows.Forms.ColumnHeader(); - this.columnHeaderMessageType = new System.Windows.Forms.ColumnHeader(); this.tabPageInspect = new System.Windows.Forms.TabPage(); this.splitContainerInspectorTab = new System.Windows.Forms.SplitContainer(); this.tabControlInspectorRequest = new System.Windows.Forms.TabControl(); @@ -142,7 +128,8 @@ this.button3 = new System.Windows.Forms.Button(); this.buttonInjectPacket = new System.Windows.Forms.Button(); this.richTextBoxInject = new System.Windows.Forms.RichTextBox(); - this.markToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.removeToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.selectToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripLabelHexEditorRequest = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStrip1 = new System.Windows.Forms.ToolStrip(); @@ -158,6 +145,8 @@ this.saveOptionsOnExitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.startProxyOnStartupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripMenuItemPlugins = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); this.exitToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.EditToolStripButton = new System.Windows.Forms.ToolStripDropDownButton(); this.copyToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); @@ -223,8 +212,19 @@ this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); this.autoColorizeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.colorDialog1 = new System.Windows.Forms.ColorDialog(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); + this.listViewSessions = new WinGridProxy.ListViewNoFlicker(); + this.columnHeaderCounter = new System.Windows.Forms.ColumnHeader(); + this.columnHeaderProtocol = new System.Windows.Forms.ColumnHeader(); + this.columnHeaderType = new System.Windows.Forms.ColumnHeader(); + this.columnHeaderSize = new System.Windows.Forms.ColumnHeader(); + this.columnHeaderUrl = new System.Windows.Forms.ColumnHeader(); + this.columnHeaderContentType = new System.Windows.Forms.ColumnHeader(); + this.listViewPacketFilters = new WinGridProxy.ListViewNoFlicker(); + this.columnHeaderPacketName = new System.Windows.Forms.ColumnHeader(); + this.columnHeaderPacketType = new System.Windows.Forms.ColumnHeader(); + this.listViewMessageFilters = new WinGridProxy.ListViewNoFlicker(); + this.columnHeaderName = new System.Windows.Forms.ColumnHeader(); + this.columnHeaderMessageType = new System.Windows.Forms.ColumnHeader(); this.panelProxyConfig.SuspendLayout(); this.panelMainWindow.SuspendLayout(); this.splitContainerSessionsTabs.Panel1.SuspendLayout(); @@ -382,59 +382,6 @@ this.splitContainerSessionsTabs.SplitterWidth = 5; this.splitContainerSessionsTabs.TabIndex = 0; // - // listViewSessions - // - this.listViewSessions.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeaderCounter, - this.columnHeaderProtocol, - this.columnHeaderType, - this.columnHeaderSize, - this.columnHeaderUrl, - this.columnHeaderContentType}); - this.listViewSessions.ContextMenuStrip = this.contextMenuStripSessions; - this.listViewSessions.Dock = System.Windows.Forms.DockStyle.Fill; - this.listViewSessions.FullRowSelect = true; - this.listViewSessions.GridLines = true; - this.listViewSessions.HideSelection = false; - this.listViewSessions.Location = new System.Drawing.Point(0, 0); - this.listViewSessions.Name = "listViewSessions"; - this.listViewSessions.Size = new System.Drawing.Size(469, 428); - this.listViewSessions.SmallImageList = this.imageList1; - this.listViewSessions.TabIndex = 0; - this.listViewSessions.UseCompatibleStateImageBehavior = false; - this.listViewSessions.View = System.Windows.Forms.View.Details; - this.listViewSessions.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.listViewSessions_ItemSelectionChanged); - // - // columnHeaderCounter - // - this.columnHeaderCounter.Text = "#"; - this.columnHeaderCounter.Width = 54; - // - // columnHeaderProtocol - // - this.columnHeaderProtocol.Text = "Protocol"; - this.columnHeaderProtocol.Width = 59; - // - // columnHeaderType - // - this.columnHeaderType.Text = "Packet Type"; - this.columnHeaderType.Width = 151; - // - // columnHeaderSize - // - this.columnHeaderSize.Text = "Bytes"; - this.columnHeaderSize.Width = 64; - // - // columnHeaderUrl - // - this.columnHeaderUrl.Text = "Host/Address"; - this.columnHeaderUrl.Width = 312; - // - // columnHeaderContentType - // - this.columnHeaderContentType.Text = "Content Type"; - this.columnHeaderContentType.Width = 250; - // // contextMenuStripSessions // this.contextMenuStripSessions.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -479,7 +426,7 @@ this.toolStripMenuItemRemoveSelected, this.toolStripMenuItemRemoveUnselected}); this.contextMenuStripRemove.Name = "contextMenuStripRemove"; - this.contextMenuStripRemove.OwnerItem = this.toolStripMenuSessionsRemove; + this.contextMenuStripRemove.OwnerItem = this.removeToolStripMenuItem2; this.contextMenuStripRemove.Size = new System.Drawing.Size(149, 70); // // toolStripMenuItemRemoveAll @@ -504,13 +451,6 @@ this.toolStripMenuItemRemoveUnselected.Text = "Unselected"; this.toolStripMenuItemRemoveUnselected.Click += new System.EventHandler(this.sessionRemoveUnselected_Click); // - // removeToolStripMenuItem2 - // - this.removeToolStripMenuItem2.DropDown = this.contextMenuStripRemove; - this.removeToolStripMenuItem2.Name = "removeToolStripMenuItem2"; - this.removeToolStripMenuItem2.Size = new System.Drawing.Size(143, 22); - this.removeToolStripMenuItem2.Text = "Remove"; - // // selectToolStripMenuItem2 // this.selectToolStripMenuItem2.DropDown = this.contextMenuStripSelect; @@ -527,7 +467,7 @@ this.toolStripSeparatorSelectPacketProto, this.toolStripMenuItemSelectPacketName}); this.contextMenuStripSelect.Name = "contextMenuStripSelect"; - this.contextMenuStripSelect.OwnerItem = this.selectToolStripMenuItem2; + this.contextMenuStripSelect.OwnerItem = this.selectToolStripMenuItem1; this.contextMenuStripSelect.Size = new System.Drawing.Size(167, 98); // // allToolStripMenuItem4 @@ -564,13 +504,6 @@ this.toolStripMenuItemSelectPacketName.Text = "All (Packet Type)"; this.toolStripMenuItemSelectPacketName.Click += new System.EventHandler(this.sessionSelectAllPacketType_Click); // - // selectToolStripMenuItem1 - // - this.selectToolStripMenuItem1.DropDown = this.contextMenuStripSelect; - this.selectToolStripMenuItem1.Name = "selectToolStripMenuItem1"; - this.selectToolStripMenuItem1.Size = new System.Drawing.Size(143, 22); - this.selectToolStripMenuItem1.Text = "Select"; - // // toolStripSeparatorFilterPacketByName // this.toolStripSeparatorFilterPacketByName.Name = "toolStripSeparatorFilterPacketByName"; @@ -609,7 +542,7 @@ this.toolStripSeparator17, this.unmarkToolStripMenuItem}); this.contextMenuStripMark.Name = "contextMenuStripMarkDropdown"; - this.contextMenuStripMark.OwnerItem = this.markToolStripMenuItem1; + this.contextMenuStripMark.OwnerItem = this.markToolStripMenuItem2; this.contextMenuStripMark.Size = new System.Drawing.Size(122, 142); // // redToolStripMenuItem2 @@ -659,6 +592,13 @@ this.unmarkToolStripMenuItem.Text = "Unmark"; this.unmarkToolStripMenuItem.Click += new System.EventHandler(this.sessionUnmarkSelected_Click); // + // markToolStripMenuItem1 + // + this.markToolStripMenuItem1.DropDown = this.contextMenuStripMark; + this.markToolStripMenuItem1.Name = "markToolStripMenuItem1"; + this.markToolStripMenuItem1.Size = new System.Drawing.Size(152, 22); + this.markToolStripMenuItem1.Text = "Mark"; + // // toolStripSeparator16 // this.toolStripSeparator16.Name = "toolStripSeparator16"; @@ -914,35 +854,6 @@ this.grpUDPFilters.TabStop = false; this.grpUDPFilters.Text = "UDP Packets"; // - // listViewPacketFilters - // - this.listViewPacketFilters.CheckBoxes = true; - this.listViewPacketFilters.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeaderPacketName, - this.columnHeaderPacketType}); - this.listViewPacketFilters.Dock = System.Windows.Forms.DockStyle.Fill; - this.listViewPacketFilters.FullRowSelect = true; - this.listViewPacketFilters.GridLines = true; - this.listViewPacketFilters.Location = new System.Drawing.Point(3, 16); - this.listViewPacketFilters.MultiSelect = false; - this.listViewPacketFilters.Name = "listViewPacketFilters"; - this.listViewPacketFilters.Size = new System.Drawing.Size(286, 338); - this.listViewPacketFilters.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.listViewPacketFilters.TabIndex = 0; - this.listViewPacketFilters.UseCompatibleStateImageBehavior = false; - this.listViewPacketFilters.View = System.Windows.Forms.View.Details; - this.listViewPacketFilters.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listViewPacketFilters_ItemChecked); - this.listViewPacketFilters.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewFilterSorter_ColumnClick); - // - // columnHeaderPacketName - // - this.columnHeaderPacketName.Text = "Packet Name"; - this.columnHeaderPacketName.Width = 215; - // - // columnHeaderPacketType - // - this.columnHeaderPacketType.Text = "Type"; - // // checkBoxCheckAllMessages // this.checkBoxCheckAllMessages.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -971,36 +882,6 @@ this.grpCapsFilters.TabStop = false; this.grpCapsFilters.Text = "Capabilities Messages"; // - // listViewMessageFilters - // - this.listViewMessageFilters.CheckBoxes = true; - this.listViewMessageFilters.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.columnHeaderName, - this.columnHeaderMessageType}); - this.listViewMessageFilters.Dock = System.Windows.Forms.DockStyle.Fill; - this.listViewMessageFilters.FullRowSelect = true; - this.listViewMessageFilters.GridLines = true; - this.listViewMessageFilters.Location = new System.Drawing.Point(3, 16); - this.listViewMessageFilters.MultiSelect = false; - this.listViewMessageFilters.Name = "listViewMessageFilters"; - this.listViewMessageFilters.Size = new System.Drawing.Size(284, 338); - this.listViewMessageFilters.Sorting = System.Windows.Forms.SortOrder.Ascending; - this.listViewMessageFilters.TabIndex = 1; - this.listViewMessageFilters.UseCompatibleStateImageBehavior = false; - this.listViewMessageFilters.View = System.Windows.Forms.View.Details; - this.listViewMessageFilters.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listViewMessageFilters_ItemChecked); - this.listViewMessageFilters.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewFilterSorter_ColumnClick); - // - // columnHeaderName - // - this.columnHeaderName.Text = "Message Name"; - this.columnHeaderName.Width = 181; - // - // columnHeaderMessageType - // - this.columnHeaderMessageType.Text = "Type"; - this.columnHeaderMessageType.Width = 92; - // // tabPageInspect // this.tabPageInspect.Controls.Add(this.splitContainerInspectorTab); @@ -1410,12 +1291,19 @@ this.richTextBoxInject.Text = ""; this.richTextBoxInject.TextChanged += new System.EventHandler(this.richTextBoxInject_TextChanged); // - // markToolStripMenuItem1 + // removeToolStripMenuItem2 // - this.markToolStripMenuItem1.DropDown = this.contextMenuStripMark; - this.markToolStripMenuItem1.Name = "markToolStripMenuItem1"; - this.markToolStripMenuItem1.Size = new System.Drawing.Size(143, 22); - this.markToolStripMenuItem1.Text = "Mark"; + this.removeToolStripMenuItem2.DropDown = this.contextMenuStripRemove; + this.removeToolStripMenuItem2.Name = "removeToolStripMenuItem2"; + this.removeToolStripMenuItem2.Size = new System.Drawing.Size(152, 22); + this.removeToolStripMenuItem2.Text = "Remove"; + // + // selectToolStripMenuItem1 + // + this.selectToolStripMenuItem1.DropDown = this.contextMenuStripSelect; + this.selectToolStripMenuItem1.Name = "selectToolStripMenuItem1"; + this.selectToolStripMenuItem1.Size = new System.Drawing.Size(152, 22); + this.selectToolStripMenuItem1.Text = "Select"; // // toolStripLabelHexEditorRequest // @@ -1451,7 +1339,7 @@ this.toolStripSeparator8, this.settingsToolStripMenuItem, this.toolStripSeparator9, - this.toolStripMenuItem1, + this.toolStripMenuItemPlugins, this.toolStripSeparator14, this.exitToolStripMenuItem1}); this.toolStripFileMenu.Image = ((System.Drawing.Image)(resources.GetObject("toolStripFileMenu.Image"))); @@ -1546,6 +1434,19 @@ this.toolStripSeparator9.Name = "toolStripSeparator9"; this.toolStripSeparator9.Size = new System.Drawing.Size(184, 6); // + // toolStripMenuItemPlugins + // + this.toolStripMenuItemPlugins.Enabled = false; + this.toolStripMenuItemPlugins.Name = "toolStripMenuItemPlugins"; + this.toolStripMenuItemPlugins.Size = new System.Drawing.Size(187, 22); + this.toolStripMenuItemPlugins.Text = "Plugins"; + this.toolStripMenuItemPlugins.Click += new System.EventHandler(this.toolStripMenuItem1_Click); + // + // toolStripSeparator14 + // + this.toolStripSeparator14.Name = "toolStripSeparator14"; + this.toolStripSeparator14.Size = new System.Drawing.Size(184, 6); + // // exitToolStripMenuItem1 // this.exitToolStripMenuItem1.Name = "exitToolStripMenuItem1"; @@ -1576,7 +1477,7 @@ // this.copyToolStripMenuItem1.DropDown = this.contextMenuStripCopy; this.copyToolStripMenuItem1.Name = "copyToolStripMenuItem1"; - this.copyToolStripMenuItem1.Size = new System.Drawing.Size(143, 22); + this.copyToolStripMenuItem1.Size = new System.Drawing.Size(152, 22); this.copyToolStripMenuItem1.Text = "Copy"; this.copyToolStripMenuItem1.Visible = false; // @@ -1618,18 +1519,18 @@ // toolStripSeparator10 // this.toolStripSeparator10.Name = "toolStripSeparator10"; - this.toolStripSeparator10.Size = new System.Drawing.Size(140, 6); + this.toolStripSeparator10.Size = new System.Drawing.Size(149, 6); // // toolStripSeparator12 // this.toolStripSeparator12.Name = "toolStripSeparator12"; - this.toolStripSeparator12.Size = new System.Drawing.Size(140, 6); + this.toolStripSeparator12.Size = new System.Drawing.Size(149, 6); // // findToolStripMenuItem // this.findToolStripMenuItem.Name = "findToolStripMenuItem"; this.findToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F))); - this.findToolStripMenuItem.Size = new System.Drawing.Size(143, 22); + this.findToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.findToolStripMenuItem.Text = "Find"; this.findToolStripMenuItem.Click += new System.EventHandler(this.findSessions_Click); // @@ -2037,16 +1938,117 @@ this.autoColorizeToolStripMenuItem.Text = "Auto Colorize"; this.autoColorizeToolStripMenuItem.Click += new System.EventHandler(this.autoColorizeToolStripMenuItem_Click); // - // toolStripMenuItem1 + // listViewSessions // - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(187, 22); - this.toolStripMenuItem1.Text = "Plugins"; + this.listViewSessions.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderCounter, + this.columnHeaderProtocol, + this.columnHeaderType, + this.columnHeaderSize, + this.columnHeaderUrl, + this.columnHeaderContentType}); + this.listViewSessions.ContextMenuStrip = this.contextMenuStripSessions; + this.listViewSessions.Dock = System.Windows.Forms.DockStyle.Fill; + this.listViewSessions.FullRowSelect = true; + this.listViewSessions.GridLines = true; + this.listViewSessions.HideSelection = false; + this.listViewSessions.Location = new System.Drawing.Point(0, 0); + this.listViewSessions.Name = "listViewSessions"; + this.listViewSessions.Size = new System.Drawing.Size(469, 428); + this.listViewSessions.SmallImageList = this.imageList1; + this.listViewSessions.TabIndex = 0; + this.listViewSessions.UseCompatibleStateImageBehavior = false; + this.listViewSessions.View = System.Windows.Forms.View.Details; + this.listViewSessions.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.listViewSessions_ItemSelectionChanged); // - // toolStripSeparator14 + // columnHeaderCounter // - this.toolStripSeparator14.Name = "toolStripSeparator14"; - this.toolStripSeparator14.Size = new System.Drawing.Size(184, 6); + this.columnHeaderCounter.Text = "#"; + this.columnHeaderCounter.Width = 54; + // + // columnHeaderProtocol + // + this.columnHeaderProtocol.Text = "Protocol"; + this.columnHeaderProtocol.Width = 59; + // + // columnHeaderType + // + this.columnHeaderType.Text = "Packet Type"; + this.columnHeaderType.Width = 151; + // + // columnHeaderSize + // + this.columnHeaderSize.Text = "Bytes"; + this.columnHeaderSize.Width = 64; + // + // columnHeaderUrl + // + this.columnHeaderUrl.Text = "Host/Address"; + this.columnHeaderUrl.Width = 312; + // + // columnHeaderContentType + // + this.columnHeaderContentType.Text = "Content Type"; + this.columnHeaderContentType.Width = 250; + // + // listViewPacketFilters + // + this.listViewPacketFilters.CheckBoxes = true; + this.listViewPacketFilters.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderPacketName, + this.columnHeaderPacketType}); + this.listViewPacketFilters.Dock = System.Windows.Forms.DockStyle.Fill; + this.listViewPacketFilters.FullRowSelect = true; + this.listViewPacketFilters.GridLines = true; + this.listViewPacketFilters.Location = new System.Drawing.Point(3, 16); + this.listViewPacketFilters.MultiSelect = false; + this.listViewPacketFilters.Name = "listViewPacketFilters"; + this.listViewPacketFilters.Size = new System.Drawing.Size(286, 338); + this.listViewPacketFilters.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.listViewPacketFilters.TabIndex = 0; + this.listViewPacketFilters.UseCompatibleStateImageBehavior = false; + this.listViewPacketFilters.View = System.Windows.Forms.View.Details; + this.listViewPacketFilters.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listViewPacketFilters_ItemChecked); + this.listViewPacketFilters.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewFilterSorter_ColumnClick); + // + // columnHeaderPacketName + // + this.columnHeaderPacketName.Text = "Packet Name"; + this.columnHeaderPacketName.Width = 215; + // + // columnHeaderPacketType + // + this.columnHeaderPacketType.Text = "Type"; + // + // listViewMessageFilters + // + this.listViewMessageFilters.CheckBoxes = true; + this.listViewMessageFilters.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderName, + this.columnHeaderMessageType}); + this.listViewMessageFilters.Dock = System.Windows.Forms.DockStyle.Fill; + this.listViewMessageFilters.FullRowSelect = true; + this.listViewMessageFilters.GridLines = true; + this.listViewMessageFilters.Location = new System.Drawing.Point(3, 16); + this.listViewMessageFilters.MultiSelect = false; + this.listViewMessageFilters.Name = "listViewMessageFilters"; + this.listViewMessageFilters.Size = new System.Drawing.Size(284, 338); + this.listViewMessageFilters.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.listViewMessageFilters.TabIndex = 1; + this.listViewMessageFilters.UseCompatibleStateImageBehavior = false; + this.listViewMessageFilters.View = System.Windows.Forms.View.Details; + this.listViewMessageFilters.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.listViewMessageFilters_ItemChecked); + this.listViewMessageFilters.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewFilterSorter_ColumnClick); + // + // columnHeaderName + // + this.columnHeaderName.Text = "Message Name"; + this.columnHeaderName.Width = 181; + // + // columnHeaderMessageType + // + this.columnHeaderMessageType.Text = "Type"; + this.columnHeaderMessageType.Width = 92; // // FormWinGridProxy // @@ -2315,7 +2317,7 @@ private System.Windows.Forms.ColorDialog colorDialog1; private System.Windows.Forms.ColumnHeader columnHeaderContentType; private System.Windows.Forms.ComboBox comboBoxListenAddress; - private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemPlugins; private System.Windows.Forms.ToolStripSeparator toolStripSeparator14; } } diff --git a/Programs/WinGridProxy/Form1.cs b/Programs/WinGridProxy/Form1.cs index bbc0f2f8..248fad8f 100644 --- a/Programs/WinGridProxy/Form1.cs +++ b/Programs/WinGridProxy/Form1.cs @@ -311,7 +311,7 @@ namespace WinGridProxy // enable any gui elements toolStripDropDownButton5.Enabled = - grpUDPFilters.Enabled = grpCapsFilters.Enabled = IsProxyRunning = true; + toolStripMenuItemPlugins.Enabled = grpUDPFilters.Enabled = grpCapsFilters.Enabled = IsProxyRunning = true; button1.Text = "Stop Proxy"; if (enableStatisticsToolStripMenuItem.Checked && !timer1.Enabled) @@ -321,7 +321,7 @@ namespace WinGridProxy { // stop the proxy proxy.Stop(); - grpUDPFilters.Enabled = grpCapsFilters.Enabled = IsProxyRunning = false; + toolStripMenuItemPlugins.Enabled = grpUDPFilters.Enabled = grpCapsFilters.Enabled = IsProxyRunning = false; button1.Text = "Start Proxy"; comboBoxListenAddress.Enabled = textBoxProxyPort.Enabled = comboBoxLoginURL.Enabled = true; @@ -760,6 +760,22 @@ namespace WinGridProxy if (openFileDialog2.ShowDialog() == DialogResult.OK) { RestoreSavedSettings(openFileDialog2.FileName); + if(listViewSessions.Items.Count > 0) + { + if(MessageBox.Show("Would you like to apply these settings to the currention session list?", "Apply Filter", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) + { + foreach(ListViewItem item in listViewSessions.Items) + { + ListViewItem found = FindListViewItem(listViewPacketFilters, item.SubItems[2].Text, false); + if (found == null) + found = FindListViewItem(listViewMessageFilters, item.SubItems[2].Text, false); + + if(found != null && !found.Checked) + listViewSessions.Items.Remove(item); + + } + } + } } } @@ -1027,29 +1043,44 @@ namespace WinGridProxy { foreach (object nestedArrayRecord in packetDataObject as Array) { + // handle properties + foreach (PropertyInfo propertyInfo in nestedArrayRecord.GetType().GetProperties()) + { + if (propertyInfo.GetValue(nestedArrayRecord, null).GetType() == typeof(byte[])) + { + + result.AppendFormat("{0, 30}: {1}" + Environment.NewLine, + propertyInfo.Name, Utils.BytesToString((byte[])propertyInfo.GetValue(nestedArrayRecord, null))); + + } + + } + + // handle fields foreach (FieldInfo packetArrayField in nestedArrayRecord.GetType().GetFields()) { - if (packetArrayField.GetValue(nestedArrayRecord).GetType() == typeof(System.Byte[])) + if (packetArrayField.GetValue(nestedArrayRecord).GetType() == typeof(Byte[])) { - result.AppendFormat("{0,30}: {1}" + System.Environment.NewLine, + result.AppendFormat("{0,30}: {1}" + Environment.NewLine, packetArrayField.Name, - new Color4((byte[])packetArrayField.GetValue(nestedArrayRecord), 0, false).ToString()); + new Color4((byte[])packetArrayField.GetValue(nestedArrayRecord), 0, false)); } else { - result.AppendFormat("{0,30}: {1}" + System.Environment.NewLine, + result.AppendFormat("{0,30}: {1}" + Environment.NewLine, packetArrayField.Name, packetArrayField.GetValue(nestedArrayRecord)); } } } } + else { // handle non array data blocks foreach (PropertyInfo packetPropertyField in packetField.GetValue(packet).GetType().GetProperties()) { // Handle fields named "Data" specifically, this is generally binary data, we'll display it as hex values - if (packetPropertyField.PropertyType.Equals(typeof(System.Byte[])) + if (packetPropertyField.PropertyType.Equals(typeof(Byte[])) && packetPropertyField.Name.Equals("Data")) { result.AppendFormat("{0}" + System.Environment.NewLine, @@ -1057,7 +1088,7 @@ namespace WinGridProxy packetPropertyField.Name)); } // decode bytes into strings - else if (packetPropertyField.PropertyType.Equals(typeof(System.Byte[]))) + else if (packetPropertyField.PropertyType.Equals(typeof(Byte[]))) { // Handle TextureEntry fields specifically if (packetPropertyField.Name.Equals("TextureEntry")) @@ -1080,7 +1111,10 @@ namespace WinGridProxy } else if (bytes.Length == 17) { - bbDecoded = String.Format("{0} {1} ({2})", new UUID(bytes, 1).ToString(), bytes[0], (AssetType)bytes[0]); + bbDecoded = String.Format("{0} {1} ({2})", + new UUID(bytes, 1), + bytes[0], + (AssetType)bytes[0]); } else { @@ -1539,5 +1573,11 @@ namespace WinGridProxy //listview.BackColor = colorDialog1.Color; } } + + private void toolStripMenuItem1_Click(object sender, EventArgs e) + { + FormPluginManager pluginManager = new FormPluginManager(proxy.Proxy); + pluginManager.ShowDialog(); + } } } diff --git a/Programs/WinGridProxy/Form1.resx b/Programs/WinGridProxy/Form1.resx index 01fe664c..bc044b9f 100644 --- a/Programs/WinGridProxy/Form1.resx +++ b/Programs/WinGridProxy/Form1.resx @@ -120,6 +120,15 @@ 524, 17 + + 185, 54 + + + 17, 54 + + + 705, 17 + 309, 17 @@ -172,21 +181,6 @@ BQAD/wUACw== - - 185, 54 - - - 17, 54 - - - 705, 17 - - - 414, 17 - - - 116, 17 - 414, 17 @@ -212,6 +206,9 @@ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC + + 919, 17 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -229,9 +226,6 @@ AAAAAElFTkSuQmCC - - 919, 17 - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 diff --git a/Programs/WinGridProxy/FormPluginManager.Designer.cs b/Programs/WinGridProxy/FormPluginManager.Designer.cs new file mode 100644 index 00000000..1b77bf0f --- /dev/null +++ b/Programs/WinGridProxy/FormPluginManager.Designer.cs @@ -0,0 +1,115 @@ +namespace WinGridProxy +{ + partial class FormPluginManager + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.buttonLoadPlugin = new System.Windows.Forms.Button(); + this.buttonClose = new System.Windows.Forms.Button(); + this.listView1 = new System.Windows.Forms.ListView(); + this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); + this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); + this.SuspendLayout(); + // + // openFileDialog1 + // + this.openFileDialog1.DefaultExt = "dll"; + this.openFileDialog1.FileName = "openFileDialog1"; + this.openFileDialog1.Filter = "GridProxy Plugins|*.dll"; + this.openFileDialog1.Multiselect = true; + this.openFileDialog1.Title = "Load GridProxy Plugin"; + // + // buttonLoadPlugin + // + this.buttonLoadPlugin.Location = new System.Drawing.Point(12, 247); + this.buttonLoadPlugin.Name = "buttonLoadPlugin"; + this.buttonLoadPlugin.Size = new System.Drawing.Size(75, 23); + this.buttonLoadPlugin.TabIndex = 0; + this.buttonLoadPlugin.Text = "Load"; + this.buttonLoadPlugin.UseVisualStyleBackColor = true; + this.buttonLoadPlugin.Click += new System.EventHandler(this.buttonLoadPlugin_Click); + // + // buttonClose + // + this.buttonClose.Location = new System.Drawing.Point(174, 247); + this.buttonClose.Name = "buttonClose"; + this.buttonClose.Size = new System.Drawing.Size(75, 23); + this.buttonClose.TabIndex = 3; + this.buttonClose.Text = "Close"; + this.buttonClose.UseVisualStyleBackColor = true; + this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click); + // + // listView1 + // + this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeader1, + this.columnHeader2}); + this.listView1.Location = new System.Drawing.Point(12, 12); + this.listView1.Name = "listView1"; + this.listView1.Size = new System.Drawing.Size(237, 229); + this.listView1.TabIndex = 4; + this.listView1.UseCompatibleStateImageBehavior = false; + this.listView1.View = System.Windows.Forms.View.Details; + // + // columnHeader1 + // + this.columnHeader1.Text = "Name"; + this.columnHeader1.Width = 89; + // + // columnHeader2 + // + this.columnHeader2.Text = "Path"; + this.columnHeader2.Width = 142; + // + // FormPluginManager + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.buttonClose; + this.ClientSize = new System.Drawing.Size(262, 280); + this.Controls.Add(this.listView1); + this.Controls.Add(this.buttonClose); + this.Controls.Add(this.buttonLoadPlugin); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "FormPluginManager"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Plugin Manager"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private System.Windows.Forms.Button buttonLoadPlugin; + private System.Windows.Forms.Button buttonClose; + private System.Windows.Forms.ListView listView1; + private System.Windows.Forms.ColumnHeader columnHeader1; + private System.Windows.Forms.ColumnHeader columnHeader2; + } +} \ No newline at end of file diff --git a/Programs/WinGridProxy/FormPluginManager.cs b/Programs/WinGridProxy/FormPluginManager.cs new file mode 100644 index 00000000..5edc29a5 --- /dev/null +++ b/Programs/WinGridProxy/FormPluginManager.cs @@ -0,0 +1,55 @@ +using System; +using System.Windows.Forms; +using GridProxy; +using System.Reflection; +using System.IO; + +namespace WinGridProxy +{ + public partial class FormPluginManager : Form + { + private ProxyFrame _Frame; + public FormPluginManager(ProxyFrame frame) + { + InitializeComponent(); + _Frame = frame; + } + + private void buttonLoadPlugin_Click(object sender, EventArgs e) + { + if(openFileDialog1.ShowDialog() == DialogResult.OK) + { + LoadPlugin(openFileDialog1.FileName); + } + } + public void LoadPlugin(string name) + { + + Assembly assembly = Assembly.LoadFile(Path.GetFullPath(name)); + foreach (Type t in assembly.GetTypes()) + { + try + { + if (t.IsSubclassOf(typeof(ProxyPlugin))) + { + ConstructorInfo info = t.GetConstructor(new Type[] { typeof(ProxyFrame) }); + ProxyPlugin plugin = (ProxyPlugin)info.Invoke(new object[] { _Frame }); + plugin.Init(); + listView1.Items.Add(new ListViewItem(new []{assembly.ManifestModule.Name, Path.GetFullPath(name)})); + } + } + catch (Exception e) + { + Console.WriteLine(e.ToString()); + } + } + + } + + private void buttonClose_Click(object sender, EventArgs e) + { + this.Close(); + } + + } +} diff --git a/Programs/WinGridProxy/FormPluginManager.resx b/Programs/WinGridProxy/FormPluginManager.resx new file mode 100644 index 00000000..8dc6b17c --- /dev/null +++ b/Programs/WinGridProxy/FormPluginManager.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Programs/WinGridProxy/ProxyManager.cs b/Programs/WinGridProxy/ProxyManager.cs index 069caf3e..7bf8fc5b 100644 --- a/Programs/WinGridProxy/ProxyManager.cs +++ b/Programs/WinGridProxy/ProxyManager.cs @@ -61,7 +61,7 @@ namespace WinGridProxy private string _ListenIP; private string _LoginURI; - ProxyFrame Proxy; + public ProxyFrame Proxy; public ProxyManager(string port, string listenIP, string loginUri) {