diff --git a/OpenMetaverse/AgentManager.cs b/OpenMetaverse/AgentManager.cs index 6e5f9e0a..346a4d57 100644 --- a/OpenMetaverse/AgentManager.cs +++ b/OpenMetaverse/AgentManager.cs @@ -2107,7 +2107,7 @@ namespace OpenMetaverse /// Grabs an object /// /// an unsigned integer of the objects ID within the simulator - /// + /// public void Grab(uint objectLocalID) { Grab(objectLocalID, Vector3.Zero, Vector3.Zero, Vector3.Zero, 0, Vector3.Zero, Vector3.Zero, Vector3.Zero); @@ -2118,12 +2118,13 @@ namespace OpenMetaverse /// /// an unsigned integer of the objects ID within the simulator /// - /// - /// - /// - /// - /// - /// + /// The texture coordinates to grab + /// The surface coordinates to grab + /// The face of the position to grab + /// The region coordinates of the position to grab + /// The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + /// The surface binormal of the position to grab (A binormal is a vector tangen to the surface + /// pointing along the U direction of the tangent space public void Grab(uint objectLocalID, Vector3 grabOffset, Vector3 uvCoord, Vector3 stCoord, int faceIndex, Vector3 position, Vector3 normal, Vector3 binormal) { @@ -2163,12 +2164,13 @@ namespace OpenMetaverse /// of the object to drag /// Drag target in region coordinates /// - /// - /// - /// - /// - /// - /// + /// The texture coordinates to grab + /// The surface coordinates to grab + /// The face of the position to grab + /// The region coordinates of the position to grab + /// The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + /// The surface binormal of the position to grab (A binormal is a vector tangen to the surface + /// pointing along the U direction of the tangent space public void GrabUpdate(UUID objectID, Vector3 grabPosition, Vector3 grabOffset, Vector3 uvCoord, Vector3 stCoord, int faceIndex, Vector3 position, Vector3 normal, Vector3 binormal) { @@ -2197,7 +2199,7 @@ namespace OpenMetaverse /// Release a grabbed object /// /// The Objects Simulator Local ID - /// + /// /// /// public void DeGrab(uint objectLocalID) @@ -2209,12 +2211,13 @@ namespace OpenMetaverse /// Release a grabbed object /// /// The Objects Simulator Local ID - /// - /// - /// - /// - /// - /// + /// The texture coordinates to grab + /// The surface coordinates to grab + /// The face of the position to grab + /// The region coordinates of the position to grab + /// The surface normal of the position to grab (A normal is a vector perpindicular to the surface) + /// The surface binormal of the position to grab (A binormal is a vector tangen to the surface + /// pointing along the U direction of the tangent space public void DeGrab(uint objectLocalID, Vector3 uvCoord, Vector3 stCoord, int faceIndex, Vector3 position, Vector3 normal, Vector3 binormal) { @@ -2240,7 +2243,7 @@ namespace OpenMetaverse /// Touches an object /// /// an unsigned integer of the objects ID within the simulator - /// + /// public void Touch(uint objectLocalID) { Client.Self.Grab(objectLocalID); diff --git a/OpenMetaverse/Messages/MessageEventDecoder.cs b/OpenMetaverse/Messages/MessageEventDecoder.cs index ec79d774..73770d6a 100644 --- a/OpenMetaverse/Messages/MessageEventDecoder.cs +++ b/OpenMetaverse/Messages/MessageEventDecoder.cs @@ -48,6 +48,7 @@ namespace OpenMetaverse.Messages switch (eventName) { case "AgentGroupDataUpdate": message = new AgentGroupDataUpdateMessage(); break; + case "AvatarGroupsReply": message = new AgentGroupDataUpdateMessage(); break; // OpenSim sends the above with the wrong? key case "ParcelProperties": message = new ParcelPropertiesMessage(); break; case "ParcelObjectOwnersReply": message = new ParcelObjectOwnersReplyMessage(); break; case "TeleportFinish": message = new TeleportFinishMessage(); break; diff --git a/OpenMetaverse/ObjectManager.cs b/OpenMetaverse/ObjectManager.cs index c3ad9d02..74b3bf5e 100644 --- a/OpenMetaverse/ObjectManager.cs +++ b/OpenMetaverse/ObjectManager.cs @@ -765,12 +765,13 @@ namespace OpenMetaverse /// /// The the object is located /// The Local ID of the object - /// - /// - /// - /// - /// - /// + /// The texture coordinates to touch + /// The surface coordinates to touch + /// The face of the position to touch + /// The region coordinates of the position to touch + /// The surface normal of the position to touch (A normal is a vector perpindicular to the surface) + /// The surface binormal of the position to touch (A binormal is a vector tangen to the surface + /// pointing along the U direction of the tangent space public void ClickObject(Simulator simulator, uint localID, Vector3 uvCoord, Vector3 stCoord, int faceIndex, Vector3 position, Vector3 normal, Vector3 binormal) { @@ -835,7 +836,7 @@ namespace OpenMetaverse /// /// Create (rez) a new prim object in a simulator /// - /// A reference to the object to place the object in + /// A reference to the object to place the object in /// Data describing the prim object to rez /// Group ID that this prim will be set to, or UUID.Zero if you /// do not want the object to be associated with a specific group @@ -2314,10 +2315,12 @@ namespace OpenMetaverse if ((flags & CompressedFlags.HasNameValues) != 0 && prim.ParentID != 0) { + // This is an attachment OnObjectUpdate(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation, true)); } else { + // This is a primitive OnObjectUpdate(new PrimEventArgs(simulator, prim, update.RegionData.TimeDilation, false)); } @@ -2959,7 +2962,7 @@ namespace OpenMetaverse /// The event occurs when the simulator sends /// an containing a Primitive, Foliage or Attachment data /// Note 1: The event will not be raised when the object is an Avatar - /// Note 2: It is possible for the or to be + /// Note 2: It is possible for the to be /// raised twice for the same object if for example the primitive moved to a new simulator, then returned to the current simulator or /// if an Avatar crosses the border into a new simulator and returns to the current simulator /// @@ -2967,7 +2970,7 @@ namespace OpenMetaverse /// The following code example uses the , , and /// properties to display new Primitives and Attachments on the window. /// - /// // Subscribe to the event that gives us new prims and foliage + /// // Subscribe to the event that gives us prim and foliage information /// Client.Objects.ObjectUpdate += Objects_ObjectUpdate; /// /// @@ -2977,6 +2980,7 @@ namespace OpenMetaverse /// } /// /// + /// /// /// public class PrimEventArgs : EventArgs @@ -2986,10 +2990,11 @@ namespace OpenMetaverse private readonly Primitive m_Prim; private readonly ushort m_TimeDilation; - /// Get the simulator the object originated from + /// Get the simulator the originated from public Simulator Simulator { get { return m_Simulator; } } - /// Get the primitive details + /// Get the details public Primitive Prim { get { return m_Prim; } } + /// true if the is attached to an public bool IsAttachment { get { return m_IsAttachment; } } /// Get the simulator Time Dilation public ushort TimeDilation { get { return m_TimeDilation; } } @@ -2999,7 +3004,7 @@ namespace OpenMetaverse /// /// The simulator the object originated from /// The Primitive - /// true of the primitive represents an attachment to an agent + /// true if the primitive represents an attachment to an agent /// The simulator time dilation public PrimEventArgs(Simulator simulator, Primitive prim, ushort timeDilation, bool isAttachment) { @@ -3052,7 +3057,6 @@ namespace OpenMetaverse /// } /// /// - /// /// /// public class AvatarUpdateEventArgs : EventArgs @@ -3093,21 +3097,10 @@ namespace OpenMetaverse /// /// properties to display new attachments and send a request for additional properties containing the name of the /// attachment then display it on the window. - /// - /// // Subscribe to the event that gives us new Attachments worn - /// // by yours or another agent - /// Client.Objects.AttachmentUpdate += Objects_AttachmentUpdate; + /// /// // Subscribe to the event that provides additional primitive details /// Client.Objects.ObjectProperties += Objects_ObjectProperties; /// - /// private void Objects_AttachmentUpdate(object sender, PrimEventArgs e) - /// { - /// Console.WriteLine("New Attachment {0} {1} in {2}", e.Prim.ID, e.Prim.LocalID, e.Simulator.Name); - /// // send a request that causes the simulator to send us back the ObjectProperties - /// Client.Objects.SelectObject(e.Simulator, e.Prim.LocalID); - /// - /// } - /// /// // handle the properties data that arrives /// private void Objects_ObjectProperties(object sender, ObjectPropertiesEventArgs e) /// { diff --git a/OpenMetaverse/PacketDecoder.cs b/OpenMetaverse/PacketDecoder.cs index 22d1dee7..418fb4e0 100644 --- a/OpenMetaverse/PacketDecoder.cs +++ b/OpenMetaverse/PacketDecoder.cs @@ -6,7 +6,7 @@ using System.Text; namespace OpenMetaverse.Packets { - public class PacketDecoder + public static class PacketDecoder { /// /// A custom decoder callback @@ -17,8 +17,9 @@ namespace OpenMetaverse.Packets public delegate string CustomPacketDecoder(string fieldName, object fieldData); private static Dictionary> Callbacks = new Dictionary>(); - - public PacketDecoder() + + + public static void InitializeDecoder() { AddCallback("Color", DecodeColorField); AddCallback("TextColor", DecodeColorField); @@ -94,10 +95,6 @@ namespace OpenMetaverse.Packets AddCallback("EstateOwnerMessage.ParamList.Parameter", DecodeEstateParameter); - //AddCallback("ScriptDialog.Buttons.ButtonLabel", DecodeGenericByteArrayToFormattedString); - //AddCallback("FirstName", DecodeGenericByteArrayToFormattedString); - //AddCallback("LastName", DecodeGenericByteArrayToFormattedString); - //AddCallback("GroupData.Title", DecodeGenericByteArrayToFormattedString); AddCallback("Codec", DecodeImageCodec); AddCallback("Info.TeleportFlags", DecodeTeleportFlags); @@ -114,6 +111,8 @@ namespace OpenMetaverse.Packets AddCallback("TransferInfo.SourceType", DecodeTransferSourceType); AddCallback("TransferInfo.TargetType", DecodeTransferTargetType); AddCallback("TransferData.ChannelType", DecodeTransferChannelType); + // SendXferPacket + AddCallback("DataPacket.Data", DecodeBinaryToHexString); // Directory Manager AddCallback("DirClassifiedQuery.QueryData.QueryFlags", DecodeDirClassifiedQueryFlags); AddCallback("QueryData.QueryFlags", DecodeDirQueryFlags); @@ -126,6 +125,13 @@ namespace OpenMetaverse.Packets AddCallback("ParcelAccessListRequest.Data.Flags", DecodeParcelACL); AddCallback("ParcelAccessListReply.Data.Flags", DecodeParcelACL); //AddCallback("ParcelAccessListReply.List.Flags", DecodeParcelACLReply); + + // AgentAnimation + AddCallback("AnimID", DecodeAnimToConst); + + AddCallback("LayerData.LayerID.Type", DecodeLayerDataType); + + AddCallback("GroupPowers", DecodeGroupPowers); } /// @@ -133,7 +139,7 @@ namespace OpenMetaverse.Packets /// /// The key of the field to decode /// The custom decode handler - public void AddCallback(string key, CustomPacketDecoder customPacketHandler) + public static void AddCallback(string key, CustomPacketDecoder customPacketHandler) { if (Callbacks.ContainsKey(key)) { @@ -152,7 +158,7 @@ namespace OpenMetaverse.Packets /// /// The key of the field to decode /// The custom decode handler - public void RemoveCustomHandler(string key, CustomPacketDecoder customPacketHandler) + public static void RemoveCustomHandler(string key, CustomPacketDecoder customPacketHandler) { if (Callbacks.ContainsKey(key)) lock (Callbacks) @@ -793,7 +799,7 @@ namespace OpenMetaverse.Packets } else { - result.AppendFormat("{0,30}: {1,-40} [{2}]" + System.Environment.NewLine, + result.AppendFormat("{0,30}: {1,-40} [{2}]" + Environment.NewLine, field.Name, field.GetValue(obj), field.FieldType.Name); @@ -803,7 +809,7 @@ namespace OpenMetaverse.Packets private static string DecodeObjectPCode(string fieldName, object fieldData) { - return String.Format("{0,30}: {1,2} {2,-37} [PCode]", + return String.Format("{0,30}: {1,-2} {2,-37} [PCode]", fieldName, fieldData, "(" + (PCode)(byte)fieldData + ")"); @@ -873,6 +879,14 @@ namespace OpenMetaverse.Packets "(" + (DirectoryManager.ClassifiedFlags)(byte)fieldData + ")"); } + private static string DecodeGroupPowers(string fieldName, object fieldData) + { + return String.Format("{0,30}: {1,-20} {2,-19} [GroupPowers]", + fieldName, + fieldData, + "(" + (GroupPowers)(ulong)fieldData + ")"); + } + private static string DecodeParcelACL(string fieldName, object fieldData) { return String.Format("{0,30}: {1,-10} {2,-29} [AccessList]", @@ -1040,7 +1054,6 @@ namespace OpenMetaverse.Packets fieldName, fieldData, "(" + (RegionFlags)(uint)fieldData + ")"); - } private static string DecodeTransferParams(string fieldName, object fieldData) @@ -1095,7 +1108,7 @@ namespace OpenMetaverse.Packets } else { - Console.WriteLine("Oh Shit!"); + Console.WriteLine("Oh Poop!"); } result.Append(""); @@ -1144,6 +1157,14 @@ namespace OpenMetaverse.Packets } + private static string DecodeLayerDataType(string fieldName, object fieldData) + { + return String.Format("{0,30}: {1,-2} {2,-37} [LayerType]", + fieldName, + fieldData, + "(" + (TerrainPatch.LayerType)(byte)fieldData + ")"); + } + private static string DecodeMapAccess(string fieldName, object fieldData) { return String.Format("{0,30}: {1,-2} {2,-37} [SimAccess]", @@ -1200,7 +1221,7 @@ namespace OpenMetaverse.Packets String.Format("{0,30}", fieldName))); } - private string DecodeTerseTextureEntry(string fieldName, object fieldData) + private static string DecodeTerseTextureEntry(string fieldName, object fieldData) { byte[] block = (byte[]) fieldData; @@ -1340,7 +1361,7 @@ namespace OpenMetaverse.Packets fieldData.GetType().Name); } - public static string DecodeViewerEffectTypeData(string fieldName, object fieldData) + private static string DecodeViewerEffectTypeData(string fieldName, object fieldData) { byte[] data = (byte[])fieldData; StringBuilder sb = new StringBuilder(); @@ -1369,11 +1390,11 @@ namespace OpenMetaverse.Packets } else { - return String.Format("{0,30}: (No Decoder) Length={1}" + System.Environment.NewLine, fieldName, data.Length) + Utils.BytesToHexString(data, String.Format("{0,30}", "")); + return String.Format("{0,30}: (No Decoder) Length={1}" + Environment.NewLine, fieldName, data.Length) + Utils.BytesToHexString(data, String.Format("{0,30}", "")); } } - public static string DecodeViewerEffectType(string fieldName, object fieldData) + private static string DecodeViewerEffectType(string fieldName, object fieldData) { return String.Format("{0,30}: {1,-2} {2,-37} [{3}]", fieldName, @@ -1381,6 +1402,18 @@ namespace OpenMetaverse.Packets "(" + (EffectType)(byte)fieldData + ")", fieldData.GetType().Name); } + + private static string DecodeAnimToConst(string fieldName, object fieldData) + { + string animConst = "UUID"; + Dictionary animsDict = Animations.ToDictionary(); + if (animsDict.ContainsKey((UUID)fieldData)) + animConst = animsDict[(UUID)fieldData]; + return String.Format("{0,30}: {1,-40} [{2}]", + fieldName, + fieldData, + animConst); + } #endregion /// @@ -1388,15 +1421,15 @@ namespace OpenMetaverse.Packets /// /// The Packet /// A formatted string of values of the nested items in the Packet object - public string PacketToString(Packet packet) + public static string PacketToString(Packet packet) { StringBuilder result = new StringBuilder(); - result.AppendFormat("Packet Type: {0}" + System.Environment.NewLine, packet.Type); + result.AppendFormat("Packet Type: {0} http://lib.openmetaverse.org/wiki/{0} http://wiki.secondlife.com/wiki/{0}" + Environment.NewLine, packet.Type); result.AppendLine("[Packet Header]"); // payload - result.AppendFormat("Sequence: {0}" + System.Environment.NewLine, packet.Header.Sequence); - result.AppendFormat(" Options: {0}" + System.Environment.NewLine, InterpretOptions(packet.Header)); + result.AppendFormat("Sequence: {0}" + Environment.NewLine, packet.Header.Sequence); + result.AppendFormat(" Options: {0}" + Environment.NewLine, InterpretOptions(packet.Header)); result.AppendLine(); result.AppendLine("[Packet Payload]"); @@ -1422,8 +1455,8 @@ namespace OpenMetaverse.Packets } return result.ToString(); } - - private static string InterpretOptions(Header header) + + public static string InterpretOptions(Header header) { return "[" + (header.AppendedAcks ? "Ack" : " ") @@ -1455,14 +1488,14 @@ namespace OpenMetaverse.Packets } else if (fields[i].FieldType.IsArray) // default for an array (probably a byte[]) { - result.AppendFormat("{0,30}: {1,-40} [{2}]" + System.Environment.NewLine, + result.AppendFormat("{0,30}: {1,-40} [{2}]" + Environment.NewLine, fields[i].Name, - fields[i].GetValue(nestedArrayRecord), - fields[i].GetValue(nestedArrayRecord).GetType().Name); + Utils.BytesToString((byte[])fields[i].GetValue(nestedArrayRecord)), + /*fields[i].GetValue(nestedArrayRecord).GetType().Name*/ "String"); } else // default for a field { - result.AppendFormat("{0,30}: {1,-40} [{2}]" + System.Environment.NewLine, + result.AppendFormat("{0,30}: {1,-40} [{2}]" + Environment.NewLine, fields[i].Name, fields[i].GetValue(nestedArrayRecord), fields[i].GetValue(nestedArrayRecord).GetType().Name); @@ -1485,7 +1518,7 @@ namespace OpenMetaverse.Packets else { var p = propertyInfo.GetValue(nestedArrayRecord, null); - /* Leave the c for now at the end, it signifies something useful that still needs to be done */ + /* Leave the c for now at the end, it signifies something useful that still needs to be done i.e. a decoder written */ result.AppendFormat("{0, 30}: {1,-40} [{2}]c" + Environment.NewLine, propertyInfo.Name, Utils.BytesToString((byte[])propertyInfo.GetValue(nestedArrayRecord, null)), @@ -1510,10 +1543,18 @@ namespace OpenMetaverse.Packets { result.AppendLine(special); } + else if (packetValueField.FieldType.IsArray) + { + result.AppendFormat("{0,30}: {1,-40} [{2}]" + Environment.NewLine, + packetValueField.Name, + Utils.BytesToString((byte[])packetValueField.GetValue(packetDataObject)), + /*packetValueField.FieldType.Name*/ "String"); + } else { result.AppendFormat("{0,30}: {1,-40} [{2}]" + Environment.NewLine, packetValueField.Name, packetValueField.GetValue(packetDataObject), packetValueField.FieldType.Name); + } } @@ -1577,5 +1618,106 @@ namespace OpenMetaverse.Packets } return false; } + + /// + /// Decode an IMessage object into a beautifully formatted string + /// + /// The IMessage object + /// A formatted string containing the names and values of the source object + public static string MessageToString(object message, int recurseLevel) + { + if (message == null) + return String.Empty; + + StringBuilder result = new StringBuilder(); + // common/custom types + if (recurseLevel <= 0) + { + result.AppendFormat("Message Type: {0} http://lib.openmetaverse.org/wiki/{0}" + Environment.NewLine, message.GetType().Name); + } + else + { + string pad = " +--".PadLeft(recurseLevel + 3); + result.AppendFormat("{0} {1}" + Environment.NewLine, pad, message.GetType().Name); + } + + recurseLevel++; + + foreach (FieldInfo messageField in message.GetType().GetFields()) + { + // an abstract message class + if (messageField.FieldType.IsAbstract) + { + result.AppendLine(MessageToString(messageField.GetValue(message), recurseLevel)); + } + // a byte array + else if (messageField.GetValue(message) != null && messageField.GetValue(message).GetType() == typeof(Byte[])) + { + result.AppendFormat("{0, 30}:" + Environment.NewLine, messageField.Name); + + result.AppendFormat("{0}" + Environment.NewLine, + Utils.BytesToHexString((byte[])messageField.GetValue(message), + String.Format("{0,30}", ""))); + } + + // an array of class objects + else if (messageField.FieldType.IsArray) + { + var messageObjectData = messageField.GetValue(message); + result.AppendFormat("-- {0} --" + Environment.NewLine, messageField.FieldType.Name); + foreach (object nestedArrayObject in messageObjectData as Array) + { + result.AppendFormat("{0,30}" + Environment.NewLine, "-- " + nestedArrayObject.GetType().Name + " --"); + + foreach (FieldInfo nestedField in nestedArrayObject.GetType().GetFields()) + { + if (nestedField.FieldType.IsEnum) + { + result.AppendFormat("{0,30}: {1,-10} {2,-29} [{3}]" + Environment.NewLine, + nestedField.Name, + Enum.Format(nestedField.GetValue(nestedArrayObject).GetType(), + nestedField.GetValue(nestedArrayObject), "D"), + "(" + nestedField.GetValue(nestedArrayObject) + ")", + nestedField.GetValue(nestedArrayObject).GetType().Name); + } + else if (nestedField.FieldType.IsInterface) + { + result.AppendLine(MessageToString(nestedField.GetValue(nestedArrayObject), recurseLevel)); + } + else + { + result.AppendFormat("{0, 30}: {1,-40} [{2}]" + Environment.NewLine, + nestedField.Name, + nestedField.GetValue(nestedArrayObject), + nestedField.GetValue(nestedArrayObject).GetType().Name); + } + } + } + } + else + { + if (messageField.FieldType.IsEnum) + { + result.AppendFormat("{0,30}: {1,-2} {2,-37} [{3}]" + Environment.NewLine, + messageField.Name, + Enum.Format(messageField.GetValue(message).GetType(), + messageField.GetValue(message), "D"), + "(" + messageField.GetValue(message) + ")", + messageField.FieldType.Name); + } + else if (messageField.FieldType.IsInterface) + { + result.AppendLine(MessageToString(messageField.GetValue(message), recurseLevel)); + } + else + { + result.AppendFormat("{0, 30}: {1,-40} [{2}]" + Environment.NewLine, + messageField.Name, messageField.GetValue(message), messageField.FieldType.Name); + } + } + } + + return result.ToString(); + } } } diff --git a/OpenMetaverse/Simulator.cs b/OpenMetaverse/Simulator.cs index 66c2b301..c373829a 100644 --- a/OpenMetaverse/Simulator.cs +++ b/OpenMetaverse/Simulator.cs @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007-2008, openmetaverse.org + * Copyright (c) 2007-2009, openmetaverse.org * All rights reserved. * * - Redistribution and use in source and binary forms, with or without @@ -62,11 +62,11 @@ namespace OpenMetaverse BlockLandResell = 1 << 7, /// All content is wiped nightly Sandbox = 1 << 8, - /// + /// Unknown: Related to the availability of an overview world map tile.(Think mainland images when zoomed out.) NullLayer = 1 << 9, - /// + /// Unknown: Related to region debug flags. Possibly to skip processing of agent interaction with world. SkipAgentAction = 1 << 10, - /// + /// Region does not update agent prim interest lists. Internal debugging option. SkipUpdateInterestList = 1 << 11, /// No collision detection for non-agent objects SkipCollisions = 1 << 12, @@ -74,13 +74,13 @@ namespace OpenMetaverse SkipScripts = 1 << 13, /// All physics processing is turned off SkipPhysics = 1 << 14, - /// + /// Region can be seen from other regions on world map. (Legacy world map option?) ExternallyVisible = 1 << 15, - /// + /// Region can be seen from mainland on world map. (Legacy world map option?) MainlandVisible = 1 << 16, - /// + /// Agents not explicitly on the access list can visit the region. PublicAllowed = 1 << 17, - /// + /// Traffic calculations are not run across entire region, overrides parcel settings. BlockDwell = 1 << 18, /// Flight is disabled (not currently enforced by the sim) NoFly = 1 << 19, @@ -88,7 +88,7 @@ namespace OpenMetaverse AllowDirectTeleport = 1 << 20, /// Estate owner has temporarily disabled scripting EstateSkipScripts = 1 << 21, - /// + /// Restricts the usage of the LSL llPushObject function, applies to whole region. RestrictPushObject = 1 << 22, /// Deny agents with no payment info on file DenyAnonymous = 1 << 23, @@ -96,12 +96,17 @@ namespace OpenMetaverse DenyIdentified = 1 << 24, /// Deny agents who have made a monetary transaction DenyTransacted = 1 << 25, - /// + /// Parcels within the region may be joined or divided by anyone, not just estate owners/managers. AllowParcelChanges = 1 << 26, - /// + /// Abuse reports sent from within this region are sent to the estate owner defined email. AbuseEmailToEstateOwner = 1 << 27, /// Region is Voice Enabled - AllowVoice = 1 << 28 + AllowVoice = 1 << 28, + /// Removes the ability from parcel owners to set their parcels to show in search. + BlockParcelSearch = 1 << 29, + /// Deny agents who have not been age verified from entering the region. + DenyAgeUnverified = 1 << 30 + } /// diff --git a/Programs/GridProxy/GridProxy.cs b/Programs/GridProxy/GridProxy.cs index eed5124a..16d000ce 100644 --- a/Programs/GridProxy/GridProxy.cs +++ b/Programs/GridProxy/GridProxy.cs @@ -611,8 +611,7 @@ namespace GridProxy CapsRequest capReq = null; bool shortCircuit = false; bool requestFailed = false; if (cap != null) - { - + { capReq = new CapsRequest(cap); if (cap.ReqFmt == CapsDataFormat.OSD) @@ -669,7 +668,12 @@ namespace GridProxy req.Headers[header] = headers[header]; } } - + if (capReq == null) + { + // this probably occured when we shut down the proxy and restarted it and are receiving + // data from a dead connection + return; + } capReq.RequestHeaders = req.Headers; req.Method = meth; @@ -1018,6 +1022,10 @@ namespace GridProxy { lock (this) { + // incase some silly person tries to access with their web browser + if (content.Length <= 0) + return; + // convert the body into an XML-RPC request XmlRpcRequest request = (XmlRpcRequest)(new XmlRpcRequestDeserializer()).Deserialize(Encoding.UTF8.GetString(content)); diff --git a/Programs/GridProxy/Plugins/Analyst.cs b/Programs/GridProxy/Plugins/Analyst.cs index 393d9767..9629461a 100644 --- a/Programs/GridProxy/Plugins/Analyst.cs +++ b/Programs/GridProxy/Plugins/Analyst.cs @@ -53,10 +53,11 @@ public class Analyst : ProxyPlugin private Assembly openmvAssembly; private StreamWriter output; - private PacketDecoder DecodePacket = new PacketDecoder(); - + //private PacketDecoder DecodePacket = new PacketDecoder(); + public Analyst(ProxyFrame frame) { + PacketDecoder.InitializeDecoder(); this.frame = frame; this.proxy = frame.proxy; } @@ -829,8 +830,9 @@ public class Analyst : ProxyPlugin // LogPacket: dump a packet to the console private void LogPacket(Packet packet, IPEndPoint endPoint, Direction direction) { - string packetText = DecodePacket.PacketToString(packet); - + + //string packetText = DecodePacket.PacketToString(packet); + string packetText = PacketDecoder.PacketToString(packet); if (logGrep == null || (logGrep != null && Regex.IsMatch(packetText, logGrep))) { string line = String.Format("{0}\n{1} {2,21} {3,5} {4}{5}{6}" diff --git a/Programs/WinGridProxy/AboutBox1.Designer.cs b/Programs/WinGridProxy/AboutBox1.Designer.cs index 0d44ce3f..fb83e9ae 100644 --- a/Programs/WinGridProxy/AboutBox1.Designer.cs +++ b/Programs/WinGridProxy/AboutBox1.Designer.cs @@ -160,8 +160,8 @@ this.richTextBox1.Name = "richTextBox1"; this.richTextBox1.Size = new System.Drawing.Size(274, 79); this.richTextBox1.TabIndex = 25; - this.richTextBox1.Text = "Icons Courtesy of http://www.famfamfam.com/lab/icons/silk/\n\nHexbox Control \nhttp:" + - "//sourceforge.net/projects/hexbox/"; + this.richTextBox1.Text = "Written by Jim Radford \n\nIcons Courtesy of http://www.famfamfam" + + ".com/lab/icons/silk/\n\nHexbox Control \nhttp://sourceforge.net/projects/hexbox/"; // // AboutBox1 // diff --git a/Programs/WinGridProxy/FormWinGridProxy.Designer.cs b/Programs/WinGridProxy/FormWinGridProxy.Designer.cs index 977ebb10..ffa45a50 100644 --- a/Programs/WinGridProxy/FormWinGridProxy.Designer.cs +++ b/Programs/WinGridProxy/FormWinGridProxy.Designer.cs @@ -30,26 +30,13 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormWinGridProxy)); - this.panelProxyConfig = new System.Windows.Forms.Panel(); - this.comboBoxListenAddress = new System.Windows.Forms.ComboBox(); - this.comboBoxLoginURL = new System.Windows.Forms.ComboBox(); - this.label3 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.textBoxProxyPort = new System.Windows.Forms.TextBox(); - this.button1 = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); + System.Windows.Forms.ListViewGroup listViewGroup1 = new System.Windows.Forms.ListViewGroup("Login", System.Windows.Forms.HorizontalAlignment.Left); + System.Windows.Forms.ListViewGroup listViewGroup2 = new System.Windows.Forms.ListViewGroup("Packets", System.Windows.Forms.HorizontalAlignment.Left); + System.Windows.Forms.ListViewGroup listViewGroup3 = new System.Windows.Forms.ListViewGroup("Capabilities", System.Windows.Forms.HorizontalAlignment.Left); + System.Windows.Forms.ListViewGroup listViewGroup4 = new System.Windows.Forms.ListViewGroup("EventQueue Messages", System.Windows.Forms.HorizontalAlignment.Left); 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(); this.toolStripMenuSessionsRemove = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStripRemove = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItemRemoveAll = new System.Windows.Forms.ToolStripMenuItem(); @@ -63,7 +50,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,10 +62,11 @@ 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); - this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabControlMain = new System.Windows.Forms.TabControl(); this.tabPageSummary = new System.Windows.Forms.TabPage(); this.richTextBoxDebugLog = new System.Windows.Forms.RichTextBox(); this.panelStats = new System.Windows.Forms.Panel(); @@ -98,17 +85,17 @@ this.label5 = new System.Windows.Forms.Label(); this.label7 = new System.Windows.Forms.Label(); this.tabPageFilters = new System.Windows.Forms.TabPage(); + this.toolStripFilters = new System.Windows.Forms.ToolStrip(); + this.loadFilterSelectionsToolStripMenuItem = new System.Windows.Forms.ToolStripButton(); + this.saveFilterSelectionsToolStripMenuItem = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripSplitButton1 = new System.Windows.Forms.ToolStripSplitButton(); + this.autoAddNewDiscoveredMessagesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 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(); @@ -121,8 +108,8 @@ this.tabPageRequestJson = new System.Windows.Forms.TabPage(); this.richTextBoxNotationRequest = new System.Windows.Forms.RichTextBox(); this.tabPageHexRequest = new System.Windows.Forms.TabPage(); - this.statusStrip2 = new System.Windows.Forms.StatusStrip(); - this.labelRequestHex = new System.Windows.Forms.ToolStripStatusLabel(); + this.buttonSaveRequestHex = new System.Windows.Forms.Button(); + this.labelHexRequestStatus = new System.Windows.Forms.Label(); this.hexBoxRequest = new Be.Windows.Forms.HexBox(); this.tabControlInspectorResponse = new System.Windows.Forms.TabControl(); this.tabPageDecodeResponse = new System.Windows.Forms.TabPage(); @@ -134,30 +121,29 @@ this.tabPageResponseJson = new System.Windows.Forms.TabPage(); this.richTextBoxNotationResponse = new System.Windows.Forms.RichTextBox(); this.tabPageHexViewResponse = new System.Windows.Forms.TabPage(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.labelResponseHex = new System.Windows.Forms.ToolStripStatusLabel(); + this.buttonExportRawHex = new System.Windows.Forms.Button(); + this.labelHexBoxResponseStatus = new System.Windows.Forms.Label(); this.hexBoxResponse = new Be.Windows.Forms.HexBox(); this.tabPageInject = new System.Windows.Forms.TabPage(); - this.radioButtonViewer = new System.Windows.Forms.RadioButton(); - this.radioButtonSimulator = new System.Windows.Forms.RadioButton(); - 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.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(); + this.toolStripMenu = new System.Windows.Forms.ToolStrip(); this.toolStripFileMenu = new System.Windows.Forms.ToolStripDropDownButton(); - this.captureToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); this.saveSessionArchiveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.loadSessionArchiveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); + this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.asDecodedTextToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.autoScrollSessionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.enableStatisticsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.saveOptionsOnExitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.startProxyOnStartupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.saveSettingsToolStripMenuItem = 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(); @@ -172,12 +158,6 @@ this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); this.findToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripDropDownButton5 = new System.Windows.Forms.ToolStripDropDownButton(); - this.saveFilterSelectionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.loadFilterSelectionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); - this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.autoAddNewDiscoveredMessagesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripDropDownButton4 = new System.Windows.Forms.ToolStripDropDownButton(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutWinGridProxyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -218,18 +198,33 @@ this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.saveFileDialog2 = new System.Windows.Forms.SaveFileDialog(); this.openFileDialog2 = new System.Windows.Forms.OpenFileDialog(); - this.statusStrip3 = new System.Windows.Forms.StatusStrip(); - this.toolStripMainLabel = new System.Windows.Forms.ToolStripStatusLabel(); this.contextMenuStripFilterOptions = new System.Windows.Forms.ContextMenuStrip(this.components); this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); this.uncheckAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); this.autoColorizeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.colorDialog1 = new System.Windows.Forms.ColorDialog(); - this.exportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); - this.asDecodedTextToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.panelProxyConfig.SuspendLayout(); + this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer(); + this.toolStripLogin = new System.Windows.Forms.ToolStrip(); + this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + this.comboBoxListenAddress = new System.Windows.Forms.ToolStripComboBox(); + this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel(); + this.textBoxProxyPort = new System.Windows.Forms.ToolStripTextBox(); + this.toolStripLabel3 = new System.Windows.Forms.ToolStripLabel(); + this.comboBoxLoginURL = new System.Windows.Forms.ToolStripComboBox(); + this.buttonStartProxy = new System.Windows.Forms.ToolStripButton(); + this.saveFileDialog3 = new System.Windows.Forms.SaveFileDialog(); + 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.listViewMessageFilters = new WinGridProxy.ListViewNoFlicker(); + this.columnHeaderName = new System.Windows.Forms.ColumnHeader(); this.panelMainWindow.SuspendLayout(); this.splitContainerSessionsTabs.Panel1.SuspendLayout(); this.splitContainerSessionsTabs.Panel2.SuspendLayout(); @@ -238,12 +233,13 @@ this.contextMenuStripRemove.SuspendLayout(); this.contextMenuStripSelect.SuspendLayout(); this.contextMenuStripMark.SuspendLayout(); - this.tabControl1.SuspendLayout(); + this.tabControlMain.SuspendLayout(); this.tabPageSummary.SuspendLayout(); this.panelStats.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox1.SuspendLayout(); this.tabPageFilters.SuspendLayout(); + this.toolStripFilters.SuspendLayout(); this.splitContainerFilters.Panel1.SuspendLayout(); this.splitContainerFilters.Panel2.SuspendLayout(); this.splitContainerFilters.SuspendLayout(); @@ -259,112 +255,29 @@ this.tabPageXMLRequest.SuspendLayout(); this.tabPageRequestJson.SuspendLayout(); this.tabPageHexRequest.SuspendLayout(); - this.statusStrip2.SuspendLayout(); this.tabControlInspectorResponse.SuspendLayout(); this.tabPageDecodeResponse.SuspendLayout(); this.tabPageInspectorRAWResponse.SuspendLayout(); this.tabPageInspectorXMLResponse.SuspendLayout(); this.tabPageResponseJson.SuspendLayout(); this.tabPageHexViewResponse.SuspendLayout(); - this.statusStrip1.SuspendLayout(); this.tabPageInject.SuspendLayout(); - this.toolStrip1.SuspendLayout(); + this.toolStripMenu.SuspendLayout(); this.contextMenuStripCopy.SuspendLayout(); - this.statusStrip3.SuspendLayout(); this.contextMenuStripFilterOptions.SuspendLayout(); + this.toolStripContainer1.ContentPanel.SuspendLayout(); + this.toolStripContainer1.TopToolStripPanel.SuspendLayout(); + this.toolStripContainer1.SuspendLayout(); + this.toolStripLogin.SuspendLayout(); this.SuspendLayout(); // - // panelProxyConfig - // - this.panelProxyConfig.Controls.Add(this.comboBoxListenAddress); - this.panelProxyConfig.Controls.Add(this.comboBoxLoginURL); - this.panelProxyConfig.Controls.Add(this.label3); - this.panelProxyConfig.Controls.Add(this.label2); - this.panelProxyConfig.Controls.Add(this.textBoxProxyPort); - this.panelProxyConfig.Controls.Add(this.button1); - this.panelProxyConfig.Controls.Add(this.label1); - this.panelProxyConfig.Location = new System.Drawing.Point(12, 28); - this.panelProxyConfig.Name = "panelProxyConfig"; - this.panelProxyConfig.Size = new System.Drawing.Size(1070, 32); - this.panelProxyConfig.TabIndex = 0; - // - // comboBoxListenAddress - // - this.comboBoxListenAddress.FormattingEnabled = true; - this.comboBoxListenAddress.Location = new System.Drawing.Point(98, 6); - this.comboBoxListenAddress.Name = "comboBoxListenAddress"; - this.comboBoxListenAddress.Size = new System.Drawing.Size(139, 21); - this.comboBoxListenAddress.TabIndex = 7; - this.comboBoxListenAddress.Text = "127.0.0.1"; - // - // comboBoxLoginURL - // - this.comboBoxLoginURL.FormattingEnabled = true; - this.comboBoxLoginURL.Items.AddRange(new object[] { - "https://login.agni.lindenlab.com/cgi-bin/login.cgi", - "https://login.aditi.lindenlab.com/cgi-bin/login.cgi", - "http://127.0.0.1:8002", - "http://osgrid.org:8002"}); - this.comboBoxLoginURL.Location = new System.Drawing.Point(393, 6); - this.comboBoxLoginURL.Name = "comboBoxLoginURL"; - this.comboBoxLoginURL.Size = new System.Drawing.Size(252, 21); - this.comboBoxLoginURL.TabIndex = 6; - this.comboBoxLoginURL.Text = "https://login.agni.lindenlab.com/cgi-bin/login.cgi"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(329, 9); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(58, 13); - this.label3.TabIndex = 5; - this.label3.Text = "Login URL"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(3, 9); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(89, 13); - this.label2.TabIndex = 4; - this.label2.Text = "Listen IP Address"; - // - // textBoxProxyPort - // - this.textBoxProxyPort.Location = new System.Drawing.Point(275, 6); - this.textBoxProxyPort.Name = "textBoxProxyPort"; - this.textBoxProxyPort.Size = new System.Drawing.Size(48, 20); - this.textBoxProxyPort.TabIndex = 3; - this.textBoxProxyPort.Text = "8080"; - // - // button1 - // - this.button1.Location = new System.Drawing.Point(651, 4); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(75, 23); - this.button1.TabIndex = 2; - this.button1.Text = "Start Proxy"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.buttonStartProxy_Click); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(243, 9); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(26, 13); - this.label1.TabIndex = 1; - this.label1.Text = "Port"; - // // panelMainWindow // - this.panelMainWindow.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.panelMainWindow.Controls.Add(this.splitContainerSessionsTabs); - this.panelMainWindow.Location = new System.Drawing.Point(12, 66); + this.panelMainWindow.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelMainWindow.Location = new System.Drawing.Point(0, 0); this.panelMainWindow.Name = "panelMainWindow"; - this.panelMainWindow.Size = new System.Drawing.Size(1087, 428); + this.panelMainWindow.Size = new System.Drawing.Size(1111, 494); this.panelMainWindow.TabIndex = 1; // // splitContainerSessionsTabs @@ -380,70 +293,15 @@ // // splitContainerSessionsTabs.Panel2 // - this.splitContainerSessionsTabs.Panel2.Controls.Add(this.tabControl1); - this.splitContainerSessionsTabs.Size = new System.Drawing.Size(1087, 428); - this.splitContainerSessionsTabs.SplitterDistance = 469; + this.splitContainerSessionsTabs.Panel2.Controls.Add(this.tabControlMain); + this.splitContainerSessionsTabs.Size = new System.Drawing.Size(1111, 494); + this.splitContainerSessionsTabs.SplitterDistance = 479; 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[] { - this.toolStripMenuItemAutoScroll, - this.toolStripSeparator13, this.toolStripMenuSessionsRemove, this.selectToolStripMenuItem2, this.toolStripSeparatorFilterPacketByName, @@ -453,22 +311,9 @@ this.toolStripSeparator16, this.findToolStripMenuItem1}); this.contextMenuStripSessions.Name = "contextMenuStripSessions"; - this.contextMenuStripSessions.Size = new System.Drawing.Size(176, 160); + this.contextMenuStripSessions.Size = new System.Drawing.Size(176, 132); this.contextMenuStripSessions.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStripSessions_Opening); // - // toolStripMenuItemAutoScroll - // - this.toolStripMenuItemAutoScroll.CheckOnClick = true; - this.toolStripMenuItemAutoScroll.Name = "toolStripMenuItemAutoScroll"; - this.toolStripMenuItemAutoScroll.Size = new System.Drawing.Size(175, 22); - this.toolStripMenuItemAutoScroll.Text = "Auto Scroll"; - this.toolStripMenuItemAutoScroll.CheckedChanged += new System.EventHandler(this.sessionEnableAutoScroll_CheckedChanged); - // - // toolStripSeparator13 - // - this.toolStripSeparator13.Name = "toolStripSeparator13"; - this.toolStripSeparator13.Size = new System.Drawing.Size(172, 6); - // // toolStripMenuSessionsRemove // this.toolStripMenuSessionsRemove.DropDown = this.contextMenuStripRemove; @@ -483,7 +328,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(143, 70); // // toolStripMenuItemRemoveAll @@ -568,13 +413,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(137, 22); - this.selectToolStripMenuItem1.Text = "Select"; - // // toolStripSeparatorFilterPacketByName // this.toolStripSeparatorFilterPacketByName.Name = "toolStripSeparatorFilterPacketByName"; @@ -663,6 +501,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(137, 22); + this.markToolStripMenuItem1.Text = "Mark"; + // // toolStripSeparator16 // this.toolStripSeparator16.Name = "toolStripSeparator16"; @@ -683,28 +528,33 @@ this.imageList1.Images.SetKeyName(0, "req_in.png"); this.imageList1.Images.SetKeyName(1, "computer_go.png"); // - // tabControl1 + // tabControlMain // - this.tabControl1.Controls.Add(this.tabPageSummary); - this.tabControl1.Controls.Add(this.tabPageFilters); - this.tabControl1.Controls.Add(this.tabPageInspect); - this.tabControl1.Controls.Add(this.tabPageInject); - this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tabControl1.Location = new System.Drawing.Point(0, 0); - this.tabControl1.Name = "tabControl1"; - this.tabControl1.Padding = new System.Drawing.Point(10, 6); - this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(613, 428); - this.tabControl1.TabIndex = 0; + this.tabControlMain.Controls.Add(this.tabPageSummary); + this.tabControlMain.Controls.Add(this.tabPageFilters); + this.tabControlMain.Controls.Add(this.tabPageInspect); + this.tabControlMain.Controls.Add(this.tabPageInject); + this.tabControlMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControlMain.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabControlMain.HotTrack = true; + this.tabControlMain.Location = new System.Drawing.Point(0, 0); + this.tabControlMain.Multiline = true; + this.tabControlMain.Name = "tabControlMain"; + this.tabControlMain.Padding = new System.Drawing.Point(10, 6); + this.tabControlMain.SelectedIndex = 0; + this.tabControlMain.Size = new System.Drawing.Size(627, 494); + this.tabControlMain.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; + this.tabControlMain.TabIndex = 0; // // tabPageSummary // + this.tabPageSummary.BackColor = System.Drawing.Color.Transparent; this.tabPageSummary.Controls.Add(this.richTextBoxDebugLog); this.tabPageSummary.Controls.Add(this.panelStats); - this.tabPageSummary.Location = new System.Drawing.Point(4, 28); + this.tabPageSummary.Location = new System.Drawing.Point(4, 30); this.tabPageSummary.Name = "tabPageSummary"; this.tabPageSummary.Padding = new System.Windows.Forms.Padding(3); - this.tabPageSummary.Size = new System.Drawing.Size(605, 396); + this.tabPageSummary.Size = new System.Drawing.Size(619, 460); this.tabPageSummary.TabIndex = 0; this.tabPageSummary.Text = "Summary"; this.tabPageSummary.UseVisualStyleBackColor = true; @@ -715,26 +565,29 @@ | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.richTextBoxDebugLog.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.richTextBoxDebugLog.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.richTextBoxDebugLog.BorderStyle = System.Windows.Forms.BorderStyle.None; this.richTextBoxDebugLog.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.richTextBoxDebugLog.Location = new System.Drawing.Point(6, 101); this.richTextBoxDebugLog.Name = "richTextBoxDebugLog"; this.richTextBoxDebugLog.ReadOnly = true; this.richTextBoxDebugLog.ShowSelectionMargin = true; - this.richTextBoxDebugLog.Size = new System.Drawing.Size(592, 289); + this.richTextBoxDebugLog.Size = new System.Drawing.Size(606, 352); this.richTextBoxDebugLog.TabIndex = 3; this.richTextBoxDebugLog.Text = ""; + this.richTextBoxDebugLog.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.richTextBoxDecodedRequest_LinkClicked); // // panelStats // this.panelStats.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.panelStats.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.panelStats.BackColor = System.Drawing.Color.Transparent; this.panelStats.Controls.Add(this.groupBox2); this.panelStats.Controls.Add(this.groupBox1); this.panelStats.Location = new System.Drawing.Point(6, 6); this.panelStats.Name = "panelStats"; - this.panelStats.Size = new System.Drawing.Size(592, 89); + this.panelStats.Size = new System.Drawing.Size(606, 89); this.panelStats.TabIndex = 2; // // groupBox2 @@ -757,7 +610,7 @@ this.labelPacketsTotal.AutoSize = true; this.labelPacketsTotal.Location = new System.Drawing.Point(81, 58); this.labelPacketsTotal.Name = "labelPacketsTotal"; - this.labelPacketsTotal.Size = new System.Drawing.Size(56, 13); + this.labelPacketsTotal.Size = new System.Drawing.Size(64, 15); this.labelPacketsTotal.TabIndex = 8; this.labelPacketsTotal.Text = "0 (0 bytes)"; // @@ -766,7 +619,7 @@ this.label1PacketsOut.AutoSize = true; this.label1PacketsOut.Location = new System.Drawing.Point(81, 37); this.label1PacketsOut.Name = "label1PacketsOut"; - this.label1PacketsOut.Size = new System.Drawing.Size(56, 13); + this.label1PacketsOut.Size = new System.Drawing.Size(64, 15); this.label1PacketsOut.TabIndex = 7; this.label1PacketsOut.Text = "0 (0 bytes)"; // @@ -775,7 +628,7 @@ this.labelPacketsIn.AutoSize = true; this.labelPacketsIn.Location = new System.Drawing.Point(81, 16); this.labelPacketsIn.Name = "labelPacketsIn"; - this.labelPacketsIn.Size = new System.Drawing.Size(56, 13); + this.labelPacketsIn.Size = new System.Drawing.Size(64, 15); this.labelPacketsIn.TabIndex = 6; this.labelPacketsIn.Text = "0 (0 bytes)"; // @@ -784,7 +637,7 @@ this.label10.AutoSize = true; this.label10.Location = new System.Drawing.Point(6, 58); this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(76, 13); + this.label10.Size = new System.Drawing.Size(84, 15); this.label10.TabIndex = 5; this.label10.Text = "Packets Total:"; // @@ -793,7 +646,7 @@ this.label9.AutoSize = true; this.label9.Location = new System.Drawing.Point(13, 37); this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(69, 13); + this.label9.Size = new System.Drawing.Size(76, 15); this.label9.TabIndex = 4; this.label9.Text = "Packets Out:"; // @@ -802,7 +655,7 @@ this.label8.AutoSize = true; this.label8.Location = new System.Drawing.Point(21, 16); this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(61, 13); + this.label8.Size = new System.Drawing.Size(67, 15); this.label8.TabIndex = 3; this.label8.Text = "Packets In:"; // @@ -815,7 +668,7 @@ this.groupBox1.Controls.Add(this.label6); this.groupBox1.Controls.Add(this.label5); this.groupBox1.Controls.Add(this.label7); - this.groupBox1.Location = new System.Drawing.Point(368, 3); + this.groupBox1.Location = new System.Drawing.Point(382, 3); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(221, 80); this.groupBox1.TabIndex = 2; @@ -827,7 +680,7 @@ this.labelCapsTotal.AutoSize = true; this.labelCapsTotal.Location = new System.Drawing.Point(81, 58); this.labelCapsTotal.Name = "labelCapsTotal"; - this.labelCapsTotal.Size = new System.Drawing.Size(56, 13); + this.labelCapsTotal.Size = new System.Drawing.Size(64, 15); this.labelCapsTotal.TabIndex = 5; this.labelCapsTotal.Text = "0 (0 bytes)"; // @@ -836,7 +689,7 @@ this.labelCapsOut.AutoSize = true; this.labelCapsOut.Location = new System.Drawing.Point(81, 37); this.labelCapsOut.Name = "labelCapsOut"; - this.labelCapsOut.Size = new System.Drawing.Size(56, 13); + this.labelCapsOut.Size = new System.Drawing.Size(64, 15); this.labelCapsOut.TabIndex = 4; this.labelCapsOut.Text = "0 (0 bytes)"; // @@ -845,7 +698,7 @@ this.labelCapsIn.AutoSize = true; this.labelCapsIn.Location = new System.Drawing.Point(81, 16); this.labelCapsIn.Name = "labelCapsIn"; - this.labelCapsIn.Size = new System.Drawing.Size(56, 13); + this.labelCapsIn.Size = new System.Drawing.Size(64, 15); this.labelCapsIn.TabIndex = 3; this.labelCapsIn.Text = "0 (0 bytes)"; // @@ -854,7 +707,7 @@ this.label6.AutoSize = true; this.label6.Location = new System.Drawing.Point(21, 37); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(54, 13); + this.label6.Size = new System.Drawing.Size(62, 15); this.label6.TabIndex = 1; this.label6.Text = "Caps Out:"; // @@ -863,7 +716,7 @@ this.label5.AutoSize = true; this.label5.Location = new System.Drawing.Point(29, 16); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(46, 13); + this.label5.Size = new System.Drawing.Size(53, 15); this.label5.TabIndex = 0; this.label5.Text = "Caps In:"; // @@ -872,25 +725,88 @@ this.label7.AutoSize = true; this.label7.Location = new System.Drawing.Point(14, 58); this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(61, 13); + this.label7.Size = new System.Drawing.Size(70, 15); this.label7.TabIndex = 2; this.label7.Text = "Caps Total:"; // // tabPageFilters // + this.tabPageFilters.Controls.Add(this.toolStripFilters); this.tabPageFilters.Controls.Add(this.splitContainerFilters); - this.tabPageFilters.Location = new System.Drawing.Point(4, 28); + this.tabPageFilters.Location = new System.Drawing.Point(4, 30); this.tabPageFilters.Name = "tabPageFilters"; this.tabPageFilters.Padding = new System.Windows.Forms.Padding(3); - this.tabPageFilters.Size = new System.Drawing.Size(605, 396); + this.tabPageFilters.Size = new System.Drawing.Size(619, 460); this.tabPageFilters.TabIndex = 1; this.tabPageFilters.Text = "Filters"; this.tabPageFilters.UseVisualStyleBackColor = true; // + // toolStripFilters + // + this.toolStripFilters.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStripFilters.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.loadFilterSelectionsToolStripMenuItem, + this.saveFilterSelectionsToolStripMenuItem, + this.toolStripSeparator7, + this.toolStripSplitButton1}); + this.toolStripFilters.Location = new System.Drawing.Point(3, 3); + this.toolStripFilters.Name = "toolStripFilters"; + this.toolStripFilters.Size = new System.Drawing.Size(613, 25); + this.toolStripFilters.Stretch = true; + this.toolStripFilters.TabIndex = 1; + this.toolStripFilters.Text = "toolStrip1"; + // + // loadFilterSelectionsToolStripMenuItem + // + this.loadFilterSelectionsToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.loadFilterSelectionsToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("loadFilterSelectionsToolStripMenuItem.Image"))); + this.loadFilterSelectionsToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.loadFilterSelectionsToolStripMenuItem.Name = "loadFilterSelectionsToolStripMenuItem"; + this.loadFilterSelectionsToolStripMenuItem.Size = new System.Drawing.Size(23, 22); + this.loadFilterSelectionsToolStripMenuItem.Text = "&Open"; + this.loadFilterSelectionsToolStripMenuItem.Click += new System.EventHandler(this.loadFilterSelectionsToolStripMenuItem_Click); + // + // saveFilterSelectionsToolStripMenuItem + // + this.saveFilterSelectionsToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.saveFilterSelectionsToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("saveFilterSelectionsToolStripMenuItem.Image"))); + this.saveFilterSelectionsToolStripMenuItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.saveFilterSelectionsToolStripMenuItem.Name = "saveFilterSelectionsToolStripMenuItem"; + this.saveFilterSelectionsToolStripMenuItem.Size = new System.Drawing.Size(23, 22); + this.saveFilterSelectionsToolStripMenuItem.Text = "&Save"; + this.saveFilterSelectionsToolStripMenuItem.Click += new System.EventHandler(this.saveFilterSelectionsToolStripMenuItem_Click); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(6, 25); + // + // toolStripSplitButton1 + // + this.toolStripSplitButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.toolStripSplitButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.autoAddNewDiscoveredMessagesToolStripMenuItem}); + this.toolStripSplitButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripSplitButton1.Image"))); + this.toolStripSplitButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripSplitButton1.Name = "toolStripSplitButton1"; + this.toolStripSplitButton1.Size = new System.Drawing.Size(65, 22); + this.toolStripSplitButton1.Text = "Options"; + // + // autoAddNewDiscoveredMessagesToolStripMenuItem + // + this.autoAddNewDiscoveredMessagesToolStripMenuItem.Checked = true; + this.autoAddNewDiscoveredMessagesToolStripMenuItem.CheckOnClick = true; + this.autoAddNewDiscoveredMessagesToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; + this.autoAddNewDiscoveredMessagesToolStripMenuItem.Name = "autoAddNewDiscoveredMessagesToolStripMenuItem"; + this.autoAddNewDiscoveredMessagesToolStripMenuItem.Size = new System.Drawing.Size(225, 22); + this.autoAddNewDiscoveredMessagesToolStripMenuItem.Text = "Auto Check new Capabilities"; + // // splitContainerFilters // - this.splitContainerFilters.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainerFilters.Location = new System.Drawing.Point(3, 3); + this.splitContainerFilters.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.splitContainerFilters.Location = new System.Drawing.Point(3, 31); this.splitContainerFilters.Name = "splitContainerFilters"; // // splitContainerFilters.Panel1 @@ -902,8 +818,8 @@ // this.splitContainerFilters.Panel2.Controls.Add(this.checkBoxCheckAllMessages); this.splitContainerFilters.Panel2.Controls.Add(this.grpCapsFilters); - this.splitContainerFilters.Size = new System.Drawing.Size(599, 390); - this.splitContainerFilters.SplitterDistance = 298; + this.splitContainerFilters.Size = new System.Drawing.Size(613, 427); + this.splitContainerFilters.SplitterDistance = 303; this.splitContainerFilters.SplitterWidth = 5; this.splitContainerFilters.TabIndex = 0; // @@ -913,9 +829,9 @@ this.checkBoxCheckAllPackets.AutoSize = true; this.checkBoxCheckAllPackets.Checked = true; this.checkBoxCheckAllPackets.CheckState = System.Windows.Forms.CheckState.Indeterminate; - this.checkBoxCheckAllPackets.Location = new System.Drawing.Point(6, 369); + this.checkBoxCheckAllPackets.Location = new System.Drawing.Point(6, 404); this.checkBoxCheckAllPackets.Name = "checkBoxCheckAllPackets"; - this.checkBoxCheckAllPackets.Size = new System.Drawing.Size(120, 17); + this.checkBoxCheckAllPackets.Size = new System.Drawing.Size(128, 19); this.checkBoxCheckAllPackets.TabIndex = 1; this.checkBoxCheckAllPackets.Text = "Check/Uncheck All"; this.checkBoxCheckAllPackets.UseVisualStyleBackColor = true; @@ -930,39 +846,10 @@ this.grpUDPFilters.Enabled = false; this.grpUDPFilters.Location = new System.Drawing.Point(3, 3); this.grpUDPFilters.Name = "grpUDPFilters"; - this.grpUDPFilters.Size = new System.Drawing.Size(292, 357); + this.grpUDPFilters.Size = new System.Drawing.Size(297, 394); this.grpUDPFilters.TabIndex = 0; 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"; + this.grpUDPFilters.Text = "UDP Packets && Login"; // // checkBoxCheckAllMessages // @@ -970,9 +857,9 @@ this.checkBoxCheckAllMessages.AutoSize = true; this.checkBoxCheckAllMessages.Checked = true; this.checkBoxCheckAllMessages.CheckState = System.Windows.Forms.CheckState.Indeterminate; - this.checkBoxCheckAllMessages.Location = new System.Drawing.Point(6, 370); + this.checkBoxCheckAllMessages.Location = new System.Drawing.Point(6, 405); this.checkBoxCheckAllMessages.Name = "checkBoxCheckAllMessages"; - this.checkBoxCheckAllMessages.Size = new System.Drawing.Size(120, 17); + this.checkBoxCheckAllMessages.Size = new System.Drawing.Size(128, 19); this.checkBoxCheckAllMessages.TabIndex = 2; this.checkBoxCheckAllMessages.Text = "Check/Uncheck All"; this.checkBoxCheckAllMessages.UseVisualStyleBackColor = true; @@ -987,47 +874,17 @@ this.grpCapsFilters.Enabled = false; this.grpCapsFilters.Location = new System.Drawing.Point(3, 3); this.grpCapsFilters.Name = "grpCapsFilters"; - this.grpCapsFilters.Size = new System.Drawing.Size(290, 357); + this.grpCapsFilters.Size = new System.Drawing.Size(299, 394); this.grpCapsFilters.TabIndex = 1; 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; + this.grpCapsFilters.Text = "Capabilities && EventQueue messages"; // // tabPageInspect // this.tabPageInspect.Controls.Add(this.splitContainerInspectorTab); - this.tabPageInspect.Location = new System.Drawing.Point(4, 28); + this.tabPageInspect.Location = new System.Drawing.Point(4, 30); this.tabPageInspect.Name = "tabPageInspect"; - this.tabPageInspect.Size = new System.Drawing.Size(605, 396); + this.tabPageInspect.Size = new System.Drawing.Size(619, 460); this.tabPageInspect.TabIndex = 3; this.tabPageInspect.Text = "Inspector"; this.tabPageInspect.UseVisualStyleBackColor = true; @@ -1049,71 +906,77 @@ // splitContainerInspectorTab.Panel2 // this.splitContainerInspectorTab.Panel2.Controls.Add(this.tabControlInspectorResponse); - this.splitContainerInspectorTab.Size = new System.Drawing.Size(605, 396); - this.splitContainerInspectorTab.SplitterDistance = 179; - this.splitContainerInspectorTab.SplitterWidth = 5; + this.splitContainerInspectorTab.Size = new System.Drawing.Size(619, 460); + this.splitContainerInspectorTab.SplitterDistance = 226; + this.splitContainerInspectorTab.SplitterWidth = 6; this.splitContainerInspectorTab.TabIndex = 1; // // tabControlInspectorRequest // - this.tabControlInspectorRequest.Appearance = System.Windows.Forms.TabAppearance.FlatButtons; this.tabControlInspectorRequest.Controls.Add(this.tabPageDecodedRequest); this.tabControlInspectorRequest.Controls.Add(this.tabPageRawRequest); this.tabControlInspectorRequest.Controls.Add(this.tabPageXMLRequest); this.tabControlInspectorRequest.Controls.Add(this.tabPageRequestJson); this.tabControlInspectorRequest.Controls.Add(this.tabPageHexRequest); this.tabControlInspectorRequest.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControlInspectorRequest.HotTrack = true; this.tabControlInspectorRequest.ImageList = this.imageList1; this.tabControlInspectorRequest.Location = new System.Drawing.Point(0, 0); this.tabControlInspectorRequest.Name = "tabControlInspectorRequest"; this.tabControlInspectorRequest.SelectedIndex = 0; - this.tabControlInspectorRequest.Size = new System.Drawing.Size(605, 179); + this.tabControlInspectorRequest.Size = new System.Drawing.Size(619, 226); + this.tabControlInspectorRequest.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; this.tabControlInspectorRequest.TabIndex = 0; // // tabPageDecodedRequest // this.tabPageDecodedRequest.Controls.Add(this.richTextBoxDecodedRequest); this.tabPageDecodedRequest.ImageIndex = 1; - this.tabPageDecodedRequest.Location = new System.Drawing.Point(4, 26); + this.tabPageDecodedRequest.Location = new System.Drawing.Point(4, 24); this.tabPageDecodedRequest.Name = "tabPageDecodedRequest"; this.tabPageDecodedRequest.Padding = new System.Windows.Forms.Padding(3); - this.tabPageDecodedRequest.Size = new System.Drawing.Size(597, 149); + this.tabPageDecodedRequest.Size = new System.Drawing.Size(611, 198); this.tabPageDecodedRequest.TabIndex = 4; this.tabPageDecodedRequest.Text = "Request"; this.tabPageDecodedRequest.UseVisualStyleBackColor = true; // // richTextBoxDecodedRequest // + this.richTextBoxDecodedRequest.BorderStyle = System.Windows.Forms.BorderStyle.None; this.richTextBoxDecodedRequest.Dock = System.Windows.Forms.DockStyle.Fill; this.richTextBoxDecodedRequest.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.richTextBoxDecodedRequest.Location = new System.Drawing.Point(3, 3); this.richTextBoxDecodedRequest.Name = "richTextBoxDecodedRequest"; this.richTextBoxDecodedRequest.ShowSelectionMargin = true; - this.richTextBoxDecodedRequest.Size = new System.Drawing.Size(591, 143); + this.richTextBoxDecodedRequest.Size = new System.Drawing.Size(605, 192); this.richTextBoxDecodedRequest.TabIndex = 0; this.richTextBoxDecodedRequest.Text = ""; + this.richTextBoxDecodedRequest.WordWrap = false; + this.richTextBoxDecodedRequest.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.richTextBoxDecodedRequest_LinkClicked); this.richTextBoxDecodedRequest.TextChanged += new System.EventHandler(this.richTextBoxDecodedRequest_TextChanged); // // tabPageRawRequest // this.tabPageRawRequest.Controls.Add(this.richTextBoxRawRequest); this.tabPageRawRequest.ImageIndex = 1; - this.tabPageRawRequest.Location = new System.Drawing.Point(4, 26); + this.tabPageRawRequest.Location = new System.Drawing.Point(4, 24); this.tabPageRawRequest.Name = "tabPageRawRequest"; this.tabPageRawRequest.Padding = new System.Windows.Forms.Padding(3); - this.tabPageRawRequest.Size = new System.Drawing.Size(597, 149); + this.tabPageRawRequest.Size = new System.Drawing.Size(611, 198); this.tabPageRawRequest.TabIndex = 0; this.tabPageRawRequest.Text = "Raw"; this.tabPageRawRequest.UseVisualStyleBackColor = true; // // richTextBoxRawRequest // + this.richTextBoxRawRequest.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBoxRawRequest.DetectUrls = false; this.richTextBoxRawRequest.Dock = System.Windows.Forms.DockStyle.Fill; this.richTextBoxRawRequest.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.richTextBoxRawRequest.Location = new System.Drawing.Point(3, 3); this.richTextBoxRawRequest.Name = "richTextBoxRawRequest"; this.richTextBoxRawRequest.ShowSelectionMargin = true; - this.richTextBoxRawRequest.Size = new System.Drawing.Size(591, 143); + this.richTextBoxRawRequest.Size = new System.Drawing.Size(605, 193); this.richTextBoxRawRequest.TabIndex = 1; this.richTextBoxRawRequest.Text = ""; this.richTextBoxRawRequest.WordWrap = false; @@ -1122,71 +985,82 @@ // this.tabPageXMLRequest.Controls.Add(this.treeViewXMLRequest); this.tabPageXMLRequest.ImageIndex = 1; - this.tabPageXMLRequest.Location = new System.Drawing.Point(4, 26); + this.tabPageXMLRequest.Location = new System.Drawing.Point(4, 24); this.tabPageXMLRequest.Name = "tabPageXMLRequest"; this.tabPageXMLRequest.Padding = new System.Windows.Forms.Padding(3); - this.tabPageXMLRequest.Size = new System.Drawing.Size(597, 149); + this.tabPageXMLRequest.Size = new System.Drawing.Size(611, 198); this.tabPageXMLRequest.TabIndex = 1; this.tabPageXMLRequest.Text = "XML"; this.tabPageXMLRequest.UseVisualStyleBackColor = true; // // treeViewXMLRequest // + this.treeViewXMLRequest.BorderStyle = System.Windows.Forms.BorderStyle.None; this.treeViewXMLRequest.Dock = System.Windows.Forms.DockStyle.Fill; this.treeViewXMLRequest.Location = new System.Drawing.Point(3, 3); this.treeViewXMLRequest.Name = "treeViewXMLRequest"; - this.treeViewXMLRequest.Size = new System.Drawing.Size(591, 143); + this.treeViewXMLRequest.Size = new System.Drawing.Size(605, 193); this.treeViewXMLRequest.TabIndex = 1; // // tabPageRequestJson // this.tabPageRequestJson.Controls.Add(this.richTextBoxNotationRequest); this.tabPageRequestJson.ImageIndex = 1; - this.tabPageRequestJson.Location = new System.Drawing.Point(4, 26); + this.tabPageRequestJson.Location = new System.Drawing.Point(4, 24); this.tabPageRequestJson.Name = "tabPageRequestJson"; this.tabPageRequestJson.Padding = new System.Windows.Forms.Padding(3); - this.tabPageRequestJson.Size = new System.Drawing.Size(597, 149); + this.tabPageRequestJson.Size = new System.Drawing.Size(611, 198); this.tabPageRequestJson.TabIndex = 3; this.tabPageRequestJson.Text = "Notation"; this.tabPageRequestJson.UseVisualStyleBackColor = true; // // richTextBoxNotationRequest // + this.richTextBoxNotationRequest.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBoxNotationRequest.DetectUrls = false; this.richTextBoxNotationRequest.Dock = System.Windows.Forms.DockStyle.Fill; this.richTextBoxNotationRequest.Location = new System.Drawing.Point(3, 3); this.richTextBoxNotationRequest.Name = "richTextBoxNotationRequest"; this.richTextBoxNotationRequest.ShowSelectionMargin = true; - this.richTextBoxNotationRequest.Size = new System.Drawing.Size(591, 143); + this.richTextBoxNotationRequest.Size = new System.Drawing.Size(605, 193); this.richTextBoxNotationRequest.TabIndex = 0; this.richTextBoxNotationRequest.Text = ""; // // tabPageHexRequest // - this.tabPageHexRequest.Controls.Add(this.statusStrip2); + this.tabPageHexRequest.Controls.Add(this.buttonSaveRequestHex); + this.tabPageHexRequest.Controls.Add(this.labelHexRequestStatus); this.tabPageHexRequest.Controls.Add(this.hexBoxRequest); this.tabPageHexRequest.ImageIndex = 1; - this.tabPageHexRequest.Location = new System.Drawing.Point(4, 26); + this.tabPageHexRequest.Location = new System.Drawing.Point(4, 24); this.tabPageHexRequest.Name = "tabPageHexRequest"; - this.tabPageHexRequest.Size = new System.Drawing.Size(597, 149); + this.tabPageHexRequest.Size = new System.Drawing.Size(611, 198); this.tabPageHexRequest.TabIndex = 2; this.tabPageHexRequest.Text = "Hex"; this.tabPageHexRequest.UseVisualStyleBackColor = true; // - // statusStrip2 + // buttonSaveRequestHex // - this.statusStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.labelRequestHex}); - this.statusStrip2.Location = new System.Drawing.Point(0, 127); - this.statusStrip2.Name = "statusStrip2"; - this.statusStrip2.Size = new System.Drawing.Size(585, 22); - this.statusStrip2.TabIndex = 3; - this.statusStrip2.Text = "statusStrip2"; - this.statusStrip2.Visible = false; + this.buttonSaveRequestHex.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonSaveRequestHex.Font = new System.Drawing.Font("Arial", 3.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.buttonSaveRequestHex.Location = new System.Drawing.Point(594, 185); + this.buttonSaveRequestHex.Name = "buttonSaveRequestHex"; + this.buttonSaveRequestHex.Size = new System.Drawing.Size(13, 13); + this.buttonSaveRequestHex.TabIndex = 4; + this.buttonSaveRequestHex.UseVisualStyleBackColor = true; + this.buttonSaveRequestHex.Visible = false; + this.buttonSaveRequestHex.Click += new System.EventHandler(this.buttonSaveRequestHex_Click); // - // labelRequestHex + // labelHexRequestStatus // - this.labelRequestHex.Name = "labelRequestHex"; - this.labelRequestHex.Size = new System.Drawing.Size(0, 17); + this.labelHexRequestStatus.AutoSize = true; + this.labelHexRequestStatus.Dock = System.Windows.Forms.DockStyle.Bottom; + this.labelHexRequestStatus.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelHexRequestStatus.Location = new System.Drawing.Point(0, 186); + this.labelHexRequestStatus.Name = "labelHexRequestStatus"; + this.labelHexRequestStatus.Size = new System.Drawing.Size(66, 13); + this.labelHexRequestStatus.TabIndex = 3; + this.labelHexRequestStatus.Text = "Ln 0 Col 0"; // // hexBoxRequest // @@ -1195,10 +1069,10 @@ | System.Windows.Forms.AnchorStyles.Right))); this.hexBoxRequest.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.hexBoxRequest.LineInfoForeColor = System.Drawing.Color.Empty; - this.hexBoxRequest.Location = new System.Drawing.Point(3, 3); + this.hexBoxRequest.Location = new System.Drawing.Point(0, 0); this.hexBoxRequest.Name = "hexBoxRequest"; this.hexBoxRequest.ShadowSelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(60)))), ((int)(((byte)(188)))), ((int)(((byte)(255))))); - this.hexBoxRequest.Size = new System.Drawing.Size(591, 120); + this.hexBoxRequest.Size = new System.Drawing.Size(611, 182); this.hexBoxRequest.StringViewVisible = true; this.hexBoxRequest.TabIndex = 2; this.hexBoxRequest.UseFixedBytesPerLine = true; @@ -1208,65 +1082,71 @@ // // tabControlInspectorResponse // - this.tabControlInspectorResponse.Appearance = System.Windows.Forms.TabAppearance.FlatButtons; this.tabControlInspectorResponse.Controls.Add(this.tabPageDecodeResponse); this.tabControlInspectorResponse.Controls.Add(this.tabPageInspectorRAWResponse); this.tabControlInspectorResponse.Controls.Add(this.tabPageInspectorXMLResponse); this.tabControlInspectorResponse.Controls.Add(this.tabPageResponseJson); this.tabControlInspectorResponse.Controls.Add(this.tabPageHexViewResponse); this.tabControlInspectorResponse.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControlInspectorResponse.HotTrack = true; this.tabControlInspectorResponse.ImageList = this.imageList1; this.tabControlInspectorResponse.Location = new System.Drawing.Point(0, 0); this.tabControlInspectorResponse.Multiline = true; this.tabControlInspectorResponse.Name = "tabControlInspectorResponse"; this.tabControlInspectorResponse.SelectedIndex = 0; - this.tabControlInspectorResponse.Size = new System.Drawing.Size(605, 212); + this.tabControlInspectorResponse.Size = new System.Drawing.Size(619, 228); + this.tabControlInspectorResponse.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; this.tabControlInspectorResponse.TabIndex = 0; // // tabPageDecodeResponse // this.tabPageDecodeResponse.Controls.Add(this.richTextBoxDecodedResponse); this.tabPageDecodeResponse.ImageIndex = 0; - this.tabPageDecodeResponse.Location = new System.Drawing.Point(4, 26); + this.tabPageDecodeResponse.Location = new System.Drawing.Point(4, 24); this.tabPageDecodeResponse.Name = "tabPageDecodeResponse"; this.tabPageDecodeResponse.Padding = new System.Windows.Forms.Padding(3); - this.tabPageDecodeResponse.Size = new System.Drawing.Size(597, 182); + this.tabPageDecodeResponse.Size = new System.Drawing.Size(611, 200); this.tabPageDecodeResponse.TabIndex = 6; this.tabPageDecodeResponse.Text = "Response"; this.tabPageDecodeResponse.UseVisualStyleBackColor = true; // // richTextBoxDecodedResponse // + this.richTextBoxDecodedResponse.BorderStyle = System.Windows.Forms.BorderStyle.None; this.richTextBoxDecodedResponse.Dock = System.Windows.Forms.DockStyle.Fill; this.richTextBoxDecodedResponse.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.richTextBoxDecodedResponse.Location = new System.Drawing.Point(3, 3); this.richTextBoxDecodedResponse.Name = "richTextBoxDecodedResponse"; this.richTextBoxDecodedResponse.ShowSelectionMargin = true; - this.richTextBoxDecodedResponse.Size = new System.Drawing.Size(591, 176); + this.richTextBoxDecodedResponse.Size = new System.Drawing.Size(605, 194); this.richTextBoxDecodedResponse.TabIndex = 0; this.richTextBoxDecodedResponse.Text = ""; + this.richTextBoxDecodedResponse.WordWrap = false; + this.richTextBoxDecodedResponse.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.richTextBoxDecodedRequest_LinkClicked); this.richTextBoxDecodedResponse.TextChanged += new System.EventHandler(this.richTextBoxDecodedRequest_TextChanged); // // tabPageInspectorRAWResponse // this.tabPageInspectorRAWResponse.Controls.Add(this.richTextBoxRawResponse); this.tabPageInspectorRAWResponse.ImageIndex = 0; - this.tabPageInspectorRAWResponse.Location = new System.Drawing.Point(4, 26); + this.tabPageInspectorRAWResponse.Location = new System.Drawing.Point(4, 24); this.tabPageInspectorRAWResponse.Name = "tabPageInspectorRAWResponse"; this.tabPageInspectorRAWResponse.Padding = new System.Windows.Forms.Padding(3); - this.tabPageInspectorRAWResponse.Size = new System.Drawing.Size(597, 182); + this.tabPageInspectorRAWResponse.Size = new System.Drawing.Size(611, 200); this.tabPageInspectorRAWResponse.TabIndex = 0; this.tabPageInspectorRAWResponse.Text = "Raw"; this.tabPageInspectorRAWResponse.UseVisualStyleBackColor = true; // // richTextBoxRawResponse // + this.richTextBoxRawResponse.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBoxRawResponse.DetectUrls = false; this.richTextBoxRawResponse.Dock = System.Windows.Forms.DockStyle.Fill; this.richTextBoxRawResponse.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.richTextBoxRawResponse.Location = new System.Drawing.Point(3, 3); this.richTextBoxRawResponse.Name = "richTextBoxRawResponse"; this.richTextBoxRawResponse.ShowSelectionMargin = true; - this.richTextBoxRawResponse.Size = new System.Drawing.Size(591, 176); + this.richTextBoxRawResponse.Size = new System.Drawing.Size(605, 195); this.richTextBoxRawResponse.TabIndex = 0; this.richTextBoxRawResponse.Text = ""; this.richTextBoxRawResponse.WordWrap = false; @@ -1275,71 +1155,82 @@ // this.tabPageInspectorXMLResponse.Controls.Add(this.treeViewXmlResponse); this.tabPageInspectorXMLResponse.ImageIndex = 0; - this.tabPageInspectorXMLResponse.Location = new System.Drawing.Point(4, 26); + this.tabPageInspectorXMLResponse.Location = new System.Drawing.Point(4, 24); this.tabPageInspectorXMLResponse.Name = "tabPageInspectorXMLResponse"; this.tabPageInspectorXMLResponse.Padding = new System.Windows.Forms.Padding(3); - this.tabPageInspectorXMLResponse.Size = new System.Drawing.Size(597, 182); + this.tabPageInspectorXMLResponse.Size = new System.Drawing.Size(611, 200); this.tabPageInspectorXMLResponse.TabIndex = 1; this.tabPageInspectorXMLResponse.Text = "XML"; this.tabPageInspectorXMLResponse.UseVisualStyleBackColor = true; // // treeViewXmlResponse // + this.treeViewXmlResponse.BorderStyle = System.Windows.Forms.BorderStyle.None; this.treeViewXmlResponse.Dock = System.Windows.Forms.DockStyle.Fill; this.treeViewXmlResponse.Location = new System.Drawing.Point(3, 3); this.treeViewXmlResponse.Name = "treeViewXmlResponse"; - this.treeViewXmlResponse.Size = new System.Drawing.Size(591, 176); + this.treeViewXmlResponse.Size = new System.Drawing.Size(605, 195); this.treeViewXmlResponse.TabIndex = 0; // // tabPageResponseJson // this.tabPageResponseJson.Controls.Add(this.richTextBoxNotationResponse); this.tabPageResponseJson.ImageIndex = 0; - this.tabPageResponseJson.Location = new System.Drawing.Point(4, 26); + this.tabPageResponseJson.Location = new System.Drawing.Point(4, 24); this.tabPageResponseJson.Name = "tabPageResponseJson"; this.tabPageResponseJson.Padding = new System.Windows.Forms.Padding(3); - this.tabPageResponseJson.Size = new System.Drawing.Size(597, 182); + this.tabPageResponseJson.Size = new System.Drawing.Size(611, 200); this.tabPageResponseJson.TabIndex = 5; this.tabPageResponseJson.Text = "Notation"; this.tabPageResponseJson.UseVisualStyleBackColor = true; // // richTextBoxNotationResponse // + this.richTextBoxNotationResponse.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBoxNotationResponse.DetectUrls = false; this.richTextBoxNotationResponse.Dock = System.Windows.Forms.DockStyle.Fill; this.richTextBoxNotationResponse.Location = new System.Drawing.Point(3, 3); this.richTextBoxNotationResponse.Name = "richTextBoxNotationResponse"; this.richTextBoxNotationResponse.ShowSelectionMargin = true; - this.richTextBoxNotationResponse.Size = new System.Drawing.Size(591, 176); + this.richTextBoxNotationResponse.Size = new System.Drawing.Size(605, 195); this.richTextBoxNotationResponse.TabIndex = 0; this.richTextBoxNotationResponse.Text = ""; // // tabPageHexViewResponse // - this.tabPageHexViewResponse.Controls.Add(this.statusStrip1); + this.tabPageHexViewResponse.Controls.Add(this.buttonExportRawHex); + this.tabPageHexViewResponse.Controls.Add(this.labelHexBoxResponseStatus); this.tabPageHexViewResponse.Controls.Add(this.hexBoxResponse); this.tabPageHexViewResponse.ImageIndex = 0; - this.tabPageHexViewResponse.Location = new System.Drawing.Point(4, 26); + this.tabPageHexViewResponse.Location = new System.Drawing.Point(4, 24); this.tabPageHexViewResponse.Name = "tabPageHexViewResponse"; - this.tabPageHexViewResponse.Padding = new System.Windows.Forms.Padding(3); - this.tabPageHexViewResponse.Size = new System.Drawing.Size(597, 182); + this.tabPageHexViewResponse.Size = new System.Drawing.Size(611, 200); this.tabPageHexViewResponse.TabIndex = 4; this.tabPageHexViewResponse.Text = "Hex"; this.tabPageHexViewResponse.UseVisualStyleBackColor = true; // - // statusStrip1 + // buttonExportRawHex // - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.labelResponseHex}); - this.statusStrip1.Location = new System.Drawing.Point(3, 157); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(591, 22); - this.statusStrip1.TabIndex = 0; - this.statusStrip1.Text = "statusStrip1"; + this.buttonExportRawHex.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.buttonExportRawHex.Font = new System.Drawing.Font("Arial", 3.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.buttonExportRawHex.Location = new System.Drawing.Point(594, 187); + this.buttonExportRawHex.Name = "buttonExportRawHex"; + this.buttonExportRawHex.Size = new System.Drawing.Size(13, 13); + this.buttonExportRawHex.TabIndex = 3; + this.buttonExportRawHex.UseVisualStyleBackColor = true; + this.buttonExportRawHex.Visible = false; + this.buttonExportRawHex.Click += new System.EventHandler(this.buttonExportRawHex_Click); // - // labelResponseHex + // labelHexBoxResponseStatus // - this.labelResponseHex.Name = "labelResponseHex"; - this.labelResponseHex.Size = new System.Drawing.Size(0, 17); + this.labelHexBoxResponseStatus.AutoSize = true; + this.labelHexBoxResponseStatus.Dock = System.Windows.Forms.DockStyle.Bottom; + this.labelHexBoxResponseStatus.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelHexBoxResponseStatus.Location = new System.Drawing.Point(0, 188); + this.labelHexBoxResponseStatus.Name = "labelHexBoxResponseStatus"; + this.labelHexBoxResponseStatus.Size = new System.Drawing.Size(66, 13); + this.labelHexBoxResponseStatus.TabIndex = 2; + this.labelHexBoxResponseStatus.Text = "Ln 0 Col 0"; // // hexBoxResponse // @@ -1348,10 +1239,10 @@ | System.Windows.Forms.AnchorStyles.Right))); this.hexBoxResponse.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.hexBoxResponse.LineInfoForeColor = System.Drawing.Color.Empty; - this.hexBoxResponse.Location = new System.Drawing.Point(3, 3); + this.hexBoxResponse.Location = new System.Drawing.Point(0, 0); this.hexBoxResponse.Name = "hexBoxResponse"; this.hexBoxResponse.ShadowSelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(60)))), ((int)(((byte)(188)))), ((int)(((byte)(255))))); - this.hexBoxResponse.Size = new System.Drawing.Size(591, 152); + this.hexBoxResponse.Size = new System.Drawing.Size(611, 184); this.hexBoxResponse.StringViewVisible = true; this.hexBoxResponse.TabIndex = 1; this.hexBoxResponse.UseFixedBytesPerLine = true; @@ -1361,59 +1252,21 @@ // // tabPageInject // - this.tabPageInject.Controls.Add(this.radioButtonViewer); - this.tabPageInject.Controls.Add(this.radioButtonSimulator); - this.tabPageInject.Controls.Add(this.button3); this.tabPageInject.Controls.Add(this.buttonInjectPacket); this.tabPageInject.Controls.Add(this.richTextBoxInject); - this.tabPageInject.Location = new System.Drawing.Point(4, 28); + this.tabPageInject.Location = new System.Drawing.Point(4, 30); this.tabPageInject.Name = "tabPageInject"; this.tabPageInject.Padding = new System.Windows.Forms.Padding(3); - this.tabPageInject.Size = new System.Drawing.Size(605, 396); + this.tabPageInject.Size = new System.Drawing.Size(619, 460); this.tabPageInject.TabIndex = 2; this.tabPageInject.Text = "Inject"; this.tabPageInject.UseVisualStyleBackColor = true; // - // radioButtonViewer - // - this.radioButtonViewer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.radioButtonViewer.AutoSize = true; - this.radioButtonViewer.Location = new System.Drawing.Point(397, 370); - this.radioButtonViewer.Name = "radioButtonViewer"; - this.radioButtonViewer.Size = new System.Drawing.Size(97, 17); - this.radioButtonViewer.TabIndex = 4; - this.radioButtonViewer.Text = "Send to Viewer"; - this.radioButtonViewer.UseVisualStyleBackColor = true; - // - // radioButtonSimulator - // - this.radioButtonSimulator.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.radioButtonSimulator.AutoSize = true; - this.radioButtonSimulator.Checked = true; - this.radioButtonSimulator.Location = new System.Drawing.Point(283, 370); - this.radioButtonSimulator.Name = "radioButtonSimulator"; - this.radioButtonSimulator.Size = new System.Drawing.Size(108, 17); - this.radioButtonSimulator.TabIndex = 3; - this.radioButtonSimulator.TabStop = true; - this.radioButtonSimulator.Text = "Send to Simulator"; - this.radioButtonSimulator.UseVisualStyleBackColor = true; - // - // button3 - // - this.button3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.button3.Enabled = false; - this.button3.Location = new System.Drawing.Point(6, 367); - this.button3.Name = "button3"; - this.button3.Size = new System.Drawing.Size(105, 23); - this.button3.TabIndex = 2; - this.button3.Text = "Packet Builder"; - this.button3.UseVisualStyleBackColor = true; - // // buttonInjectPacket // this.buttonInjectPacket.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.buttonInjectPacket.Enabled = false; - this.buttonInjectPacket.Location = new System.Drawing.Point(522, 367); + this.buttonInjectPacket.Location = new System.Drawing.Point(536, 429); this.buttonInjectPacket.Name = "buttonInjectPacket"; this.buttonInjectPacket.Size = new System.Drawing.Size(75, 23); this.buttonInjectPacket.TabIndex = 1; @@ -1426,19 +1279,20 @@ this.richTextBoxInject.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.richTextBoxInject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.richTextBoxInject.Location = new System.Drawing.Point(6, 6); this.richTextBoxInject.Name = "richTextBoxInject"; - this.richTextBoxInject.Size = new System.Drawing.Size(591, 355); + this.richTextBoxInject.Size = new System.Drawing.Size(605, 417); this.richTextBoxInject.TabIndex = 0; this.richTextBoxInject.Text = ""; this.richTextBoxInject.TextChanged += new System.EventHandler(this.richTextBoxInject_TextChanged); // - // markToolStripMenuItem1 + // selectToolStripMenuItem1 // - this.markToolStripMenuItem1.DropDown = this.contextMenuStripMark; - this.markToolStripMenuItem1.Name = "markToolStripMenuItem1"; - this.markToolStripMenuItem1.Size = new System.Drawing.Size(137, 22); - this.markToolStripMenuItem1.Text = "Mark"; + this.selectToolStripMenuItem1.DropDown = this.contextMenuStripSelect; + this.selectToolStripMenuItem1.Name = "selectToolStripMenuItem1"; + this.selectToolStripMenuItem1.Size = new System.Drawing.Size(137, 22); + this.selectToolStripMenuItem1.Text = "Select"; // // toolStripLabelHexEditorRequest // @@ -1450,25 +1304,23 @@ this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; this.toolStripStatusLabel1.Size = new System.Drawing.Size(0, 17); // - // toolStrip1 + // toolStripMenu // - this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenu.Dock = System.Windows.Forms.DockStyle.None; + this.toolStripMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripFileMenu, this.EditToolStripButton, - this.toolStripDropDownButton5, this.toolStripDropDownButton4}); - this.toolStrip1.Location = new System.Drawing.Point(0, 0); - this.toolStrip1.Name = "toolStrip1"; - this.toolStrip1.Size = new System.Drawing.Size(1111, 25); - this.toolStrip1.TabIndex = 2; - this.toolStrip1.Text = "toolStrip1"; + this.toolStripMenu.Location = new System.Drawing.Point(3, 0); + this.toolStripMenu.Name = "toolStripMenu"; + this.toolStripMenu.Size = new System.Drawing.Size(108, 25); + this.toolStripMenu.TabIndex = 2; + this.toolStripMenu.Text = "toolStrip1"; // // toolStripFileMenu // this.toolStripFileMenu.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; this.toolStripFileMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.captureToolStripMenuItem, - this.toolStripSeparator7, this.saveSessionArchiveToolStripMenuItem, this.loadSessionArchiveToolStripMenuItem, this.toolStripSeparator18, @@ -1487,19 +1339,6 @@ this.toolStripFileMenu.Text = "&File"; this.toolStripFileMenu.DropDownOpening += new System.EventHandler(this.EditToolStripButton_DropDownOpening); // - // captureToolStripMenuItem - // - this.captureToolStripMenuItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.captureToolStripMenuItem.Name = "captureToolStripMenuItem"; - this.captureToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F12; - this.captureToolStripMenuItem.Size = new System.Drawing.Size(185, 22); - this.captureToolStripMenuItem.Text = "Capture"; - // - // toolStripSeparator7 - // - this.toolStripSeparator7.Name = "toolStripSeparator7"; - this.toolStripSeparator7.Size = new System.Drawing.Size(182, 6); - // // saveSessionArchiveToolStripMenuItem // this.saveSessionArchiveToolStripMenuItem.Name = "saveSessionArchiveToolStripMenuItem"; @@ -1514,6 +1353,26 @@ this.loadSessionArchiveToolStripMenuItem.Text = "Load Session Archive"; this.loadSessionArchiveToolStripMenuItem.Click += new System.EventHandler(this.loadSessionArchiveToolStripMenuItem_Click); // + // toolStripSeparator18 + // + this.toolStripSeparator18.Name = "toolStripSeparator18"; + this.toolStripSeparator18.Size = new System.Drawing.Size(182, 6); + // + // exportToolStripMenuItem + // + this.exportToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.asDecodedTextToolStripMenuItem}); + this.exportToolStripMenuItem.Name = "exportToolStripMenuItem"; + this.exportToolStripMenuItem.Size = new System.Drawing.Size(185, 22); + this.exportToolStripMenuItem.Text = "Export"; + // + // asDecodedTextToolStripMenuItem + // + this.asDecodedTextToolStripMenuItem.Name = "asDecodedTextToolStripMenuItem"; + this.asDecodedTextToolStripMenuItem.Size = new System.Drawing.Size(162, 22); + this.asDecodedTextToolStripMenuItem.Text = "As Decoded Text"; + this.asDecodedTextToolStripMenuItem.Click += new System.EventHandler(this.asDecodedTextToolStripMenuItem_Click); + // // toolStripSeparator8 // this.toolStripSeparator8.Name = "toolStripSeparator8"; @@ -1522,22 +1381,15 @@ // settingsToolStripMenuItem // this.settingsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.autoScrollSessionsToolStripMenuItem, this.enableStatisticsToolStripMenuItem, this.saveOptionsOnExitToolStripMenuItem, - this.startProxyOnStartupToolStripMenuItem}); + this.startProxyOnStartupToolStripMenuItem, + this.toolStripSeparator6, + this.saveSettingsToolStripMenuItem}); this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; this.settingsToolStripMenuItem.Size = new System.Drawing.Size(185, 22); this.settingsToolStripMenuItem.Text = "Settings"; // - // autoScrollSessionsToolStripMenuItem - // - this.autoScrollSessionsToolStripMenuItem.CheckOnClick = true; - this.autoScrollSessionsToolStripMenuItem.Name = "autoScrollSessionsToolStripMenuItem"; - this.autoScrollSessionsToolStripMenuItem.Size = new System.Drawing.Size(216, 22); - this.autoScrollSessionsToolStripMenuItem.Text = "Auto Scroll Sessions"; - this.autoScrollSessionsToolStripMenuItem.CheckedChanged += new System.EventHandler(this.sessionEnableAutoScroll_CheckedChanged); - // // enableStatisticsToolStripMenuItem // this.enableStatisticsToolStripMenuItem.Checked = true; @@ -1564,7 +1416,19 @@ this.startProxyOnStartupToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; this.startProxyOnStartupToolStripMenuItem.Name = "startProxyOnStartupToolStripMenuItem"; this.startProxyOnStartupToolStripMenuItem.Size = new System.Drawing.Size(216, 22); - this.startProxyOnStartupToolStripMenuItem.Text = "Start Proxy on Startup"; + this.startProxyOnStartupToolStripMenuItem.Text = "Run Proxy on start"; + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(213, 6); + // + // saveSettingsToolStripMenuItem + // + this.saveSettingsToolStripMenuItem.Name = "saveSettingsToolStripMenuItem"; + this.saveSettingsToolStripMenuItem.Size = new System.Drawing.Size(216, 22); + this.saveSettingsToolStripMenuItem.Text = "Save Settings"; + this.saveSettingsToolStripMenuItem.Click += new System.EventHandler(this.saveSettingsToolStripMenuItem_Click); // // toolStripSeparator9 // @@ -1671,60 +1535,6 @@ this.findToolStripMenuItem.Text = "Find"; this.findToolStripMenuItem.Click += new System.EventHandler(this.findSessions_Click); // - // toolStripDropDownButton5 - // - this.toolStripDropDownButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; - this.toolStripDropDownButton5.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.saveFilterSelectionsToolStripMenuItem, - this.loadFilterSelectionsToolStripMenuItem, - this.toolStripSeparator6, - this.optionsToolStripMenuItem}); - this.toolStripDropDownButton5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripDropDownButton5.Image"))); - this.toolStripDropDownButton5.ImageTransparentColor = System.Drawing.Color.Magenta; - this.toolStripDropDownButton5.Name = "toolStripDropDownButton5"; - this.toolStripDropDownButton5.ShowDropDownArrow = false; - this.toolStripDropDownButton5.Size = new System.Drawing.Size(42, 22); - this.toolStripDropDownButton5.Text = "F&ilters"; - this.toolStripDropDownButton5.DropDownOpening += new System.EventHandler(this.EditToolStripButton_DropDownOpening); - // - // saveFilterSelectionsToolStripMenuItem - // - this.saveFilterSelectionsToolStripMenuItem.Enabled = false; - this.saveFilterSelectionsToolStripMenuItem.Name = "saveFilterSelectionsToolStripMenuItem"; - this.saveFilterSelectionsToolStripMenuItem.Size = new System.Drawing.Size(185, 22); - this.saveFilterSelectionsToolStripMenuItem.Text = "Save Filter Selections"; - this.saveFilterSelectionsToolStripMenuItem.Click += new System.EventHandler(this.saveFilterSelectionsToolStripMenuItem_Click); - // - // loadFilterSelectionsToolStripMenuItem - // - this.loadFilterSelectionsToolStripMenuItem.Enabled = false; - this.loadFilterSelectionsToolStripMenuItem.Name = "loadFilterSelectionsToolStripMenuItem"; - this.loadFilterSelectionsToolStripMenuItem.Size = new System.Drawing.Size(185, 22); - this.loadFilterSelectionsToolStripMenuItem.Text = "Load Filter Selections"; - this.loadFilterSelectionsToolStripMenuItem.Click += new System.EventHandler(this.loadFilterSelectionsToolStripMenuItem_Click); - // - // toolStripSeparator6 - // - this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(182, 6); - // - // optionsToolStripMenuItem - // - this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.autoAddNewDiscoveredMessagesToolStripMenuItem}); - this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem"; - this.optionsToolStripMenuItem.Size = new System.Drawing.Size(185, 22); - this.optionsToolStripMenuItem.Text = "Options"; - // - // autoAddNewDiscoveredMessagesToolStripMenuItem - // - this.autoAddNewDiscoveredMessagesToolStripMenuItem.Checked = true; - this.autoAddNewDiscoveredMessagesToolStripMenuItem.CheckOnClick = true; - this.autoAddNewDiscoveredMessagesToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked; - this.autoAddNewDiscoveredMessagesToolStripMenuItem.Name = "autoAddNewDiscoveredMessagesToolStripMenuItem"; - this.autoAddNewDiscoveredMessagesToolStripMenuItem.Size = new System.Drawing.Size(220, 22); - this.autoAddNewDiscoveredMessagesToolStripMenuItem.Text = "Autocheck new Capabilities"; - // // toolStripDropDownButton4 // this.toolStripDropDownButton4.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -2027,21 +1837,6 @@ this.openFileDialog2.Filter = "Filter Files|*.osd|All Files|*.*"; this.openFileDialog2.Title = "Load Saved Filter Settings"; // - // statusStrip3 - // - this.statusStrip3.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripMainLabel}); - this.statusStrip3.Location = new System.Drawing.Point(0, 497); - this.statusStrip3.Name = "statusStrip3"; - this.statusStrip3.Size = new System.Drawing.Size(1111, 22); - this.statusStrip3.TabIndex = 5; - this.statusStrip3.Text = "statusStrip3"; - // - // toolStripMainLabel - // - this.toolStripMainLabel.Name = "toolStripMainLabel"; - this.toolStripMainLabel.Size = new System.Drawing.Size(0, 17); - // // contextMenuStripFilterOptions // this.contextMenuStripFilterOptions.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -2077,40 +1872,238 @@ this.autoColorizeToolStripMenuItem.Text = "Auto Colorize"; this.autoColorizeToolStripMenuItem.Click += new System.EventHandler(this.autoColorizeToolStripMenuItem_Click); // - // exportToolStripMenuItem + // toolStripContainer1 // - this.exportToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.asDecodedTextToolStripMenuItem}); - this.exportToolStripMenuItem.Name = "exportToolStripMenuItem"; - this.exportToolStripMenuItem.Size = new System.Drawing.Size(185, 22); - this.exportToolStripMenuItem.Text = "Export"; // - // toolStripSeparator18 + // toolStripContainer1.ContentPanel // - this.toolStripSeparator18.Name = "toolStripSeparator18"; - this.toolStripSeparator18.Size = new System.Drawing.Size(182, 6); + this.toolStripContainer1.ContentPanel.AutoScroll = true; + this.toolStripContainer1.ContentPanel.Controls.Add(this.panelMainWindow); + this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(1111, 494); + this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.toolStripContainer1.LeftToolStripPanelVisible = false; + this.toolStripContainer1.Location = new System.Drawing.Point(0, 0); + this.toolStripContainer1.Name = "toolStripContainer1"; + this.toolStripContainer1.RightToolStripPanelVisible = false; + this.toolStripContainer1.Size = new System.Drawing.Size(1111, 519); + this.toolStripContainer1.TabIndex = 6; + this.toolStripContainer1.Text = "toolStripContainer1"; // - // asDecodedTextToolStripMenuItem + // toolStripContainer1.TopToolStripPanel // - this.asDecodedTextToolStripMenuItem.Name = "asDecodedTextToolStripMenuItem"; - this.asDecodedTextToolStripMenuItem.Size = new System.Drawing.Size(162, 22); - this.asDecodedTextToolStripMenuItem.Text = "As Decoded Text"; - this.asDecodedTextToolStripMenuItem.Click += new System.EventHandler(this.asDecodedTextToolStripMenuItem_Click); + this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStripMenu); + this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStripLogin); + // + // toolStripLogin + // + this.toolStripLogin.Dock = System.Windows.Forms.DockStyle.None; + this.toolStripLogin.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripLabel1, + this.comboBoxListenAddress, + this.toolStripLabel2, + this.textBoxProxyPort, + this.toolStripLabel3, + this.comboBoxLoginURL, + this.buttonStartProxy}); + this.toolStripLogin.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; + this.toolStripLogin.Location = new System.Drawing.Point(111, 0); + this.toolStripLogin.Name = "toolStripLogin"; + this.toolStripLogin.Size = new System.Drawing.Size(751, 25); + this.toolStripLogin.TabIndex = 3; + // + // toolStripLabel1 + // + this.toolStripLabel1.Name = "toolStripLabel1"; + this.toolStripLabel1.Size = new System.Drawing.Size(99, 22); + this.toolStripLabel1.Text = "Listen IP Address:"; + // + // comboBoxListenAddress + // + this.comboBoxListenAddress.Name = "comboBoxListenAddress"; + this.comboBoxListenAddress.Size = new System.Drawing.Size(121, 25); + this.comboBoxListenAddress.Text = "127.0.0.1"; + // + // toolStripLabel2 + // + this.toolStripLabel2.Name = "toolStripLabel2"; + this.toolStripLabel2.Size = new System.Drawing.Size(32, 22); + this.toolStripLabel2.Text = "Port:"; + // + // textBoxProxyPort + // + this.textBoxProxyPort.Name = "textBoxProxyPort"; + this.textBoxProxyPort.Size = new System.Drawing.Size(50, 25); + this.textBoxProxyPort.Text = "8080"; + // + // toolStripLabel3 + // + this.toolStripLabel3.Name = "toolStripLabel3"; + this.toolStripLabel3.Size = new System.Drawing.Size(64, 22); + this.toolStripLabel3.Text = "Login URL:"; + // + // comboBoxLoginURL + // + this.comboBoxLoginURL.Items.AddRange(new object[] { + "https://login.agni.lindenlab.com/cgi-bin/login.cgi", + "https://login.aditi.lindenlab.com/cgi-bin/login.cgi", + "http://127.0.0.1:8002", + "http://osgrid.org:8002"}); + this.comboBoxLoginURL.Name = "comboBoxLoginURL"; + this.comboBoxLoginURL.Size = new System.Drawing.Size(300, 25); + this.comboBoxLoginURL.Text = "https://login.agni.lindenlab.com/cgi-bin/login.cgi"; + // + // buttonStartProxy + // + this.buttonStartProxy.BackColor = System.Drawing.Color.LightGreen; + this.buttonStartProxy.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.buttonStartProxy.Image = global::WinGridProxy.Properties.Resources.accept; + this.buttonStartProxy.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonStartProxy.Name = "buttonStartProxy"; + this.buttonStartProxy.Size = new System.Drawing.Size(67, 22); + this.buttonStartProxy.Text = "Start Proxy"; + this.buttonStartProxy.Click += new System.EventHandler(this.buttonStartProxy_Click); + // + // saveFileDialog3 + // + this.saveFileDialog3.DefaultExt = "packet"; + this.saveFileDialog3.Filter = "Packets|*.packet|All Files|*.*"; + this.saveFileDialog3.Title = "Export Binary Data to File"; + // + // listViewSessions + // + this.listViewSessions.AllowColumnReorder = true; + 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.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + 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(479, 494); + this.listViewSessions.SmallImageList = this.imageList1; + this.listViewSessions.TabIndex = 0; + this.listViewSessions.UseCompatibleStateImageBehavior = false; + this.listViewSessions.View = System.Windows.Forms.View.Details; + this.listViewSessions.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewSessions_ColumnClick); + this.listViewSessions.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(this.listViewSessions_ItemSelectionChanged); + // + // columnHeaderCounter + // + this.columnHeaderCounter.Tag = "number"; + this.columnHeaderCounter.Text = "#"; + this.columnHeaderCounter.Width = 40; + // + // columnHeaderProtocol + // + this.columnHeaderProtocol.Tag = "string"; + this.columnHeaderProtocol.Text = "Protocol"; + // + // columnHeaderType + // + this.columnHeaderType.Tag = "string"; + this.columnHeaderType.Text = "Name"; + this.columnHeaderType.Width = 151; + // + // columnHeaderSize + // + this.columnHeaderSize.Tag = ""; + this.columnHeaderSize.Text = "Bytes"; + this.columnHeaderSize.Width = 42; + // + // columnHeaderUrl + // + this.columnHeaderUrl.Text = "Host"; + this.columnHeaderUrl.Width = 312; + // + // columnHeaderContentType + // + this.columnHeaderContentType.Text = "Content Type"; + this.columnHeaderContentType.Width = 250; + // + // listViewPacketFilters + // + this.listViewPacketFilters.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.listViewPacketFilters.CheckBoxes = true; + this.listViewPacketFilters.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderPacketName}); + this.listViewPacketFilters.Dock = System.Windows.Forms.DockStyle.Fill; + this.listViewPacketFilters.FullRowSelect = true; + this.listViewPacketFilters.GridLines = true; + listViewGroup1.Header = "Login"; + listViewGroup1.Name = "Login"; + listViewGroup2.Header = "Packets"; + listViewGroup2.Name = "Packets"; + this.listViewPacketFilters.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] { + listViewGroup1, + listViewGroup2}); + this.listViewPacketFilters.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listViewPacketFilters.Location = new System.Drawing.Point(3, 17); + this.listViewPacketFilters.MultiSelect = false; + this.listViewPacketFilters.Name = "listViewPacketFilters"; + this.listViewPacketFilters.Size = new System.Drawing.Size(291, 374); + 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 = "Name"; + this.columnHeaderPacketName.Width = 287; + // + // listViewMessageFilters + // + this.listViewMessageFilters.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.listViewMessageFilters.CheckBoxes = true; + this.listViewMessageFilters.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.columnHeaderName}); + this.listViewMessageFilters.Dock = System.Windows.Forms.DockStyle.Fill; + this.listViewMessageFilters.FullRowSelect = true; + this.listViewMessageFilters.GridLines = true; + listViewGroup3.Header = "Capabilities"; + listViewGroup3.Name = "Capabilities"; + listViewGroup4.Header = "EventQueue Messages"; + listViewGroup4.Name = "EventQueueMessages"; + this.listViewMessageFilters.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] { + listViewGroup3, + listViewGroup4}); + this.listViewMessageFilters.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.listViewMessageFilters.Location = new System.Drawing.Point(3, 17); + this.listViewMessageFilters.MultiSelect = false; + this.listViewMessageFilters.Name = "listViewMessageFilters"; + this.listViewMessageFilters.Size = new System.Drawing.Size(293, 374); + 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 = "Name"; + this.columnHeaderName.Width = 289; // // FormWinGridProxy // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1111, 519); - this.Controls.Add(this.statusStrip3); - this.Controls.Add(this.toolStrip1); - this.Controls.Add(this.panelMainWindow); - this.Controls.Add(this.panelProxyConfig); + this.Controls.Add(this.toolStripContainer1); + this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "FormWinGridProxy"; this.Text = "WinGridProxy"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); - this.panelProxyConfig.ResumeLayout(false); - this.panelProxyConfig.PerformLayout(); this.panelMainWindow.ResumeLayout(false); this.splitContainerSessionsTabs.Panel1.ResumeLayout(false); this.splitContainerSessionsTabs.Panel2.ResumeLayout(false); @@ -2119,7 +2112,7 @@ this.contextMenuStripRemove.ResumeLayout(false); this.contextMenuStripSelect.ResumeLayout(false); this.contextMenuStripMark.ResumeLayout(false); - this.tabControl1.ResumeLayout(false); + this.tabControlMain.ResumeLayout(false); this.tabPageSummary.ResumeLayout(false); this.panelStats.ResumeLayout(false); this.groupBox2.ResumeLayout(false); @@ -2127,6 +2120,9 @@ this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.tabPageFilters.ResumeLayout(false); + this.tabPageFilters.PerformLayout(); + this.toolStripFilters.ResumeLayout(false); + this.toolStripFilters.PerformLayout(); this.splitContainerFilters.Panel1.ResumeLayout(false); this.splitContainerFilters.Panel1.PerformLayout(); this.splitContainerFilters.Panel2.ResumeLayout(false); @@ -2145,8 +2141,6 @@ this.tabPageRequestJson.ResumeLayout(false); this.tabPageHexRequest.ResumeLayout(false); this.tabPageHexRequest.PerformLayout(); - this.statusStrip2.ResumeLayout(false); - this.statusStrip2.PerformLayout(); this.tabControlInspectorResponse.ResumeLayout(false); this.tabPageDecodeResponse.ResumeLayout(false); this.tabPageInspectorRAWResponse.ResumeLayout(false); @@ -2154,33 +2148,28 @@ this.tabPageResponseJson.ResumeLayout(false); this.tabPageHexViewResponse.ResumeLayout(false); this.tabPageHexViewResponse.PerformLayout(); - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); this.tabPageInject.ResumeLayout(false); - this.tabPageInject.PerformLayout(); - this.toolStrip1.ResumeLayout(false); - this.toolStrip1.PerformLayout(); + this.toolStripMenu.ResumeLayout(false); + this.toolStripMenu.PerformLayout(); this.contextMenuStripCopy.ResumeLayout(false); - this.statusStrip3.ResumeLayout(false); - this.statusStrip3.PerformLayout(); this.contextMenuStripFilterOptions.ResumeLayout(false); + this.toolStripContainer1.ContentPanel.ResumeLayout(false); + this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false); + this.toolStripContainer1.TopToolStripPanel.PerformLayout(); + this.toolStripContainer1.ResumeLayout(false); + this.toolStripContainer1.PerformLayout(); + this.toolStripLogin.ResumeLayout(false); + this.toolStripLogin.PerformLayout(); this.ResumeLayout(false); - this.PerformLayout(); } #endregion - private System.Windows.Forms.Panel panelProxyConfig; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox textBoxProxyPort; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.Label label1; private System.Windows.Forms.Panel panelMainWindow; private System.Windows.Forms.SplitContainer splitContainerSessionsTabs; private ListViewNoFlicker listViewSessions; - private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabControl tabControlMain; private System.Windows.Forms.TabPage tabPageSummary; private System.Windows.Forms.TabPage tabPageFilters; private System.Windows.Forms.SplitContainer splitContainerFilters; @@ -2192,7 +2181,7 @@ private System.Windows.Forms.ColumnHeader columnHeaderProtocol; private System.Windows.Forms.ColumnHeader columnHeaderType; private System.Windows.Forms.ColumnHeader columnHeaderUrl; - private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStrip toolStripMenu; private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton1; private System.Windows.Forms.ToolStripMenuItem captureTrafficToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; @@ -2208,7 +2197,6 @@ private System.Windows.Forms.RichTextBox richTextBoxRawResponse; private System.Windows.Forms.TreeView treeViewXmlResponse; private System.Windows.Forms.TabPage tabPageHexViewResponse; - private System.Windows.Forms.StatusStrip statusStrip1; private Be.Windows.Forms.HexBox hexBoxResponse; private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; private System.Windows.Forms.Button buttonInjectPacket; @@ -2246,7 +2234,6 @@ private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton3; private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem loadToolStripMenuItem; - private System.Windows.Forms.Button button3; private System.Windows.Forms.SplitContainer splitContainerInspectorTab; private System.Windows.Forms.TabControl tabControlInspectorRequest; private System.Windows.Forms.TabPage tabPageRawRequest; @@ -2254,7 +2241,6 @@ private System.Windows.Forms.TabPage tabPageXMLRequest; private System.Windows.Forms.TreeView treeViewXMLRequest; private System.Windows.Forms.TabPage tabPageHexRequest; - private System.Windows.Forms.StatusStrip statusStrip2; private System.Windows.Forms.ToolStripStatusLabel toolStripLabelHexEditorRequest; private Be.Windows.Forms.HexBox hexBoxRequest; private System.Windows.Forms.ToolStripMenuItem redToolStripMenuItem; @@ -2268,12 +2254,8 @@ private System.Windows.Forms.ToolStripMenuItem aboutWinGridProxyToolStripMenuItem; private System.Windows.Forms.CheckBox checkBoxCheckAllMessages; private System.Windows.Forms.GroupBox grpCapsFilters; - private System.Windows.Forms.ToolStripStatusLabel labelRequestHex; - private System.Windows.Forms.ToolStripStatusLabel labelResponseHex; private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton4; private System.Windows.Forms.ToolStripDropDownButton toolStripFileMenu; - private System.Windows.Forms.ToolStripMenuItem captureToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; private System.Windows.Forms.ToolStripMenuItem loadSessionArchiveToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem saveSessionArchiveToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator8; @@ -2290,8 +2272,6 @@ private System.Windows.Forms.ToolStripSeparator toolStripSeparator12; private System.Windows.Forms.ToolStripMenuItem findToolStripMenuItem; private System.Windows.Forms.ContextMenuStrip contextMenuStripSessions; - private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemAutoScroll; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator13; private System.Windows.Forms.ToolStripMenuItem toolStripMenuSessionsRemove; private System.Windows.Forms.ToolStripSeparator toolStripSeparatorFilterPacketByName; private System.Windows.Forms.ToolStripMenuItem enableDisableFilterByNameToolStripMenuItem; @@ -2299,7 +2279,6 @@ private System.Windows.Forms.ToolStripMenuItem findToolStripMenuItem1; private System.Windows.Forms.ToolStripSeparator toolStripSeparator16; private System.Windows.Forms.ToolStripMenuItem markToolStripMenuItem2; - private System.Windows.Forms.ToolStripMenuItem autoScrollSessionsToolStripMenuItem; private System.Windows.Forms.ContextMenuStrip contextMenuStripMark; private System.Windows.Forms.ToolStripMenuItem redToolStripMenuItem2; private System.Windows.Forms.ToolStripMenuItem goldToolStripMenuItem2; @@ -2325,11 +2304,6 @@ private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRemoveSelected; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemRemoveUnselected; private System.Windows.Forms.ToolStripMenuItem enableStatisticsToolStripMenuItem; - private System.Windows.Forms.RadioButton radioButtonSimulator; - private System.Windows.Forms.RadioButton radioButtonViewer; - private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButton5; - private System.Windows.Forms.ToolStripMenuItem saveFilterSelectionsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem loadFilterSelectionsToolStripMenuItem; private ListViewNoFlicker listViewPacketFilters; private System.Windows.Forms.ColumnHeader columnHeaderPacketName; private ListViewNoFlicker listViewMessageFilters; @@ -2340,12 +2314,6 @@ private System.Windows.Forms.SaveFileDialog saveFileDialog2; private System.Windows.Forms.OpenFileDialog openFileDialog2; private System.Windows.Forms.ToolStripMenuItem startProxyOnStartupToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; - private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem autoAddNewDiscoveredMessagesToolStripMenuItem; - private System.Windows.Forms.ComboBox comboBoxLoginURL; - private System.Windows.Forms.ColumnHeader columnHeaderMessageType; - private System.Windows.Forms.ColumnHeader columnHeaderPacketType; private System.Windows.Forms.TabPage tabPageRequestJson; private System.Windows.Forms.RichTextBox richTextBoxNotationRequest; private System.Windows.Forms.TabPage tabPageResponseJson; @@ -2354,8 +2322,6 @@ private System.Windows.Forms.RichTextBox richTextBoxDecodedRequest; private System.Windows.Forms.TabPage tabPageDecodeResponse; private System.Windows.Forms.RichTextBox richTextBoxDecodedResponse; - private System.Windows.Forms.StatusStrip statusStrip3; - private System.Windows.Forms.ToolStripStatusLabel toolStripMainLabel; private System.Windows.Forms.ContextMenuStrip contextMenuStripFilterOptions; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; private System.Windows.Forms.ToolStripMenuItem uncheckAllToolStripMenuItem; @@ -2363,13 +2329,34 @@ private System.Windows.Forms.ToolStripMenuItem autoColorizeToolStripMenuItem; private System.Windows.Forms.ColorDialog colorDialog1; private System.Windows.Forms.ColumnHeader columnHeaderContentType; - private System.Windows.Forms.ComboBox comboBoxListenAddress; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemPlugins; private System.Windows.Forms.ToolStripSeparator toolStripSeparator14; private System.Windows.Forms.RichTextBox richTextBoxDebugLog; private System.Windows.Forms.ToolStripSeparator toolStripSeparator18; private System.Windows.Forms.ToolStripMenuItem exportToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem asDecodedTextToolStripMenuItem; + private System.Windows.Forms.Label labelHexRequestStatus; + private System.Windows.Forms.Label labelHexBoxResponseStatus; + private System.Windows.Forms.ToolStripContainer toolStripContainer1; + private System.Windows.Forms.ToolStrip toolStripLogin; + private System.Windows.Forms.ToolStripLabel toolStripLabel1; + private System.Windows.Forms.ToolStripComboBox comboBoxListenAddress; + private System.Windows.Forms.ToolStripLabel toolStripLabel2; + private System.Windows.Forms.ToolStripTextBox textBoxProxyPort; + private System.Windows.Forms.ToolStripLabel toolStripLabel3; + private System.Windows.Forms.ToolStripComboBox comboBoxLoginURL; + private System.Windows.Forms.ToolStripButton buttonStartProxy; + private System.Windows.Forms.ToolStrip toolStripFilters; + private System.Windows.Forms.ToolStripButton loadFilterSelectionsToolStripMenuItem; + private System.Windows.Forms.ToolStripButton saveFilterSelectionsToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator7; + private System.Windows.Forms.ToolStripSplitButton toolStripSplitButton1; + private System.Windows.Forms.ToolStripMenuItem autoAddNewDiscoveredMessagesToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripMenuItem saveSettingsToolStripMenuItem; + private System.Windows.Forms.Button buttonExportRawHex; + private System.Windows.Forms.Button buttonSaveRequestHex; + private System.Windows.Forms.SaveFileDialog saveFileDialog3; } } diff --git a/Programs/WinGridProxy/FormWinGridProxy.cs b/Programs/WinGridProxy/FormWinGridProxy.cs index 1b3fc8b1..cbf8f6d7 100644 --- a/Programs/WinGridProxy/FormWinGridProxy.cs +++ b/Programs/WinGridProxy/FormWinGridProxy.cs @@ -51,41 +51,52 @@ namespace WinGridProxy { private static SettingsStore Store = new SettingsStore(); - private static bool IsProxyRunning; - - private bool AutoScrollSessions; - + private static bool m_ProxyRunning; + private Assembly m_CurrentAssembly = Assembly.GetExecutingAssembly(); ProxyManager proxy; - private PacketDecoder DecodePacket = new PacketDecoder(); + private FormPluginManager pluginManager; private int PacketCounter; + // stats tracking private int CapsInCounter; private int CapsInBytes; private int CapsOutCounter; private int CapsOutBytes; - private int PacketsInCounter; private int PacketsInBytes; private int PacketsOutCounter; private int PacketsOutBytes; + private List QueuedSessions; private System.Threading.Timer SessionQueue; private int SessionQueueInterval; private bool monoRuntime; + private const string PROTO_CAPABILITIES = "Cap"; + private const string PROTO_EVENTMESSAGE = "Event"; + private const string PROTO_PACKETSTRING = "UDP"; + private const string PROTO_AUTHENTICATE = "https"; + + private readonly Color Color_Login = Color.OldLace; + private readonly Color Color_Packet = Color.LightYellow; + private readonly Color Color_Cap = Color.Honeydew; + private readonly Color Color_Event = Color.AliceBlue; + public FormWinGridProxy() { InitializeComponent(); Logger.Log("WinGridProxy ready", Helpers.LogLevel.Info); + PacketDecoder.InitializeDecoder(); + if (FireEventAppender.Instance != null) { FireEventAppender.Instance.MessageLoggedEvent += new MessageLoggedEventHandler(Instance_MessageLoggedEvent); } - + // Attempt to work around some mono bugs monoRuntime = Type.GetType("Mono.Runtime") != null; // Officially supported way of detecting mono if (monoRuntime) @@ -102,7 +113,7 @@ namespace WinGridProxy richTextBoxRawResponse.Font = fixedFont; } - // populate the listen box with IPs + // populate the listen box with the known IP Addresses of this host IPHostEntry iphostentry = Dns.GetHostByName(Dns.GetHostName()); foreach (IPAddress address in iphostentry.AddressList) comboBoxListenAddress.Items.Add(address.ToString()); @@ -115,18 +126,7 @@ namespace WinGridProxy } #region Event Handlers for Messages/Packets - - public ListViewItem FindListViewItem(ListView listView, string key, bool searchAll) - { - foreach (ListViewItem item in listView.Items) - { - if (item.Text.Equals(key) - || (searchAll && item.SubItems.ContainsKey(key))) - return item; - } - return null; - } - + /// /// Adds a new EventQueue message to the Message Filters listview. /// @@ -143,14 +143,15 @@ namespace WinGridProxy } else { - ListViewItem foundCap = FindListViewItem(listViewMessageFilters, req.Info.CapType, false); if (foundCap == null) { - ListViewItem addedItem = listViewMessageFilters.Items.Add(new ListViewItem(req.Info.CapType, new ListViewGroup("EventQueue Messages"))); - addedItem.SubItems.Add("EventMessage"); - addedItem.BackColor = Color.AliceBlue; + ListViewItem addedItem = listViewMessageFilters.Items.Add(new ListViewItem(req.Info.CapType, + listViewMessageFilters.Groups["EventQueueMessages"])); + + addedItem.SubItems.Add(PROTO_EVENTMESSAGE); + addedItem.BackColor = Color_Event; if (autoAddNewDiscoveredMessagesToolStripMenuItem.Checked) addedItem.Checked = true; @@ -165,8 +166,7 @@ namespace WinGridProxy /// /// Adds a new Capability message to the message filters listview /// - /// - void ProxyManager_OnCapabilityAdded(CapInfo cap) + private void ProxyManager_OnCapabilityAdded(CapInfo cap) { if (this.InvokeRequired) { @@ -180,9 +180,10 @@ namespace WinGridProxy ListViewItem foundCap = FindListViewItem(listViewMessageFilters, cap.CapType, false); if (foundCap == null) { - ListViewItem addedItem = listViewMessageFilters.Items.Add(new ListViewItem(cap.CapType, new ListViewGroup("Capabilities Messages"))); - addedItem.SubItems.Add("CapMessage"); - addedItem.BackColor = Color.Honeydew; + ListViewItem addedItem = listViewMessageFilters.Items.Add(new ListViewItem(cap.CapType, + listViewMessageFilters.Groups["Capabilities"])); + addedItem.SubItems.Add(PROTO_CAPABILITIES); + addedItem.BackColor = Color_Cap; if (autoAddNewDiscoveredMessagesToolStripMenuItem.Checked) addedItem.Checked = true; @@ -190,12 +191,10 @@ namespace WinGridProxy } } - void ProxyManager_OnPacketLog(Packet packet, Direction direction, IPEndPoint endpoint) - { - PacketAnalyzer_OnPacketLog(packet, direction, endpoint); - } - - void ProxyManager_OnLoginResponse(object request, Direction direction) + /// + /// Handle Login Requests/Responses + /// + private void ProxyManager_OnLoginResponse(object request, Direction direction) { if (this.InvokeRequired) { @@ -205,19 +204,40 @@ namespace WinGridProxy })); } else - { - PacketCounter++; + { + string loginType; - string loginType = (request is XmlRpcRequest) ? "Login Request" : "Login Response"; - ListViewItem session = new ListViewItem(new string[] { PacketCounter.ToString(), "HTTPS", loginType, request.ToString().Length.ToString(), comboBoxLoginURL.Text, "xml-rpc" }); - session.Tag = request; - session.ImageIndex = (request is XmlRpcRequest) ? 1 : 0; + if (request is XmlRpcRequest) + { + loginType = "Login Request"; + } + else + { + loginType = "Login Response"; + } - AddSession(session); + ListViewItem foundItem = FindListViewItem(listViewPacketFilters, loginType, false); + + if (foundItem != null && foundItem.Checked == true) + { + PacketCounter++; + + SessionLogin sessionLogin = new SessionLogin(request, direction, comboBoxLoginURL.Text, request.GetType().Name + " " + loginType); + + ListViewItem sessionEntry = new ListViewItem(new string[] { PacketCounter.ToString(), + sessionLogin.Protocol, sessionLogin.Name, sessionLogin.Length.ToString(), sessionLogin.Host, sessionLogin.ContentType }); + + sessionEntry.Tag = sessionLogin; + sessionEntry.ImageIndex = (int)sessionLogin.Direction; + //session.ImageIndex = (request is XmlRpcRequest) ? 1 : 0; + + AddSession(sessionEntry); + } } } - void PacketAnalyzer_OnPacketLog(Packet packet, Direction direction, IPEndPoint endpoint) + // Only raised when we've told GridProxy we want a specific packet type + private void ProxyManager_OnPacketLog(Packet packet, Direction direction, IPEndPoint endpoint) { PacketCounter++; @@ -232,14 +252,20 @@ namespace WinGridProxy PacketsOutBytes += packet.Length; } + SessionPacket sessionPacket = new SessionPacket(packet, direction, endpoint, + PacketDecoder.InterpretOptions(packet.Header) + " Seq: " + packet.Header.Sequence.ToString() + " Freq:" + packet.Header.Frequency.ToString()); - ListViewItem session = new ListViewItem(new string[] { PacketCounter.ToString(), "UDP", packet.Type.ToString(), packet.Length.ToString(), endpoint.ToString(), "binary udp" }); - session.Tag = packet; - session.ImageIndex = (direction == Direction.Incoming) ? 0 : 1; - AddSession(session); + ListViewItem sessionItem = new ListViewItem(new string[] { PacketCounter.ToString(), sessionPacket.Protocol, sessionPacket.Name, sessionPacket.Length.ToString(), sessionPacket.Host, sessionPacket.ContentType }); + sessionItem.Tag = sessionPacket; + sessionItem.ImageIndex = (int)sessionPacket.Direction; + + AddSession(sessionItem); } - void ProxyManager_OnMessageLog(CapsRequest req, CapsStage stage) + /// + /// Handle Capabilities + /// + private void ProxyManager_OnMessageLog(CapsRequest req, CapsStage stage) { if (this.InvokeRequired) { @@ -257,36 +283,53 @@ namespace WinGridProxy PacketCounter++; int size = 0; - string cType = String.Empty; + string contentType = String.Empty; if (req.RawRequest != null) { size += req.RawRequest.Length; - cType = req.RequestHeaders.Get("Content-Type"); //req.RequestHeaders["Content-Type"]; + contentType = req.RequestHeaders.Get("Content-Type"); //req.RequestHeaders["Content-Type"]; } if (req.RawResponse != null) { size += req.RawResponse.Length; - cType = req.ResponseHeaders.Get("Content-Type"); + contentType = req.ResponseHeaders.Get("Content-Type"); } - string[] s = { PacketCounter.ToString(), found.SubItems[1].Text, req.Info.CapType, size.ToString(), req.Info.URI, cType }; - ListViewItem session = new ListViewItem(s); - session.BackColor = found.BackColor; - - session.Tag = req; + Direction direction; if (stage == CapsStage.Request) { CapsOutCounter++; CapsOutBytes += req.Request.ToString().Length; - session.ImageIndex = 1; + direction = Direction.Outgoing; } else { CapsInCounter++; CapsInBytes += req.Response.ToString().Length; - session.ImageIndex = 0; + direction = Direction.Incoming; } + string proto = found.SubItems[1].Text; + + Session capsSession = null; + if (found.Group.Header.Equals("Capabilities")) + { + capsSession = new SessionCaps(req.RawRequest, req.RawResponse, req.RequestHeaders, + req.ResponseHeaders, direction, req.Info.URI, req.Info.CapType, proto); + } + else + { + capsSession = new SessionEvent(req.RawResponse, req.ResponseHeaders, req.Info.URI, req.Info.CapType, proto); + } + + string[] s = { PacketCounter.ToString(),capsSession.Protocol, capsSession.Name, capsSession.Length.ToString(), capsSession.Host, capsSession.ContentType }; + ListViewItem session = new ListViewItem(s); + + session.ImageIndex = (int)direction; + session.Tag = capsSession; + + session.BackColor = found.BackColor; + AddSession(session); } else @@ -295,7 +338,7 @@ namespace WinGridProxy { // must be a new event not in KnownCaps, lets add it to the listview ListViewItem addedItem = listViewMessageFilters.Items.Add(new ListViewItem(req.Info.CapType)); - addedItem.BackColor = Color.AliceBlue; + addedItem.BackColor = Color_Cap; if (autoAddNewDiscoveredMessagesToolStripMenuItem.Checked) addedItem.Checked = true; @@ -306,12 +349,26 @@ namespace WinGridProxy #endregion + #region Helpers + + private ListViewItem FindListViewItem(ListView listView, string key, bool searchAll) + { + foreach (ListViewItem item in listView.Items) + { + if (item.Text.Equals(key) + || (searchAll && item.SubItems.ContainsKey(key))) + return item; + } + return null; + } + + #endregion + #region GUI Event Handlers private void buttonStartProxy_Click(object sender, EventArgs e) { - - if (button1.Text.StartsWith("Start") && IsProxyRunning.Equals(false)) + if (buttonStartProxy.Text.StartsWith("Start") && m_ProxyRunning.Equals(false)) { proxy = new ProxyManager(textBoxProxyPort.Text, comboBoxListenAddress.Text, comboBoxLoginURL.Text); // disable any gui elements @@ -320,24 +377,25 @@ namespace WinGridProxy InitProxyFilters(); proxy.Start(); - - loadFilterSelectionsToolStripMenuItem.Enabled = saveFilterSelectionsToolStripMenuItem.Enabled = true; - - // enable any gui elements - toolStripDropDownButton5.Enabled = - toolStripMenuItemPlugins.Enabled = grpUDPFilters.Enabled = grpCapsFilters.Enabled = IsProxyRunning = true; - button1.Text = "Stop Proxy"; + loadFilterSelectionsToolStripMenuItem.Enabled = saveFilterSelectionsToolStripMenuItem.Enabled = true; + + // enable any gui elements + toolStripSplitButton1.Enabled = + toolStripMenuItemPlugins.Enabled = grpUDPFilters.Enabled = grpCapsFilters.Enabled = m_ProxyRunning = true; + buttonStartProxy.Text = "Stop Proxy"; + buttonStartProxy.Checked = true; if (enableStatisticsToolStripMenuItem.Checked && !timer1.Enabled) timer1.Enabled = true; } - else if (button1.Text.StartsWith("Stop") && IsProxyRunning.Equals(true)) + else if (buttonStartProxy.Text.StartsWith("Stop") && m_ProxyRunning.Equals(true)) { loadFilterSelectionsToolStripMenuItem.Enabled = saveFilterSelectionsToolStripMenuItem.Enabled = false; // stop the proxy proxy.Stop(); - toolStripMenuItemPlugins.Enabled = grpUDPFilters.Enabled = grpCapsFilters.Enabled = IsProxyRunning = false; - button1.Text = "Start Proxy"; + toolStripMenuItemPlugins.Enabled = grpUDPFilters.Enabled = grpCapsFilters.Enabled = m_ProxyRunning = false; + buttonStartProxy.Text = "Start Proxy"; + buttonStartProxy.Checked = false; comboBoxListenAddress.Enabled = textBoxProxyPort.Enabled = comboBoxLoginURL.Enabled = true; if (!enableStatisticsToolStripMenuItem.Checked && timer1.Enabled) @@ -361,203 +419,45 @@ namespace WinGridProxy // update the context menus contextMenuStripSessions_Opening(sender, null); - tabControl1.SelectTab("tabPageInspect"); + tabControlMain.SelectTab("tabPageInspect"); + object tag = e.Item.Tag; - if (tag is string && tag.ToString().StartsWith("Packet Type:")) + if (tag is Session) { - Be.Windows.Forms.DynamicByteProvider data = new Be.Windows.Forms.DynamicByteProvider(Utils.StringToBytes(tag.ToString())); - if (e.Item.ImageIndex == 1) // sent item - { - richTextBoxDecodedRequest.Text = String.Format("{0}", tag); - richTextBoxRawRequest.Text = String.Format("{0}", tag); - richTextBoxNotationRequest.Text = "No Notation decoding for String items"; - treeViewXMLRequest.Nodes.Clear(); - hexBoxRequest.ByteProvider = data; + Session session = (Session)tag; - richTextBoxDecodedResponse.Text = "No Data"; - richTextBoxRawResponse.Text = "No Data"; - richTextBoxNotationResponse.Text = "No Data"; - treeViewXmlResponse.Nodes.Clear(); - hexBoxResponse.ByteProvider = null; - } - else - { - richTextBoxDecodedRequest.Text = "No Data"; - richTextBoxRawRequest.Text = "No Data"; - richTextBoxNotationRequest.Text = "No Notation decoding for String items"; - treeViewXMLRequest.Nodes.Clear(); - hexBoxRequest.ByteProvider = null; - - richTextBoxDecodedResponse.Text = String.Format("{0}", tag); - richTextBoxRawResponse.Text = String.Format("{0}", tag); - richTextBoxNotationResponse.Text = "No Notation decoding for String items"; - treeViewXmlResponse.Nodes.Clear(); - hexBoxResponse.ByteProvider = data; - } - } - - else if (tag is XmlRpcRequest) - { - XmlRpcRequest requestData = (XmlRpcRequest)tag; - - richTextBoxDecodedRequest.Text = requestData.ToString(); - richTextBoxRawRequest.Text = requestData.ToString(); - richTextBoxNotationRequest.Text = "Notation Not Available for XML Request"; - updateTreeView(requestData.ToString(), treeViewXMLRequest); - Be.Windows.Forms.DynamicByteProvider data = new Be.Windows.Forms.DynamicByteProvider(Utils.StringToBytes(requestData.ToString())); - hexBoxRequest.ByteProvider = data; - - richTextBoxDecodedResponse.Text = String.Empty; - richTextBoxRawResponse.Text = String.Empty; - richTextBoxNotationResponse.Text = String.Empty; - treeViewXmlResponse.Nodes.Clear(); - hexBoxResponse.ByteProvider = null; - } - else if (tag is XmlRpcResponse) - { - XmlRpcResponse responseData = (XmlRpcResponse)tag; - - richTextBoxDecodedResponse.Text = responseData.ToString(); - richTextBoxRawResponse.Text = responseData.ToString(); - richTextBoxNotationResponse.Text = "Notation Not Available for XML Request"; - updateTreeView(responseData.ToString(), treeViewXmlResponse); - Be.Windows.Forms.DynamicByteProvider data = new Be.Windows.Forms.DynamicByteProvider(Utils.StringToBytes(responseData.ToString())); - hexBoxResponse.ByteProvider = data; - - richTextBoxDecodedRequest.Text = String.Empty; - richTextBoxRawRequest.Text = String.Empty; - richTextBoxNotationRequest.Text = String.Empty; - treeViewXMLRequest.Nodes.Clear(); - hexBoxRequest.ByteProvider = null; - - } - else if (tag is Packet) - { - Packet packet = (Packet)tag; - - Be.Windows.Forms.DynamicByteProvider data = new Be.Windows.Forms.DynamicByteProvider(packet.ToBytes()); - // we have no conversion from Packet to xml or notation - richTextBoxNotationRequest.Text = String.Empty; - richTextBoxNotationResponse.Text = String.Empty; treeViewXmlResponse.Nodes.Clear(); treeViewXMLRequest.Nodes.Clear(); - // 0 = incoming, 1 = outgoing - if (e.Item.ImageIndex == 0) - { - richTextBoxDecodedResponse.Text = TagToString(tag, listViewSessions.FocusedItem.SubItems[2].Text); - richTextBoxRawResponse.Text = TagToString(tag, listViewSessions.FocusedItem.SubItems[2].Text); - richTextBoxNotationResponse.Text = "Notation Not Available for Packet Types"; - hexBoxResponse.ByteProvider = data; + Be.Windows.Forms.DynamicByteProvider responseBytes = new Be.Windows.Forms.DynamicByteProvider(session.ToBytes(Direction.Incoming)); + richTextBoxDecodedResponse.Text = session.ToPrettyString(Direction.Incoming); + richTextBoxRawResponse.Text = session.ToRawString(Direction.Incoming); + richTextBoxNotationResponse.Text = session.ToStringNotation(Direction.Incoming); + hexBoxResponse.ByteProvider = responseBytes; + updateTreeView(session.ToXml(Direction.Incoming), treeViewXmlResponse); - richTextBoxDecodedRequest.Text = String.Empty; - richTextBoxRawRequest.Text = String.Empty; - hexBoxRequest.ByteProvider = null; - } - else - { - richTextBoxDecodedRequest.Text = TagToString(tag, listViewSessions.FocusedItem.SubItems[2].Text); - richTextBoxRawRequest.Text = TagToString(tag, listViewSessions.FocusedItem.SubItems[2].Text); - richTextBoxNotationRequest.Text = "Notation Not Available for Packet Types"; - hexBoxRequest.ByteProvider = data; - - richTextBoxDecodedResponse.Text = String.Empty; - richTextBoxRawResponse.Text = String.Empty; - hexBoxResponse.ByteProvider = null; - } + Be.Windows.Forms.DynamicByteProvider requestBytes = new Be.Windows.Forms.DynamicByteProvider(session.ToBytes(Direction.Outgoing)); + richTextBoxDecodedRequest.Text = session.ToPrettyString(Direction.Outgoing); + richTextBoxRawRequest.Text = session.ToRawString(Direction.Outgoing); + richTextBoxNotationRequest.Text = session.ToStringNotation(Direction.Outgoing); + hexBoxRequest.ByteProvider = requestBytes; + updateTreeView(session.ToXml(Direction.Outgoing), treeViewXMLRequest); + RequestPosition_Changed(this, EventArgs.Empty); + ReplyPosition_Changed(this, EventArgs.Empty); } - else if (tag is CapsRequest) + else { - CapsRequest capsData = (CapsRequest)tag; - - if (capsData.Request != null) - { - StringBuilder rawRequest = new StringBuilder(); - - if (capsData.RequestHeaders != null) - { - foreach (string key in capsData.RequestHeaders.Keys) - { - rawRequest.AppendFormat("{0}: {1}" + System.Environment.NewLine, key, capsData.RequestHeaders[key]); - } - rawRequest.AppendLine(); - } - - string rawCapsData = string.Empty; - try { rawCapsData = Utils.BytesToString(capsData.RawRequest); } - catch (Exception) { } - - rawRequest.AppendLine(rawCapsData); - - if (capsData.RequestHeaders["content-type"].Equals("application/octet-stream")) - { - richTextBoxDecodedRequest.Text = rawRequest.ToString(); - treeViewXMLRequest.Nodes.Clear(); - richTextBoxNotationRequest.Text = "Binary data cannot be formatted as notation"; - } - else - { - OSD requestOSD = OSDParser.DeserializeLLSDXml(capsData.RawRequest); - - richTextBoxDecodedRequest.Text = TagToString(requestOSD, listViewSessions.FocusedItem.SubItems[2].Text); - richTextBoxNotationRequest.Text = requestOSD.ToString(); - updateTreeView(rawCapsData, treeViewXMLRequest); - } - // these work for both binary and xml+llsd messages - richTextBoxRawRequest.Text = rawRequest.ToString(); - Be.Windows.Forms.DynamicByteProvider data = new Be.Windows.Forms.DynamicByteProvider(capsData.RawRequest); - hexBoxRequest.ByteProvider = data; - } - else - { - richTextBoxDecodedRequest.Text = "No Data"; - richTextBoxRawRequest.Text = "No Data"; - richTextBoxNotationRequest.Text = "No Data"; - treeViewXMLRequest.Nodes.Clear(); - hexBoxRequest.ByteProvider = null; - - } - - if (capsData.Response != null) - { - StringBuilder rawResponse = new StringBuilder(); - - if (capsData.ResponseHeaders != null) - { - foreach (string key in capsData.ResponseHeaders.Keys) - { - rawResponse.AppendFormat("{0}: {1}" + System.Environment.NewLine, key, capsData.ResponseHeaders[key]); - } - rawResponse.AppendLine(); - } - rawResponse.AppendLine(Utils.BytesToString(capsData.RawResponse)); - - OSD responseOSD = OSDParser.DeserializeLLSDXml(capsData.RawResponse); - - richTextBoxDecodedResponse.Text = TagToString(responseOSD, listViewSessions.FocusedItem.SubItems[2].Text);//.ToString(); - richTextBoxRawResponse.Text = rawResponse.ToString(); - richTextBoxNotationResponse.Text = responseOSD.ToString(); - updateTreeView(Utils.BytesToString(capsData.RawResponse), treeViewXmlResponse); - Be.Windows.Forms.DynamicByteProvider data = new Be.Windows.Forms.DynamicByteProvider(capsData.RawResponse); - hexBoxResponse.ByteProvider = data; - } - else - { - richTextBoxDecodedResponse.Text = "No Data"; - richTextBoxRawResponse.Text = "No Data"; - richTextBoxNotationResponse.Text = "No Data"; - treeViewXmlResponse.Nodes.Clear(); - hexBoxResponse.ByteProvider = null; - } + richTextBoxDecodedResponse.Text = "Unknown data object encountered: " + tag.GetType().ToString(); } + } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { - if (IsProxyRunning) + if (m_ProxyRunning) proxy.Stop(); if (saveOptionsOnExitToolStripMenuItem.Checked) @@ -652,9 +552,11 @@ namespace WinGridProxy { if (hexBoxRequest.ByteProvider != null) { - labelRequestHex.Text = string.Format("Ln {0} Col {1} bytes {2}", + labelHexRequestStatus.Text = String.Format("Ln {0} Col {1} bytes {2}", hexBoxRequest.CurrentLine, hexBoxRequest.CurrentPositionInLine, hexBoxRequest.ByteProvider.Length); + buttonSaveRequestHex.Visible = (hexBoxRequest.ByteProvider.Length > 0); } + buttonSaveRequestHex.Visible = (hexBoxRequest.ByteProvider != null && hexBoxRequest.ByteProvider.Length > 0); } // Update Response Hexbox status bar with current cursor location @@ -662,20 +564,12 @@ namespace WinGridProxy { if (hexBoxResponse.ByteProvider != null) { - labelResponseHex.Text = string.Format("Ln {0} Col {1} bytes {2}", + labelHexBoxResponseStatus.Text = String.Format("Ln {0} Col {1} bytes {2}", hexBoxResponse.CurrentLine, hexBoxResponse.CurrentPositionInLine, hexBoxResponse.ByteProvider.Length); } + buttonExportRawHex.Visible = (hexBoxResponse.ByteProvider != null && hexBoxResponse.ByteProvider.Length > 0); } - - /// Enable or Disable Autoscrolling of the session list, Updates the Preferences and context menus - /// The ToolStripMenuItem sending the event - /// - private void sessionEnableAutoScroll_CheckedChanged(object sender, EventArgs e) - { - ToolStripMenuItem autoscroll = (ToolStripMenuItem)sender; - AutoScrollSessions = autoScrollSessionsToolStripMenuItem.Checked = toolStripMenuItemAutoScroll.Checked = autoscroll.Checked; - } - + // select all specified sessions by packet name private void sessionSelectAllPacketType_Click(object sender, EventArgs e) { @@ -716,7 +610,7 @@ namespace WinGridProxy { if (listViewSessions.FocusedItem != null) { - string strPacketOrMessage = (listViewSessions.FocusedItem.SubItems[1].Text.Equals("UDP")) ? "Packets" : "Messages"; + string strPacketOrMessage = (listViewSessions.FocusedItem.SubItems[1].Text.Equals(PROTO_PACKETSTRING)) ? "Packets" : "Messages"; enableDisableFilterByNameToolStripMenuItem.Text = String.Format("Capture {0} {1}", listViewSessions.FocusedItem.SubItems[2].Text, strPacketOrMessage); toolStripMenuItemSelectPacketName.Tag = enableDisableFilterByNameToolStripMenuItem.Tag = listViewSessions.FocusedItem.SubItems[2].Text; @@ -813,7 +707,8 @@ namespace WinGridProxy 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) + if (MessageBox.Show("Would you like to apply these settings to the current session list?", + "Apply Filter", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { listViewSessions.BeginUpdate(); foreach (ListViewItem item in listViewSessions.Items) @@ -838,7 +733,8 @@ namespace WinGridProxy private void listViewPacketFilters_ItemChecked(object sender, ItemCheckedEventArgs e) { - proxy.AddUDPDelegate(packetTypeFromName(e.Item.Text), e.Item.Checked); + if(e.Item.Group.Name.Equals("Packets")) + proxy.AddUDPDelegate(PacketTypeFromName(e.Item.Text), e.Item.Checked); } private void checkBoxCheckallCaps_CheckedChanged(object sender, EventArgs e) @@ -872,36 +768,43 @@ namespace WinGridProxy OSDArray sessionArray = new OSDArray(); foreach (ListViewItem item in listViewSessions.Items) { - if (item.Tag is Packet || item.Tag is IMessage || item.Tag is String || item.Tag is CapsRequest) + if (item.Tag is Session) { - OSDMap session = new OSDMap(); - session["name"] = OSD.FromString(item.Name); - session["image_index"] = OSD.FromInteger(item.ImageIndex); - session["id"] = OSD.FromString(item.SubItems[0].Text); - session["protocol"] = OSD.FromString(item.SubItems[1].Text); - session["packet"] = OSD.FromString(item.SubItems[2].Text); - session["size"] = OSD.FromString(item.SubItems[3].Text); - session["host"] = OSD.FromString(item.SubItems[4].Text); - - if (item.Tag is Packet) + Session data = null; + if (item.Tag is SessionCaps) { - session["tag"] = OSD.FromBinary(Utils.StringToBytes(DecodePacket.PacketToString((Packet)item.Tag))); + data = (SessionCaps)item.Tag; } - else if (item.Tag is IMessage) + else if (item.Tag is SessionEvent) { - IMessage m = (IMessage)item.Tag; - session["tag"] = OSD.FromBinary(Utils.StringToBytes(m.Serialize().ToString())); + data = (SessionEvent)item.Tag; } - else if (item.Tag is System.String) + else if (item.Tag is SessionLogin) { - session["tag"] = OSD.FromBinary(Utils.StringToBytes(Tag.ToString())); + data = (SessionLogin)item.Tag; + } + else if (item.Tag is SessionPacket) + { + data = (SessionPacket)item.Tag; } else { - // we intentionally don't save login requests or responses - session["tag"] = OSD.FromBinary(Utils.StringToBytes("Encoding disabled for this item type")); + Console.WriteLine("Not a valid session type?"); + continue; } - + //Type t = item.Tag.GetType(); + + //Session data = (SessionCaps)item.Tag; + OSDMap session = new OSDMap(); + //session["name"] = OSD.FromString(item.Name); + //session["image_index"] = OSD.FromInteger(item.ImageIndex); + session["id"] = OSD.FromString(item.SubItems[0].Text); + //session["protocol"] = OSD.FromString(item.SubItems[1].Text); + //session["packet"] = OSD.FromString(item.SubItems[2].Text); + //session["size"] = OSD.FromString(item.SubItems[3].Text); + //session["host"] = OSD.FromString(item.SubItems[4].Text); + session["type"] = OSD.FromString(data.GetType().ToString()); + session["tag"] = OSD.FromBinary(data.Serialize()); sessionArray.Add(session); } } @@ -923,25 +826,31 @@ namespace WinGridProxy { if (openFileDialog1.ShowDialog() == DialogResult.OK) { - OSD osd = OSDParser.DeserializeLLSDNotation(File.ReadAllText(openFileDialog1.FileName)); - OSDMap map = (OSDMap)osd; + OSDMap map = (OSDMap)OSDParser.DeserializeLLSDNotation(File.ReadAllText(openFileDialog1.FileName)); + OSDArray sessionsArray = (OSDArray)map["sessions"]; - + listViewSessions.Items.Clear(); listViewSessions.BeginUpdate(); for (int i = 0; i < sessionsArray.Count; i++) - { + { OSDMap session = (OSDMap)sessionsArray[i]; + + Session importedSession = (Session)m_CurrentAssembly.CreateInstance(session["type"].AsString()); + importedSession.Deserialize(session["tag"].AsBinary()); + ListViewItem addedItem = new ListViewItem(new string[] { session["id"].AsString(), - session["protocol"].AsString(), - session["packet"].AsString(), - session["size"].AsString(), - session["host"].AsString()}); + importedSession.Protocol, + importedSession.Name, + importedSession.Length.ToString(), + importedSession.Host, + importedSession.ContentType}); AddSession(addedItem); - addedItem.ImageIndex = session["image_index"].AsInteger(); + //addedItem.ImageIndex = session["image_index"].AsInteger(); + addedItem.ImageIndex = (int)importedSession.Direction; addedItem.BackColor = Color.GhostWhite; // give imported items a different color - addedItem.Tag = Utils.BytesToString(session["tag"].AsBinary()); + addedItem.Tag = importedSession; } listViewSessions.EndUpdate(); @@ -966,113 +875,12 @@ namespace WinGridProxy private void exitToolStripMenuItem1_Click(object sender, EventArgs e) { // TODO: warn if client is connected! + this.Close(); } #region Helpers - /// - /// Decode an IMessage object into a string of key/value pairs - /// - /// The IMessage object - /// A formatted string containing the names and values of the source object - public static string IMessageToString(object message, int recurseLevel) - { - if (message == null) - return String.Empty; - - StringBuilder result = new StringBuilder(); - // common/custom types - if (recurseLevel <= 0) - { - result.AppendFormat("Message Type: {0}" + System.Environment.NewLine, message.GetType().Name); - } - else - { - string pad = " +--".PadLeft(recurseLevel + 3); - result.AppendFormat("{0} {1}" + System.Environment.NewLine, pad, message.GetType().Name); - } - - recurseLevel++; - - foreach (FieldInfo messageField in message.GetType().GetFields()) - { - // an abstract message class - if (messageField.FieldType.IsAbstract) - { - result.AppendLine(IMessageToString(messageField.GetValue(message), recurseLevel)); - } - // a byte array - else if (messageField.GetValue(message) != null && messageField.GetValue(message).GetType() == typeof(Byte[])) - { - result.AppendFormat("{0, 30}:" + System.Environment.NewLine, - messageField.Name); - - result.AppendFormat("{0}" + System.Environment.NewLine, - Utils.BytesToHexString((byte[])messageField.GetValue(message), - string.Format("{0,30}", ""))); - } - - // an array of class objects - else if (messageField.FieldType.IsArray) - { - var messageObjectData = messageField.GetValue(message); - result.AppendFormat("-- {0} --" + System.Environment.NewLine, messageField.FieldType.Name); - foreach (object nestedArrayObject in messageObjectData as Array) - { - result.AppendFormat("{0,30}" + System.Environment.NewLine, "-- " + nestedArrayObject.GetType().Name + " --"); - - foreach (FieldInfo nestedField in nestedArrayObject.GetType().GetFields()) - { - if (nestedField.FieldType.IsEnum) - { - result.AppendFormat("{0,30}: {1,-10} {2,-29} [{3}]" + System.Environment.NewLine, - nestedField.Name, - Enum.Format(nestedField.GetValue(nestedArrayObject).GetType(), - nestedField.GetValue(nestedArrayObject), "D"), - "(" + nestedField.GetValue(nestedArrayObject) + ")", - nestedField.GetValue(nestedArrayObject).GetType().Name); - } - else if (nestedField.FieldType.IsInterface) - { - result.AppendLine(IMessageToString(nestedField.GetValue(nestedArrayObject), recurseLevel)); - } - else - { - result.AppendFormat("{0, 30}: {1,-40} [{2}]" + Environment.NewLine, - nestedField.Name, - nestedField.GetValue(nestedArrayObject), - nestedField.GetValue(nestedArrayObject).GetType().Name); - } - } - } - } - else - { - if (messageField.FieldType.IsEnum) - { - result.AppendFormat("{0,30}: {1,-2} {2,-37} [{3}]" + Environment.NewLine, - messageField.Name, - Enum.Format(messageField.GetValue(message).GetType(), - messageField.GetValue(message), "D"), - "(" + messageField.GetValue(message) + ")", - messageField.FieldType.Name); - } - else if (messageField.FieldType.IsInterface) - { - result.AppendLine(IMessageToString(messageField.GetValue(message), recurseLevel)); - } - else - { - result.AppendFormat("{0, 30}: {1,-40} [{2}]" + System.Environment.NewLine, - messageField.Name, messageField.GetValue(message), messageField.FieldType.Name); - } - } - } - - return result.ToString(); - } - private void SaveAllSettings(string fileName) { Store.MessageSessions.Clear(); @@ -1080,25 +888,27 @@ namespace WinGridProxy foreach (ListViewItem item in listViewPacketFilters.Items) { - FilterEntry entry = new FilterEntry(); + FilterEntryOptions entry = new FilterEntryOptions(); entry.Checked = item.Checked; - entry.pType = item.SubItems[1].Text; + entry.Type = item.SubItems[1].Text; + entry.Group = item.Group.Name; - if(!Store.PacketSessions.ContainsKey(item.Text)) + if (!Store.PacketSessions.ContainsKey(item.Text)) Store.PacketSessions.Add(item.Text, entry); } foreach (ListViewItem item in listViewMessageFilters.Items) { - FilterEntry entry = new FilterEntry(); + FilterEntryOptions entry = new FilterEntryOptions(); entry.Checked = item.Checked; - entry.pType = item.SubItems[1].Text; - if(!Store.MessageSessions.ContainsKey(item.Text)) + entry.Type = item.SubItems[1].Text; + entry.Group = item.Group.Name; + + if (!Store.MessageSessions.ContainsKey(item.Text)) Store.MessageSessions.Add(item.Text, entry); } Store.StatisticsEnabled = enableStatisticsToolStripMenuItem.Checked; - Store.AutoScrollEnabled = autoScrollSessionsToolStripMenuItem.Checked; Store.SaveSessionOnExit = saveOptionsOnExitToolStripMenuItem.Checked; Store.AutoCheckNewCaps = autoAddNewDiscoveredMessagesToolStripMenuItem.Checked; @@ -1110,29 +920,32 @@ namespace WinGridProxy // load saved settings from OSD Formatted file if (Store.DeserializeFromFile(fileName)) - { - autoScrollSessionsToolStripMenuItem.Checked = Store.AutoScrollEnabled; + { enableStatisticsToolStripMenuItem.Checked = Store.StatisticsEnabled; saveOptionsOnExitToolStripMenuItem.Checked = Store.SaveSessionOnExit; autoAddNewDiscoveredMessagesToolStripMenuItem.Checked = Store.AutoCheckNewCaps; // Update message filter listview listViewMessageFilters.BeginUpdate(); - foreach (KeyValuePair kvp in Store.MessageSessions) + foreach (KeyValuePair kvp in Store.MessageSessions) { ListViewItem foundMessage = FindListViewItem(listViewPacketFilters, kvp.Key, false); if (foundMessage == null) { - ListViewItem addedItem = listViewMessageFilters.Items.Add(kvp.Key); + ListViewItem addedItem = listViewMessageFilters.Items.Add( + new ListViewItem(kvp.Key, listViewMessageFilters.Groups[kvp.Value.Group])); + addedItem.Name = kvp.Key; addedItem.Checked = kvp.Value.Checked; - addedItem.SubItems.Add(kvp.Value.pType); - addedItem.BackColor = (kvp.Value.pType.Equals("CapMessage")) ? Color.Honeydew : Color.AliceBlue; + addedItem.SubItems.Add(kvp.Value.Type); + //addedItem.Group = listViewMessageFilters.Groups[kvp.Value.Group]; + + addedItem.BackColor = (kvp.Value.Type.Equals(PROTO_CAPABILITIES)) ? Color_Cap : Color_Event; } else { foundMessage.Checked = kvp.Value.Checked; } - if (kvp.Value.pType.Equals("CapMessage")) + if (kvp.Value.Type.Equals(PROTO_CAPABILITIES)) { proxy.AddCapsDelegate(kvp.Key, kvp.Value.Checked); } @@ -1141,73 +954,80 @@ namespace WinGridProxy // updateTreeView packet filter listview listViewPacketFilters.BeginUpdate(); - foreach (KeyValuePair kvp in Store.PacketSessions) + foreach (KeyValuePair kvp in Store.PacketSessions) { ListViewItem foundPacket = FindListViewItem(listViewPacketFilters, kvp.Key, false); if (foundPacket == null) { - ListViewItem addedItem = listViewPacketFilters.Items.Add(new ListViewItem(kvp.Key)); - addedItem.Checked = kvp.Value.Checked; - addedItem.SubItems.Add(kvp.Value.pType); + ListViewItem addedItem = listViewPacketFilters.Items.Add( + new ListViewItem(kvp.Key, listViewPacketFilters.Groups[kvp.Value.Group])); + + addedItem.Name = kvp.Key; + addedItem.Checked = kvp.Value.Checked; + addedItem.SubItems.Add(kvp.Value.Type); + + addedItem.BackColor = (kvp.Value.Type.Equals(PROTO_AUTHENTICATE)) ? Color_Login : Color_Packet; } else { foundPacket.Checked = kvp.Value.Checked; } - if (kvp.Value.pType.Equals("UDP")) + if (kvp.Value.Type.Equals(PROTO_PACKETSTRING)) { - proxy.AddUDPDelegate(packetTypeFromName(kvp.Key), kvp.Value.Checked); + proxy.AddUDPDelegate(PacketTypeFromName(kvp.Key), kvp.Value.Checked); } } listViewPacketFilters.EndUpdate(); } } + private void InitProxyFilters() { RestoreSavedSettings("settings.osd"); - Type packetTypeType = typeof(PacketType); - System.Reflection.MemberInfo[] packetTypes = packetTypeType.GetMembers(); - listViewPacketFilters.BeginUpdate(); - for (int i = 0; i < packetTypes.Length; i++) + foreach (string name in Enum.GetNames(typeof(PacketType))) { - if (packetTypes[i].MemberType == System.Reflection.MemberTypes.Field - && packetTypes[i].DeclaringType == packetTypeType) + ListViewItem found = FindListViewItem(listViewPacketFilters, name, false); + if (!String.IsNullOrEmpty(name) && found == null) { - - string name = packetTypes[i].Name; - - // warning CS0219: The variable `pType' is assigned but its value is never used - // this is used to check for valid names. - PacketType pType; - - try - { - pType = packetTypeFromName(name); - - ListViewItem found = FindListViewItem(listViewPacketFilters, name, false); - if (!String.IsNullOrEmpty(name) && found == null) - { - ListViewItem addedItem = listViewPacketFilters.Items.Add(new ListViewItem(name)); - addedItem.SubItems.Add("UDP"); - } - } - catch (Exception) - { - continue; - } + ListViewItem addedItem = listViewPacketFilters.Items.Add(new ListViewItem(name, listViewPacketFilters.Groups["Packets"])); + addedItem.Name = name; + addedItem.SubItems.Add(PROTO_PACKETSTRING); } + } + + ListViewItem tmp; + if (!listViewPacketFilters.Items.ContainsKey("Login Request")) + { + tmp = listViewPacketFilters.Items.Add(new ListViewItem("Login Request", listViewPacketFilters.Groups["Login"])); + tmp.Name = "Login Request"; + tmp.BackColor = Color_Login; + tmp.SubItems.Add("Login"); + } + + if (!listViewPacketFilters.Items.ContainsKey("Login Response")) + { + tmp = listViewPacketFilters.Items.Add(new ListViewItem("Login Response", listViewPacketFilters.Groups["Login"])); + tmp.Name = "Login Response"; + tmp.BackColor = Color_Login; + tmp.SubItems.Add("Login"); + } + listViewPacketFilters.EndUpdate(); + } - private static PacketType packetTypeFromName(string name) + private static PacketType PacketTypeFromName(string name) { Type packetTypeType = typeof(PacketType); System.Reflection.FieldInfo f = packetTypeType.GetField(name); - if (f == null) throw new ArgumentException("Bad packet type"); + if (f == null) + {//throw new ArgumentException("Bad packet type"); + return PacketType.Error; + } return (PacketType)Enum.ToObject(packetTypeType, (int)f.GetValue(packetTypeType)); } @@ -1238,10 +1058,10 @@ namespace WinGridProxy if ( (opts.MatchCase && (item.SubItems[2].Text.Contains(opts.SearchText) - || TagToString(item.Tag, item.SubItems[2].Text).Contains(opts.SearchText)) + /*|| TagToString(item.Tag, item.SubItems[2].Text).Contains(opts.SearchText)*/) ) // no case matching || ((item.SubItems[2].Text.ToLower().Contains(opts.SearchText.ToLower()) - || TagToString(item.Tag, item.SubItems[2].Text).ToLower().Contains(opts.SearchText.ToLower()) + /*|| TagToString(item.Tag, item.SubItems[2].Text).ToLower().Contains(opts.SearchText.ToLower())*/ )) ) { @@ -1257,71 +1077,72 @@ namespace WinGridProxy } } - toolStripMainLabel.Text = String.Format("Search found {0} Matches", resultCount); + //toolStripMainLabel.Text = String.Format("Search found {0} Matches", resultCount); } } - private string TagToString(object tag, string key) - { - if (tag is XmlRpcRequest) - { - XmlRpcRequest requestData = (XmlRpcRequest)tag; - return requestData.ToString(); - } - else if (tag is XmlRpcResponse) - { - XmlRpcResponse responseData = (XmlRpcResponse)tag; + //private string TagToString(object tag, string key) + //{ + // if (tag is XmlRpcRequest) + // { + // XmlRpcRequest requestData = (XmlRpcRequest)tag; + // return requestData.ToString(); + // } + // else if (tag is XmlRpcResponse) + // { + // XmlRpcResponse responseData = (XmlRpcResponse)tag; - return responseData.ToString(); - } - else if (tag is Packet) - { - Packet packet = (Packet)tag; - return DecodePacket.PacketToString(packet); - } - else if (tag is CapsRequest) - { - CapsRequest capsData = (CapsRequest)tag; + // return responseData.ToString(); + // } + // else if (tag is Packet) + // { + // Packet packet = (Packet)tag; + // return PacketDecoder.PacketToString(packet); + // //return DecodePacket.PacketToString(packet); + // } + // else if (tag is CapsRequest) + // { + // CapsRequest capsData = (CapsRequest)tag; - if (capsData.Request != null) - { - return capsData.Request.ToString(); - } + // if (capsData.Request != null) + // { + // return capsData.Request.ToString(); + // } - if (capsData.Response != null) - { - return capsData.Response.ToString(); - } - return "Unable to decode CapsRequest"; - } - else if (tag is OSD) - { - OSD osd = (OSD)tag; - if (osd.Type == OSDType.Map) - { - OSDMap data = (OSDMap)osd; - IMessage message; - if (data.ContainsKey("body")) - message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(key, (OSDMap)data["body"]); - else - message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(key, data); + // if (capsData.Response != null) + // { + // return capsData.Response.ToString(); + // } + // return "Unable to decode CapsRequest"; + // } + // else if (tag is OSD) + // { + // OSD osd = (OSD)tag; + // if (osd.Type == OSDType.Map) + // { + // OSDMap data = (OSDMap)osd; + // IMessage message; + // if (data.ContainsKey("body")) + // message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(key, (OSDMap)data["body"]); + // else + // message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(key, data); - if (message != null) - return IMessageToString(message, 0); - else - return "No Decoder for " + key + System.Environment.NewLine - + osd.ToString(); - } - else - { - return osd.ToString(); - } - } - else - { - return "Could not decode object type: " + tag.GetType().ToString(); - } - } + // if (message != null) + // return IMessageToString(message, 0); + // else + // return "No Decoder for " + key + System.Environment.NewLine + // + osd.ToString(); + // } + // else + // { + // return osd.ToString(); + // } + // } + // else + // { + // return "Could not decode object type: " + tag.GetType().ToString(); + // } + //} #endregion @@ -1508,7 +1329,9 @@ namespace WinGridProxy private void toolStripMenuItem1_Click(object sender, EventArgs e) { - FormPluginManager pluginManager = new FormPluginManager(proxy.Proxy); + if (pluginManager == null) + pluginManager = new FormPluginManager(proxy.Proxy); + pluginManager.ShowDialog(); } @@ -1535,6 +1358,11 @@ namespace WinGridProxy private void richTextBoxDecodedRequest_TextChanged(object sender, EventArgs e) { RichTextBox m_rtb = (RichTextBox)sender; + + // don't colorize xml! + if (m_rtb.Lines.Length <= 0 || m_rtb.Lines[0].StartsWith("\w+|\w+\[\])\]|\((?.*)\)|\s-- (?
\w+|\w+ \[\]) --\s|(?\s\*\*\*\s)|(?\s<\w+>\s|\s<\/\w+>\s)|(?\s\w+\[\d+\]\s)", RegexOptions.ExplicitCapture); MatchCollection matches = typesRegex.Matches(m_rtb.Text); @@ -1545,7 +1373,7 @@ namespace WinGridProxy m_rtb.SelectionFont = new Font(m_rtb.Font.FontFamily, m_rtb.Font.Size, FontStyle.Bold); if (!String.IsNullOrEmpty(match.Groups["Type"].Value)) - m_rtb.SelectionColor = Color.Blue; + m_rtb.SelectionColor = Color.FromArgb(43, 145, 175); else if (!String.IsNullOrEmpty(match.Groups["Enum"].Value)) m_rtb.SelectionColor = Color.FromArgb(43, 145, 175); else if (!String.IsNullOrEmpty(match.Groups["Header"].Value)) @@ -1580,10 +1408,6 @@ namespace WinGridProxy { listViewSessions.BeginUpdate(); listViewSessions.Items.AddRange(QueuedSessions.ToArray()); - - if (AutoScrollSessions) - listViewSessions.EnsureVisible(listViewSessions.Items.Count - 1); - listViewSessions.EndUpdate(); QueuedSessions.Clear(); } @@ -1598,9 +1422,7 @@ namespace WinGridProxy } else { - listViewSessions.Items.Add(item); - if (AutoScrollSessions) - listViewSessions.EnsureVisible(listViewSessions.Items.Count - 1); + listViewSessions.Items.Add(item); } } @@ -1628,7 +1450,8 @@ namespace WinGridProxy { if (item.Tag is Packet) { - outString.AppendLine(DecodePacket.PacketToString((Packet)item.Tag)); + //outString.AppendLine(DecodePacket.PacketToString((Packet)item.Tag)); + outString.AppendLine(PacketDecoder.PacketToString((Packet)item.Tag)); } if (item.Tag is IMessage) @@ -1648,5 +1471,152 @@ namespace WinGridProxy } } } + + private void richTextBoxDecodedRequest_LinkClicked(object sender, LinkClickedEventArgs e) + { + System.Diagnostics.Process.Start(e.LinkText); + } + + private void saveSettingsToolStripMenuItem_Click(object sender, EventArgs e) + { + SaveAllSettings("settings.osd"); + } + // Column sorter + private void listViewSessions_ColumnClick(object sender, ColumnClickEventArgs e) + { + ListView listView1 = (ListView)sender; + + ListViewSorter Sorter = new ListViewSorter(); + listView1.ListViewItemSorter = Sorter; + if (!(listView1.ListViewItemSorter is ListViewSorter)) + return; + + Sorter = (ListViewSorter)listView1.ListViewItemSorter; + + if (Sorter.LastSort == e.Column) + { + if (listView1.Sorting == SortOrder.Ascending) + listView1.Sorting = SortOrder.Descending; + else + listView1.Sorting = SortOrder.Ascending; + } + else + { + listView1.Sorting = SortOrder.Descending; + } + Sorter.ByColumn = e.Column; + + listView1.Sort(); + + listView1.Columns[e.Column].Width = -2;// = listView1.Columns[e.Column].Text + " " + '\u23BC'; + } + + private void buttonSaveRequestHex_Click(object sender, EventArgs e) + { + if (hexBoxRequest.ByteProvider != null && hexBoxRequest.ByteProvider.Length > 0) + { + saveFileDialog3.FileName = listViewSessions.SelectedItems[0].Name; + if (saveFileDialog3.ShowDialog() == DialogResult.OK) + { + byte[] bytes = new byte[hexBoxRequest.ByteProvider.Length]; + for (int i = 0; i < hexBoxRequest.ByteProvider.Length; i++) + { + bytes[i] = hexBoxRequest.ByteProvider.ReadByte(i); + } + File.WriteAllBytes(saveFileDialog3.FileName, bytes); + } + } + else + { + // no bytes to read! + } + } + + private void buttonExportRawHex_Click(object sender, EventArgs e) + { + if (hexBoxResponse.ByteProvider != null && hexBoxResponse.ByteProvider.Length > 0) + { + saveFileDialog3.FileName = listViewSessions.SelectedItems[0].Name; + if (saveFileDialog3.ShowDialog() == DialogResult.OK) + { + byte[] bytes = new byte[hexBoxResponse.ByteProvider.Length]; + for (int i = 0; i < hexBoxResponse.ByteProvider.Length; i++) + { + bytes[i] = hexBoxResponse.ByteProvider.ReadByte(i); + } + File.WriteAllBytes(saveFileDialog3.FileName, bytes); + } + } + else + { + // no bytes to read! + } + } } + + public class ListViewSorter : System.Collections.IComparer + { + public int Compare(object o1, object o2) + { + if (!(o1 is ListViewItem)) + return 0; + if (!(o2 is ListViewItem)) + return 0; + + int result; + + ListViewItem lvi1 = (ListViewItem)o2; + ListViewItem lvi2 = (ListViewItem)o1; + + if (lvi1.ListView.Columns[ByColumn].Tag == null + || lvi1.ListView.Columns[ByColumn].Tag == null) + { + return 0; + } + + if (lvi1.ListView.Columns[ByColumn].Tag.ToString().ToLower().Equals("number")) + { + float fl1 = float.Parse(lvi1.SubItems[ByColumn].Text); + float fl2 = float.Parse(lvi2.SubItems[ByColumn].Text); + + if (lvi1.ListView.Sorting == SortOrder.Ascending) + result = fl1.CompareTo(fl2); + else + result = fl2.CompareTo(fl1); + } + else if (lvi1.ListView.Columns[ByColumn].Tag.ToString().ToLower().Equals("string")) + { + string str1 = lvi1.SubItems[ByColumn].Text; + string str2 = lvi2.SubItems[ByColumn].Text; + + if (lvi1.ListView.Sorting == SortOrder.Ascending) + result = String.Compare(str1, str2); + else + result = String.Compare(str2, str1); + } + else + { + return 0; + } + + LastSort = ByColumn; + + return (result); + } + + + public int ByColumn + { + get { return Column; } + set { Column = value; } + } + int Column = 0; + + public int LastSort + { + get { return LastColumn; } + set { LastColumn = value; } + } + int LastColumn = 0; + } } diff --git a/Programs/WinGridProxy/FormWinGridProxy.resx b/Programs/WinGridProxy/FormWinGridProxy.resx index f6029e13..8a87a876 100644 --- a/Programs/WinGridProxy/FormWinGridProxy.resx +++ b/Programs/WinGridProxy/FormWinGridProxy.resx @@ -118,7 +118,16 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 524, 17 + 555, 17 + + + 17, 56 + + + 1104, 17 + + + 750, 17 309, 17 @@ -172,31 +181,61 @@ BQAD/wUACw== - - 185, 54 - - - 17, 54 - - - 705, 17 - - - 414, 17 - - - 116, 17 - - - 414, 17 - - - 116, 17 - - - 17, 17 + + 339, 56 + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAlpJREFUOE+tk21I + k1EYhif0oyA0sqIQCix/+GcQFFH9CCmiUBTLLEjShJofVBgL2fxoU9Pp5ubUlS5rU9f8rCyjsA+pUCRC + TR1ppmVFUSlmhq78unrnQF1KGHTg/nEOz30993PO+7qJFrmUeiv2n+Mij+XLRLLYULdF2pxlEVIDcw0p + AsyxD5fmI/rQ94pqi26eOlsfuZj+7BgSm01QdA4ih7m73Yx9qGpavwatjPebqCzOprPt8YKQgzFagqL0 + BEjyEFWVaBkdLHMxT34uYNwWR9nVTEoL0zHlp2DMSeaSRk6eKt4VWm5WM/rVPNN5SjDTLQebZEHNA1wr + UvHjk3E6tsNcV62e1r3KLGqtKm6WplNpSsVqVFJsOM8VfSKFWjkGtcyZptSYzvC7XByx3zQoqCnTMvlG + CX1prnornPUmQJcUXsbSVhGK5bIOkcmQyveeTHiv4VZ5Nk33Nc6iuSO8CIfmECYa/bE/8ON1iRipJNh5 + F0V6Bd86lfQ1JlFj1TDVq4COKCegLVIwHmGiKRB7/V6G7+5koHozymgfYRy5E1CgTWKgXcZ1i5qWp0KS + rjgBcAJawph6FszYk/2M1O1isGYLX8p9ab6wgqP+3rMvYciS01GfzA1LFvQkQ6sQ9/khxhoCGHnox1Dt + NvorxXw0b8Km8UQh2cip6GOzgNyMeKqKM7HdjqFZJ5pRk2YJ9aql3EnxoCJxNaZ4Ly6e3UDY3O6OEXRp + 59ApTpIhiyDh9GHORAZyPHQPB/ZtZ/cOMVvFPvh6e7F+3SrWrHRnraf7Xz/xf/rJ/kvxb84I3U1y+9/W + AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAixJREFUOE+tk91L + k3EUx/cvdN9N0EW3NTWGa7EaPOUcyqphWBG9PZEv5dJlmqhYmUYtXyBb4dJJy+kknFT4BqZIjaFMJUsz + V7TEoabYRDD49ju/6Pm1Mi+iH5zLz+c855zvo1L9j/fsaRRUvvZltHmX8Ni9gMaGCO47ZlBb8wn22yHc + KJ9CackECgteIy93FBfOB6H0JrC3B6ipXsVGb2V1Dca0XhxOe8JLEXhbF7mgsuLLX3mCIwsr2G1+DrVa + huWQRwjcj+a5oLTk87qCn/D78CLiTD4UXJ7GAXOTEDjrZ7ngku3dH4Jf4ZHJCLZJXlhzxpGa4hSCurth + LsjOGo0R/A4PBsPYrHdDlgMwmRxCUF31kQvkMwFFsB7c4/+ATYkNOHL0BZKSaoXgZuU0urvATgkcP/kK + lmMDfNu0MJqZPps6/4D7cNDSCUmyC8HVskl0+MAyADS5vrG7f0X59Tm+VFoYzZyZEVTg5NR2GAwVQnCl + cByeZuChc40FJwpjek5MmU/YkH6uiHdOTmHwfg/0+jIhsOWNMRiouhPlnUnAQoI4rYSht7MYm5qDnHsN + e41tHNbucUGnKxICiqXjHpTPJgHBZ/Nv4U1oHqGZJVwstiNe72JwI+J3PYA2MV8IMjOG2dzLfOatBg+2 + 7JDQ0tEPX9cguvv8GHg5hH0mC9S6eiQweLumDhqNVQgo06dP9fN4UsIoJHRnOhVtmxZGM1NXKoJ3JmTH + Cv71r/4OTrQ4xWMwWlcAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL + U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI + VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ + QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4 + /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9 + cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j + 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR + dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb + NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE + s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC + + + + 17, 0 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -212,6 +251,9 @@ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC + + 927, 17 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -229,24 +271,6 @@ AAAAAElFTkSuQmCC - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL - U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI - VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ - QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4 - /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9 - cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j - 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR - dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb - NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE - s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC - - - - 919, 17 - 226, 17 @@ -296,24 +320,27 @@ - 364, 54 + 470, 56 - 492, 54 + 606, 56 - 622, 54 + 746, 56 - 750, 54 - - - 880, 54 + 882, 56 - 17, 91 + 17, 95 - 990, 54 + 1022, 56 + + + 210, 56 + + + 419, 17 \ No newline at end of file diff --git a/Programs/WinGridProxy/SessionTypes.cs b/Programs/WinGridProxy/SessionTypes.cs new file mode 100644 index 00000000..6c919179 --- /dev/null +++ b/Programs/WinGridProxy/SessionTypes.cs @@ -0,0 +1,711 @@ +/* + * Copyright (c) 2009, openmetaverse.org + * All rights reserved. + * + * - Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * - Neither the name of the openmetaverse.org nor the names + * of its contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Net; +using System.Text; +using System.Reflection; +using OpenMetaverse; +using OpenMetaverse.Packets; +using OpenMetaverse.Messages; +using OpenMetaverse.StructuredData; +using OpenMetaverse.Interfaces; +using GridProxy; + +namespace WinGridProxy +{ + #region Base Class + internal abstract class Session + { + private const string EmptyXml = "XML representation of this item is not available."; + private const string EmptyString = "String representation of this item is not available."; + private const string EmptyNotation = "Notation representation of this item is not available."; + + public Direction Direction { get; set; } + public String Host { get; set; } + public String Protocol { get; set; } + public String Name { get; set; } + public String ContentType { get; set; } + + public int Length { get; set; } + + public Session() + { + this.Host = this.Protocol = this.Name = String.Empty; + this.Length = 0; + this.ContentType = String.Empty; + } + + public virtual string ToRawString(Direction direction) + { + return EmptyString; + } + + public virtual byte[] ToBytes(Direction direction) + { + return OpenMetaverse.Utils.EmptyBytes; + } + + public virtual string ToXml(Direction direction) + { + return EmptyXml; + } + + public virtual string ToStringNotation(Direction direction) + { + return EmptyNotation; + } + + public abstract string ToPrettyString(Direction direction); + public abstract byte[] Serialize(); + public abstract Session Deserialize(byte[] bytes); + } + #endregion + + #region Packets + internal sealed class SessionPacket : Session + { + public Packet Packet { get; set; } + + public SessionPacket() : base() { this.Protocol = "UDP"; } + public SessionPacket(Packet packet, Direction direction, IPEndPoint endpoint, String contentType) + : base() + { + this.Packet = packet; + this.Name = packet.Type.ToString(); + this.Direction = direction; + this.Host = String.Format("{0}:{1}", endpoint.Address, endpoint.Port); + this.ContentType = contentType; + this.Length = packet.Length; + this.Protocol = "UDP"; + } + + public override string ToPrettyString(Direction direction) + { + if (direction == this.Direction) + return PacketDecoder.PacketToString(this.Packet); + else + return String.Empty; + } + + public override string ToRawString(Direction direction) + { + if (direction == this.Direction) + return PacketDecoder.PacketToString(this.Packet); + else + return String.Empty; + } + + public override byte[] ToBytes(Direction direction) + { + if (direction == this.Direction) + return Packet.ToBytes(); + else + return base.ToBytes(direction); + } + + //public override string ToXml(Direction direction) + //{ + // if (direction == this.Direction) + // return Packet.ToXmlString(this.Packet); + // else + // return base.ToXml(direction); + //} + + //public override string ToStringNotation(Direction direction) + //{ + // if (direction == this.Direction) + // return Packet.GetLLSD(this.Packet).ToString(); + // else + // return base.ToStringNotation(direction); + //} + + public override byte[] Serialize() + { + OSDMap map = new OSDMap(5); + map["Name"] = OSD.FromString(this.Name); + map["Host"] = OSD.FromString(this.Host); + map["PacketBytes"] = OSD.FromBinary(this.Packet.ToBytes()); + map["Direction"] = OSD.FromInteger((int)this.Direction); + map["ContentType"] = OSD.FromString(this.ContentType); + + return OpenMetaverse.Utils.StringToBytes(map.ToString()); + } + + public override Session Deserialize(byte[] bytes) + { + OSDMap map = (OSDMap)OSDParser.DeserializeLLSDNotation(OpenMetaverse.Utils.BytesToString(bytes)); + + this.Host = map["Host"].AsString(); + this.Direction = (Direction)map["Direction"].AsInteger(); + this.ContentType = map["ContentType"].AsString(); + + byte[] packetData = map["PacketBytes"].AsBinary(); + this.Length = packetData.Length; + + int packetEnd = packetData.Length - 1; + this.Packet = Packet.BuildPacket(packetData, ref packetEnd, null); + this.Name = this.Packet.Type.ToString(); + return this; + } + } + #endregion Packets + + #region Capabilities + internal sealed class SessionCaps : Session + { + byte[] RequestBytes { get; set; } + byte[] ResponseBytes { get; set; } + WebHeaderCollection RequestHeaders { get; set; } + WebHeaderCollection ResponseHeaders { get; set; } + + public SessionCaps() : base() { /*this.Protocol = "Caps";*/ } + public SessionCaps(byte[] requestBytes, byte[] responseBytes, + WebHeaderCollection requestHeaders, WebHeaderCollection responseHeaders, + Direction direction, string uri, string capsKey, String proto) + : base() + { + this.RequestBytes = requestBytes; + this.ResponseBytes = responseBytes; + this.RequestHeaders = requestHeaders; + this.ResponseHeaders = responseHeaders; + this.Protocol = proto; + + this.Name = capsKey; + this.Direction = direction; + this.Host = uri; + this.ContentType = (direction == Direction.Incoming) ? this.ResponseHeaders.Get("Content-Type") : this.RequestHeaders.Get("Content-Type"); + this.Length = (requestBytes != null) ? requestBytes.Length : 0; + this.Length += (responseBytes != null) ? responseBytes.Length : 0; + } + + public override string ToPrettyString(Direction direction) + { + if (direction == Direction.Incoming) + { + if (this.ResponseBytes != null && this.ResponseBytes.Length > 0) + { + IMessage message = null; + OSD osd = OSDParser.Deserialize(this.ResponseBytes); + + OSDMap data = (OSDMap)osd; + + if (data.ContainsKey("body")) + message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(this.Name, (OSDMap)data["body"]); + else + message = OpenMetaverse.Messages.MessageUtils.DecodeEvent(this.Name, data); + + if (message != null) + return PacketDecoder.MessageToString(message, 0); + else + return "No Decoder for " + this.Name + Environment.NewLine + data.ToString() + Environment.NewLine + + "Please report this at http://jira.openmv.org Be sure to include the entire message."; + } + } + else + { + if (this.RequestBytes != null && this.RequestBytes.Length > 0) + { + if (this.RequestBytes[0] == 60) + { + OSD osd = OSDParser.Deserialize(this.RequestBytes); + if (osd is OSDMap) + { + IMessage message = null; + OSDMap data = (OSDMap)osd; + + if (data.ContainsKey("body")) + message = MessageUtils.DecodeEvent(this.Name, (OSDMap)data["body"]); + else + message = MessageUtils.DecodeEvent(this.Name, data); + + if (message != null) + return PacketDecoder.MessageToString(message, 0); + else + return "No Decoder for " + this.Name + Environment.NewLine + data.ToString() + Environment.NewLine + + "Please report this at http://jira.openmv.org Be sure to include the entire message."; + } + else + { + return osd.ToString(); + } + } + else + { + // this means its probably a script or asset using the uploader capability + // so we'll just return the raw bytes as a string + //if (this.RequestBytes[0] == 100) + //{ + return Utils.BytesToString(this.RequestBytes); + //} + } + } + else + { + return String.Empty; + } + } + return String.Empty; + } + + public override string ToRawString(Direction direction) + { + if (direction == Direction.Incoming) + { + if (this.ResponseBytes != null) + { + StringBuilder result = new StringBuilder(); + foreach (String key in ResponseHeaders.Keys) + { + result.AppendFormat("{0} {1}" + Environment.NewLine, key, ResponseHeaders[key]); + } + result.AppendLine(); + result.AppendLine(OpenMetaverse.Utils.BytesToString(this.ResponseBytes)); + return result.ToString(); + } + else + return String.Empty; + } + else + { + if (this.RequestBytes != null) + { + StringBuilder result = new StringBuilder(); + foreach (String key in RequestHeaders.Keys) + { + result.AppendFormat("{0} {1}" + Environment.NewLine, key, RequestHeaders[key]); + } + result.AppendLine(); + result.AppendLine(OpenMetaverse.Utils.BytesToString(this.RequestBytes)); + return result.ToString(); + } + else + return String.Empty; + } + } + + public override byte[] ToBytes(Direction direction) + { + if (direction == Direction.Incoming) + { + if (this.ResponseBytes != null) + return this.ResponseBytes; + else + return base.ToBytes(direction); + } + else + { + if (this.RequestBytes != null) + return this.RequestBytes; + else + return base.ToBytes(direction); + } + } + + public override string ToStringNotation(Direction direction) + { + if (direction == Direction.Incoming) + { + if (this.ResponseBytes != null) + return BytesToOsd(this.ResponseBytes); + //return this.ResponseBytes; + else + return base.ToStringNotation(direction); + } + else + { + if (this.RequestBytes != null) + { + return BytesToOsd(this.RequestBytes); + } + else + return base.ToStringNotation(direction); + } + } + + public override string ToXml(Direction direction) + { + if (direction == Direction.Incoming) + { + if (this.ResponseBytes != null) + return BytesToXml(this.ResponseBytes); + else + return base.ToXml(direction); + } + else + { + if (this.RequestBytes != null) + return BytesToXml(this.RequestBytes); + else + return base.ToXml(direction); + } + } + + // Sanity check the bytes are infact OSD + private string BytesToOsd(byte[] bytes) + { + try + { + OSD osd = OSDParser.Deserialize(bytes); + return osd.ToString(); + } + catch (LitJson.JsonException) + { + // unable to decode as notation format + return base.ToStringNotation(this.Direction); + } + } + + // Sanity check the bytes are infact an XML + private string BytesToXml(byte[] bytes) + { + String result = Utils.BytesToString(bytes); + if (result.StartsWith(" MessageSessions; - public Dictionary PacketSessions; - public bool AutoScrollEnabled; + private const int FileVersion = 1; + + public Dictionary MessageSessions; + public Dictionary PacketSessions; public bool StatisticsEnabled; public bool SaveSessionOnExit; public bool AutoCheckNewCaps; public SettingsStore() { - MessageSessions = new Dictionary(); - PacketSessions = new Dictionary(); + MessageSessions = new Dictionary(); + PacketSessions = new Dictionary(); } public OSDMap Serialize() @@ -59,12 +61,13 @@ namespace WinGridProxy if (MessageSessions.Count > 0) { OSDArray messageArray = new OSDArray(MessageSessions.Count); - foreach (KeyValuePair kvp in MessageSessions) + foreach (KeyValuePair kvp in MessageSessions) { - OSDMap sessionMap = new OSDMap(3); - sessionMap["Capability"] = OSD.FromString(kvp.Key); + OSDMap sessionMap = new OSDMap(4); + sessionMap["Name"] = OSD.FromString(kvp.Key); + sessionMap["Type"] = OSD.FromString(kvp.Value.Type); sessionMap["Capture"] = OSD.FromBoolean(kvp.Value.Checked); - sessionMap["Type"] = OSD.FromString(kvp.Value.pType); + sessionMap["Group"] = OSD.FromString(kvp.Value.Group); messageArray.Add(sessionMap); } map.Add("message_sessions", messageArray); @@ -73,76 +76,78 @@ namespace WinGridProxy if (PacketSessions.Count > 0) { OSDArray packetArray = new OSDArray(PacketSessions.Count); - foreach (KeyValuePair kvp in PacketSessions) + foreach (KeyValuePair kvp in PacketSessions) { - OSDMap sessionMap = new OSDMap(3); - sessionMap["PacketName"] = OSD.FromString(kvp.Key); + OSDMap sessionMap = new OSDMap(4); + sessionMap["Name"] = OSD.FromString(kvp.Key); + sessionMap["Type"] = OSD.FromString(kvp.Value.Type); sessionMap["Capture"] = OSD.FromBoolean(kvp.Value.Checked); - sessionMap["Type"] = OSD.FromString(kvp.Value.pType); + sessionMap["Group"] = OSD.FromString(kvp.Value.Group); packetArray.Add(sessionMap); } map.Add("packet_sessions", packetArray); } - map.Add("AutoScrollSessions", OSD.FromBoolean(AutoScrollEnabled)); map.Add("CaptureStatistics", OSD.FromBoolean(StatisticsEnabled)); map.Add("SaveProfileOnExit", OSD.FromBoolean(SaveSessionOnExit)); map.Add("AutoCheckNewCaps", OSD.FromBoolean(AutoCheckNewCaps)); - + map.Add("FileVersion", OSD.FromInteger(FileVersion)); return map; } public void Deserialize(OSDMap map) { + MessageSessions.Clear(); + PacketSessions.Clear(); - if (map.ContainsKey("message_sessions")) + if (map.ContainsKey("FileVersion") && map["FileVersion"].AsInteger() == FileVersion) { - - AutoScrollEnabled = map["AutoScrollSessions"].AsBoolean(); StatisticsEnabled = map["CaptureStatistics"].AsBoolean(); SaveSessionOnExit = map["SaveProfileOnExit"].AsBoolean(); AutoCheckNewCaps = map["AutoCheckNewCaps"].AsBoolean(); - - OSDArray messageArray = (OSDArray)map["message_sessions"]; - - MessageSessions = new Dictionary(messageArray.Count); - - for (int i = 0; i < messageArray.Count; i++) - { - OSDMap m = (OSDMap)messageArray[i]; - FilterEntry entry = new FilterEntry(); - entry.Checked = m["Capture"].AsBoolean(); - entry.pType = m["Type"].AsString(); - MessageSessions.Add(m["Capability"].AsString(), entry); - - } } else { - //MessageSessions = new Dictionary(); + Console.WriteLine("Error loading saved settings, FileVersion is null or out of date."); + StatisticsEnabled = true; + AutoCheckNewCaps = true; + SaveSessionOnExit = true; + return; } + if (map.ContainsKey("message_sessions")) + { + OSDArray messageArray = (OSDArray)map["message_sessions"]; + + //MessageSessions = new Dictionary(messageArray.Count); + + for (int i = 0; i < messageArray.Count; i++) + { + OSDMap sessionsMap = (OSDMap)messageArray[i]; + FilterEntryOptions entry = new FilterEntryOptions(); + entry.Checked = sessionsMap["Capture"].AsBoolean(); + entry.Group = sessionsMap["Group"].AsString(); + entry.Type = sessionsMap["Type"].AsString(); + MessageSessions.Add(sessionsMap["Name"].AsString(), entry); + } + } if (map.ContainsKey("packet_sessions")) { OSDArray packetArray = (OSDArray)map["packet_sessions"]; - PacketSessions = new Dictionary(packetArray.Count); + //PacketSessions = new Dictionary(packetArray.Count); for (int i = 0; i < packetArray.Count; i++) { OSDMap packetMap = (OSDMap)packetArray[i]; - FilterEntry entry = new FilterEntry(); + FilterEntryOptions entry = new FilterEntryOptions(); entry.Checked = packetMap["Capture"].AsBoolean(); - entry.pType = packetMap["Type"].AsString(); - PacketSessions.Add(packetMap["PacketName"].AsString(), entry); + entry.Group = packetMap["Group"].AsString(); + entry.Type = packetMap["Type"].AsString(); + PacketSessions.Add(packetMap["Name"].AsString(), entry); } } - else - { - //PacketSessions = new Dictionary(); - } - } public bool DeserializeFromFile(string fileName) @@ -167,6 +172,5 @@ namespace WinGridProxy { File.WriteAllText(fileName, this.Serialize().ToString()); } - } }