Пример #1
0
        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);
        }
Пример #2
0
        private void basicProxyToolStripMenuItem_Click(object sender, EventArgs e)
        {
            NetGraphDocument document = CANAPEProject.CurrentProject.CreateDocument <NetGraphDocument>();

            BuildDefaultProxyNetgraph(document);
            OnDisplayDocument(document);
        }
Пример #3
0
        /// <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());
        }
Пример #4
0
        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();
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        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());
        }
Пример #7
0
        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;
                }
            }
        }
Пример #8
0
        private void emptyGraphToolStripMenuItem_Click(object sender, EventArgs e)
        {
            NetGraphDocument document = CANAPEProject.CurrentProject.CreateDocument <NetGraphDocument>();

            OnDisplayDocument(document);
        }