public NetGraphDocumentControl(IDocumentObject document) { _document = (NetGraphDocument)document; _templates = new Dictionary <string, GraphNodeTemplate>(); AddNodeTemplate(ServerEndpointConfig.NodeName, "SERVER{0}", GraphNodeShape.Ellipse, 100.0f, 100.0f, Color.Purple, Color.Black, Color.Red, Color.White, Color.WhiteSmoke, typeof(ServerEndpointConfig)); AddNodeTemplate(ClientEndpointConfig.NodeName, "CLIENT{0}", GraphNodeShape.Ellipse, 100.0f, 100.0f, Color.LightGoldenrodYellow, Color.Black, Color.Red, Color.Black, Color.Black, typeof(ClientEndpointConfig)); AddNodeTemplate(EditPacketNodeConfig.NodeName, "EDIT{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.Sienna, Color.Black, Color.Red, Color.Black, Color.Black, typeof(EditPacketNodeConfig)); AddNodeTemplate(LogPacketConfig.NodeName, "LOG{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.Silver, Color.Black, Color.Red, Color.Black, Color.Black, typeof(LogPacketConfig)); AddNodeTemplate(DirectNodeConfig.NodeName, "NOP{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.SlateBlue, Color.Black, Color.Red, Color.Black, Color.Black, typeof(DirectNodeConfig)); AddNodeTemplate(DelayNodeConfig.NodeName, "DELAY{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.SlateBlue, Color.Black, Color.Red, Color.Black, Color.Black, typeof(DelayNodeConfig)); AddNodeTemplate(DynamicNodeConfig.NodeName, "DYN{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.AliceBlue, Color.Black, Color.Red, Color.Black, Color.Black, typeof(DynamicNodeConfig)); AddNodeTemplate(LibraryNodeConfig.NodeName, "LIB{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.Blue, Color.Black, Color.Red, Color.White, Color.WhiteSmoke, typeof(LibraryNodeConfig)); AddNodeTemplate(NetGraphContainerConfig.NodeName, "GRAPH{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.Aqua, Color.Black, Color.Red, Color.Black, Color.Black, typeof(NetGraphContainerConfig)); AddNodeTemplate(DecisionNodeConfig.NodeName, "IF{0}", GraphNodeShape.Rhombus, 100.0f, 80.0f, Color.Crimson, Color.Black, Color.Red, Color.Black, Color.Black, typeof(DecisionNodeConfig)); AddNodeTemplate(SwitchNodeConfig.NodeName, "SWITCH{0}", GraphNodeShape.Rhombus, 100.0f, 80.0f, Color.Yellow, Color.Black, Color.Red, Color.Black, Color.Black, typeof(SwitchNodeConfig)); AddNodeTemplate(SslLayerSectionNodeConfig.NodeName, "SSL{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.BlanchedAlmond, Color.Black, Color.Red, Color.Black, Color.Black, typeof(SslLayerSectionNodeConfig)); AddNodeTemplate(LayerSectionNodeConfig.NodeName, "LAYER{0}", GraphNodeShape.RoundedRectangle, 100.0f, 50.0f, Color.Coral, Color.Black, Color.Red, Color.Black, Color.Black, typeof(LayerSectionNodeConfig)); InitializeComponent(); PopulateGraphFromDocument(true); }
private void basicProxyToolStripMenuItem_Click(object sender, EventArgs e) { NetGraphDocument document = CANAPEProject.CurrentProject.CreateDocument <NetGraphDocument>(); BuildDefaultProxyNetgraph(document); OnDisplayDocument(document); }
/// <summary> /// Convert a netgraph to a simple dot diagram /// </summary> /// <param name="netgraph">The netgraph to convert</param> /// <returns>The graph as a dot diagram</returns> public static string ToDot(NetGraphDocument netgraph) { StringBuilder builder = new StringBuilder(); builder.AppendFormat("digraph netgraph {{").AppendLine(); builder.AppendLine("rankdir=LR;"); foreach (BaseNodeConfig node in netgraph.Nodes) { List <string> attrs = new List <string>(); if (!String.IsNullOrWhiteSpace(node.Label)) { attrs.Add(String.Format("label=\"{0}\"", node.Label)); } if (node is ServerEndpointConfig) { attrs.Add("ordering=out"); attrs.Add("rank=min"); } else if (node is ClientEndpointConfig) { attrs.Add("ordering=in"); attrs.Add("rank=max"); } else if ((node is DecisionNodeConfig) || (node is SwitchNodeConfig)) { attrs.Add("shape=diamond"); } else { attrs.Add("shape=box"); } if (!node.Enabled) { attrs.Add("style=dotted"); } if (attrs.Count > 0) { builder.AppendFormat("{0} [{1}];", FormatId(node.Id), String.Join(",", attrs)).AppendLine(); } } foreach (LineConfig edge in netgraph.Edges) { builder.AppendFormat("{0} -> {1}", FormatId(edge.SourceNode.Id), FormatId(edge.DestNode.Id)); if (!String.IsNullOrWhiteSpace(edge.PathName)) { builder.AppendFormat(" [label=\"{0}\"]", edge.PathName); } builder.AppendLine(";"); } builder.AppendLine("}"); return(builder.ToString()); }
private void btnOK_Click(object sender, EventArgs e) { if (String.IsNullOrWhiteSpace(textBoxHost.Text)) { MessageBox.Show(this, CANAPE.Properties.Resources.EditFilterForm_MustProvideHost, CANAPE.Properties.Resources.MessageBox_ErrorString, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } Filter = new IpProxyFilterFactory(); Filter.Address = textBoxHost.Text; Filter.Port = (int)numFilterPort.Value; Filter.ClientType = Net.Tokens.IpProxyToken.IpClientType.Tcp; Filter.Block = checkBoxBlock.Checked; Filter.IsRegex = checkBoxRegex.Checked; Filter.Disabled = !checkBoxEnabled.Checked; if (Filter.IsRegex) { try { new Regex(Filter.Address, RegexOptions.IgnoreCase); } catch (ArgumentException) { MessageBox.Show(this, CANAPE.Properties.Resources.EditFilterForm_InvalidRegex, CANAPE.Properties.Resources.MessageBox_ErrorString, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } Filter.Layers = layerEditorControl.Layers; if (comboBoxNetgraph.SelectedItem != null) { NetGraphDocument doc = comboBoxNetgraph.SelectedItem as NetGraphDocument; Filter.Graph = doc; } if (checkBoxRedirect.Checked) { Filter.RedirectAddress = textBoxRedirectHost.Text; Filter.RedirectPort = (int)numRedirectPort.Value; } else { Filter.RedirectAddress = String.Empty; Filter.RedirectPort = 0; } if (checkBoxClient.Checked) { Filter.Client = proxyClientControl.Client; } DialogResult = DialogResult.OK; Close(); }
/// <summary> /// Get a default netgraph /// </summary> /// <returns>The default graph</returns> public static NetGraphDocument GetDefault() { NetGraphDocument doc = new NetGraphDocument(); ClientEndpointConfig client = doc.AddClient("Client"); ServerEndpointConfig server = doc.AddServer("Server"); LogPacketConfig logout = doc.AddLog("LogOut"); LogPacketConfig login = doc.AddLog("LogIn"); server.AddEdge(server, logout, client, login, server); return(doc); }
private void BuildDefaultProxyNetgraph(NetGraphDocument document) { List <BaseNodeConfig> nodes = new List <BaseNodeConfig>(); ServerEndpointConfig server = new ServerEndpointConfig(); server.Label = "SERVER"; server.X = 80; server.Y = 150; nodes.Add(server); ClientEndpointConfig client = new ClientEndpointConfig(); client.Label = "CLIENT"; client.X = 280; client.Y = 150; nodes.Add(client); LogPacketConfig logout = new LogPacketConfig(); logout.Label = "LOGOUT"; logout.X = 180; logout.Y = 60; logout.Color = ColorValue.Pink; logout.Tag = "Out"; nodes.Add(logout); LogPacketConfig login = new LogPacketConfig(); login.Label = "LOGIN"; login.X = 180; login.Y = 240; login.Color = ColorValue.Powderblue; login.Tag = "In"; nodes.Add(login); List <LineConfig> lines = new List <LineConfig>(); lines.Add(new LineConfig(server, logout, false, null, false)); lines.Add(new LineConfig(logout, client, false, null, false)); lines.Add(new LineConfig(client, login, false, null, false)); lines.Add(new LineConfig(login, server, false, null, false)); document.UpdateGraph(nodes.ToArray(), lines.ToArray()); }
public NetServiceDocumentControl(NetServiceDocument document) { InitializeComponent(); if (components == null) { components = new Container(); } _serviceControl = (Control)Activator.CreateInstance(GetControlTypeForDocument(document), document); _readOnlyControl = _serviceControl as IReadOnlyControl; panelSettings.Controls.Add(_serviceControl); _serviceControl.Dock = DockStyle.Fill; _document = document; packetLogControl.LogName = _document.Name; packetLogControl.ReadOnly = !PacketLogMutable; packetLogControl.SetPackets(_document.Packets); metaEditorControl.Meta = _document.GlobalMeta; networkHistoryControl.SetDocument(_document); _defaultGraph = "Default"; _fileLogs = new Dictionary <Guid, FileRedirectLogEntry>(); Disposed += new EventHandler(NetServiceControl_Disposed); credentialsEditorControl.SetCredentials(_document.Credentials); PacketLogControlConfig config = document.GetProperty(PACKETLOG_CONFIG) as PacketLogControlConfig; if (config != null) { packetLogControl.Config = config; } Text = _document.Name; UpdateNetgraphs(); comboBoxNetgraph.SelectedItem = null; foreach (object item in comboBoxNetgraph.Items) { NetGraphDocument doc = item as NetGraphDocument; if (doc == _document.NetGraph) { comboBoxNetgraph.SelectedItem = item; break; } } }
private void emptyGraphToolStripMenuItem_Click(object sender, EventArgs e) { NetGraphDocument document = CANAPEProject.CurrentProject.CreateDocument <NetGraphDocument>(); OnDisplayDocument(document); }