Example #1
0
        private void service_ServiceStoppedEvent(object sender, EventArgs e)
        {
            ProxyNetworkService service = sender as ProxyNetworkService;

            lock (_subServices)
            {
                _subServices.Remove(service);
            }
        }
Example #2
0
        /// <summary>
        /// Helper method to get the layer binding from the graph
        /// </summary>
        /// <param name="graph">The graph</param>
        /// <returns>The network layer binding, if no service returns default</returns>
        public static NetworkLayerBinding GetLayerBinding(NetGraph graph)
        {
            ProxyNetworkService service = graph.ServiceProvider.GetService <ProxyNetworkService>();

            if (service != null)
            {
                return(service.DefaultBinding);
            }
            else
            {
                return(NetworkLayerBinding.Default);
            }
        }
Example #3
0
        /// <summary>
        /// Add a sub service to the service. This will start the service
        /// </summary>
        /// <param name="service">The service to add, should not be started</param>
        /// <remarks>This method takes possession of the service</remarks>
        public void AddSubService(ProxyNetworkService service)
        {
            service._connections   = _connections;
            service._globalMeta    = _globalMeta;
            service._history       = _history;
            service._logger        = _logger;
            service._connections   = _connections;
            service._packetLog     = _packetLog;
            service._parentService = this;

            service.CloseConnectionEvent += service_CloseConnectionEvent;
            service.EditPacketEvent      += service_EditPacketEvent;
            service.LogPacketEvent       += service_FilterLogPacketEvent;
            service.NewConnectionEvent   += service_NewConnectionEvent;
            service.ServiceStoppedEvent  += service_ServiceStoppedEvent;

            service.Start();
        }
Example #4
0
            public ConnectionEntry(ProxyNetworkService service, NetGraph graph, int timeout, bool afterData)
            {
                _service = service;
                Graph    = graph;

                if (timeout > 0)
                {
                    SetTimeout(timeout, afterData);
                }

                foreach (KeyValuePair <Guid, BasePipelineNode> node in graph.Nodes)
                {
                    IPipelineEndpoint ep = node.Value as IPipelineEndpoint;

                    if (ep != null)
                    {
                        ep.DataRecieved += ep_DataRecieved;
                    }
                }
            }
Example #5
0
 /// <summary>
 /// Remove an existing sub service
 /// </summary>
 /// <param name="service">The sub service to remove</param>
 public void RemoveSubService(ProxyNetworkService service)
 {
     service.Stop();
 }
Example #6
0
        /// <summary>
        /// Create the network service from this document
        /// </summary>
        /// <param name="logger">The logger for the service</param>
        /// <returns>The new network service</returns>
        public override ProxyNetworkService Create(Logger logger)
        {
            ProxyNetworkService ret = null;

            if (logger == null)
            {
                logger = Logger.GetSystemLogger();
            }

            if ((_port <= 0) || (_port > 65535))
            {
                throw new NetServiceException("Must provide a valid port");
            }
            else
            {
                try
                {
                    ProxyServer server = new FixedProxyServer(logger, _destination, _port, _udp ? IpProxyToken.IpClientType.Udp : IpProxyToken.IpClientType.Tcp,
                        _ipv6, _layers);

                    ProxyClient client = null;

                    if (_clientFactory != null)
                    {
                        client = _clientFactory.Create(logger);
                    }
                    else
                    {
                        client = new IpProxyClient();
                    }

                    ret = new ProxyNetworkService(
                        _packets,
                        CreateListener(logger), _netGraph == null ? BuildDefaultProxyFactory() : _netGraph.Factory, logger, _globalMeta, _history,
                                _credentials, server, client, null, Timeout.Infinite, false);

                    ret.DefaultBinding = NetworkLayerBinding.Client;
                }
                catch (SocketException ex)
                {
                    throw new NetServiceException("Error creating network service", ex);
                }
                catch (IOException ex)
                {
                    throw new NetServiceException("Error creating network service", ex);
                }

                return ret;
            }
        }
Example #7
0
 /// <summary>
 /// Remove an existing sub service
 /// </summary>
 /// <param name="service">The sub service to remove</param>
 public void RemoveSubService(ProxyNetworkService service)
 {
     service.Stop();
 }
        private void btnStart_Click(object sender, EventArgs e)
        {
            try
            {
                if (_service == null)
                {
                    StartService();
                    DocumentControl.SetIcon(_document, "NetService_Started", Properties.Resources.Network_Map_Started);
                    btnStart.Text = "Stop";
                    comboBoxNetgraph.Enabled = false;
                    EnableControl(false);
                }
                else
                {
                    StopService();
                }
            }
            catch (NetServiceException ex)
            {
                Exception dispEx = ex;

                _service = null;

                if (ex.InnerException != null)
                {
                    dispEx = ex.InnerException;
                }

                MessageBox.Show(this, dispEx.Message, CANAPE.Properties.Resources.MessageBox_ErrorString, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, CANAPE.Properties.Resources.MessageBox_ErrorString, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Example #9
0
            public ConnectionEntry(ProxyNetworkService service, NetGraph graph, int timeout, bool afterData)
            {
                _service = service;
                Graph = graph;

                if (timeout > 0)
                {
                    SetTimeout(timeout, afterData);
                }

                foreach (KeyValuePair<Guid, BasePipelineNode> node in graph.Nodes)
                {
                    IPipelineEndpoint ep = node.Value as IPipelineEndpoint;

                    if (ep != null)
                    {
                        ep.DataRecieved += ep_DataRecieved;
                    }
                }
            }
Example #10
0
        /// <summary>
        /// Add a sub service to the service. This will start the service
        /// </summary>
        /// <param name="service">The service to add, should not be started</param>
        /// <remarks>This method takes possession of the service</remarks>
        public void AddSubService(ProxyNetworkService service)
        {
            service._connections = _connections;
            service._globalMeta = _globalMeta;
            service._history = _history;
            service._logger = _logger;
            service._connections = _connections;
            service._packetLog = _packetLog;
            service._parentService = this;

            service.CloseConnectionEvent += service_CloseConnectionEvent;
            service.EditPacketEvent += service_EditPacketEvent;
            service.FilterLogPacketEvent += service_FilterLogPacketEvent;
            service.NewConnectionEvent += service_NewConnectionEvent;
            service.ServiceStoppedEvent += service_ServiceStoppedEvent;

            service.Start();
        }
Example #11
0
        /// <summary>
        /// Method to create a network service
        /// </summary>
        /// <param name="logger">The logger to use</param>
        /// <returns>The network service</returns>
        /// <exception cref="NetServiceException">Thrown in configuration invalid</exception>
        public override ProxyNetworkService Create(Logger logger)
        {
            ProxyNetworkService ret = null;

            if (logger == null)
            {
                logger = Logger.GetSystemLogger();
            }

            if ((_port < 0) || (_port > 65535))
            {
                throw new NetServiceException(Properties.Resources.GenericProxyDocument_MustSpecifyAValidPort);
            }
            else
            {
                try
                {
                    List<ProxyFilter> filters = new List<ProxyFilter>();

                    foreach (ProxyFilterFactory item in _filters)
                    {
                        filters.Add(item.CreateFilter());
                    }

                    ProxyServer server = CreateServer(logger);
                    ProxyClient client = null;

                    if (_clientFactory != null)
                    {
                        client = _clientFactory.Create(logger);
                    }
                    else
                    {
                        client = new IpProxyClient();
                    }

                    INetworkListener listener = null;

                    if (NetUtils.OSSupportsIPv4)
                    {
                        listener = new TcpNetworkListener(_anyBind, false, _port, logger, false);
                    }

                    if (_ipv6Bind && NetUtils.OSSupportsIPv6)
                    {
                        INetworkListener ipv6Listener = new TcpNetworkListener(_anyBind, true, _port, logger, false);

                        if (listener != null)
                        {
                            listener = new AggregateNetworkListener(listener, ipv6Listener);
                        }
                        else
                        {
                            listener = ipv6Listener;
                        }
                    }

                    if (listener == null)
                    {
                        throw new NetServiceException(CANAPE.Documents.Properties.Resources.NetServiceDocument_CannotSetupListener);
                    }

                    ret = new ProxyNetworkService(
                        _packets,
                        listener,
                        _netGraph == null ? BuildDefaultProxyFactory() : _netGraph.Factory, logger, _globalMeta, _history,
                        _credentials, server, client, filters.ToArray(), Timeout.Infinite, false);

                    ret.DefaultBinding = CANAPE.Net.Layers.NetworkLayerBinding.ClientAndServer;
                }
                catch (SocketException ex)
                {
                    throw new NetServiceException(Properties.Resources.GenericProxyDocument_ErrorCreatingService, ex);
                }
                catch (IOException ex)
                {
                    throw new NetServiceException(Properties.Resources.GenericProxyDocument_ErrorCreatingService, ex);
                }

                return ret;
            }
        }
        private void StartService()
        {
            if (checkBoxClearOnStart.Checked)
            {
                _document.GlobalMeta.Clear();
            }

            _service = _document.Create(eventLogControl.Logger);
            _service.EditPacketEvent += new EventHandler<EditPacketEventArgs>(_service_EditPacketEvent);
            _service.FilterLogPacketEvent += new EventHandler<FilterPacketLogEventArgs>(_service_FilterLogPacketEvent);
            _service.NewConnectionEvent += new EventHandler<ConnectionEventArgs>(_service_NewConnectionEvent);
            _service.CloseConnectionEvent += new EventHandler<ConnectionEventArgs>(_service_CloseConnectionEvent);
            _service.ServiceStoppedEvent += new EventHandler(_service_ServiceStoppedEvent);
            _service.ResolveCredentials += ResolveCredentials;
            _service.Start();
            netGraphNodesControl.Service = _service;
            injectPacketControl.Service = _service;
        }
        void OnServiceStop()
        {
            CloseLogFiles();

            DocumentControl.SetIcon(_document, null, null);

            if (!IsDisposed)
            {
                netGraphNodesControl.Service = null;
                listViewConns.Items.Clear();
                btnStart.Text = "Start";
                comboBoxNetgraph.Enabled = true;
                EnableControl(true);
                _service = null;
            }
        }
Example #14
0
        /// <summary>
        /// Create the base service
        /// </summary>
        /// <param name="logger">The logger to use</param>
        /// <returns>The new network service</returns>
        public override ProxyNetworkService Create(Logger logger)
        {
            ProxyNetworkService ret = null;

            if (logger == null)
            {
                logger = Logger.GetSystemLogger();
            }

            if ((_port < 0) || (_port > 65535))
            {
                throw new NetServiceException(Properties.Resources.NetServerDocument_ValidPort);
            }
            else if (_factory == null)
            {
                throw new NetServiceException(Properties.Resources.NetServerDocument_MustSpecifyServer);
            }
            else
            {
                try
                {
                    ProxyServer server = new PassThroughProxyServer(logger, _layers);

                    ProxyClient client = new NetServerProxyClient(_factory);

                    INetworkListener listener = null;

                    if (!_udp)
                    {
                        if (NetUtils.OSSupportsIPv4)
                        {
                            listener = new TcpNetworkListener(_anyBind, false, _port, logger, false);
                        }

                        if (_ipv6Bind && NetUtils.OSSupportsIPv6)
                        {
                            INetworkListener ipv6Listener = new TcpNetworkListener(_anyBind, true, _port, logger, false);

                            if (listener != null)
                            {
                                listener = new AggregateNetworkListener(listener, ipv6Listener);
                            }
                            else
                            {
                                listener = ipv6Listener;
                            }
                        }
                    }
                    else
                    {
                        if (NetUtils.OSSupportsIPv4)
                        {
                            listener = new UdpNetworkListener(_anyBind, false, _port, _enableBroadcast, logger);
                        }

                        if (_ipv6Bind && NetUtils.OSSupportsIPv6)
                        {
                            INetworkListener ipv6Listener = new UdpNetworkListener(_anyBind, true, _port, _enableBroadcast, logger);

                            if(listener != null)
                            {
                                listener = new AggregateNetworkListener(listener, ipv6Listener);
                            }
                            else
                            {
                                listener = ipv6Listener;
                            }
                        }
                    }

                    if (listener == null)
                    {
                        throw new NetServiceException(CANAPE.Documents.Properties.Resources.NetServiceDocument_CannotSetupListener);
                    }

                    ret = new ProxyNetworkService(
                        _packets,
                        listener,
                        _netGraph == null ? BuildDefaultProxyFactory() : _netGraph.Factory, logger, _globalMeta, _history,
                        _credentials, server, client, null, Timeout.Infinite, false);

                    ret.DefaultBinding = NetworkLayerBinding.Server;
                }
                catch (SocketException ex)
                {
                    throw new NetServiceException(Properties.Resources.NetServerDocument_ErrorCreatingServer, ex);
                }
                catch (IOException ex)
                {
                    throw new NetServiceException(Properties.Resources.NetServerDocument_ErrorCreatingServer, ex);
                }

                return ret;
            }
        }
Example #15
0
 public void SetService(ProxyNetworkService service)
 {
     _service = service;
     _service.CloseConnectionEvent += new EventHandler<ConnectionEventArgs>(_service_CloseConnectionEvent);
 }
        public override ProxyNetworkService Create(Utils.Logger logger)
        {
            ProxyNetworkService ret = null;

            if (logger == null)
            {
                logger = Logger.GetSystemLogger();
            }

            if (_factory == null)
            {
                throw new NetServiceException("Must specify a server");
            }

            try
            {
                ProxyServer server = new PassThroughProxyServer(logger, _layers);

                ret = new ProxyNetworkService(_packets, new SerialPortProxyListener(ServerPort),
                    _netGraph == null ? BuildDefaultProxyFactory() : _netGraph.Factory, logger, _globalMeta, _history,
                    _credentials, server, new NetServerProxyClient(_factory), null, Timeout.Infinite, false);

                ret.DefaultBinding = NetworkLayerBinding.ClientAndServer;
            }
            catch (Exception ex)
            {
                if (ex is NetServiceException)
                {
                    throw;
                }

                throw new NetServiceException("Error creating service", ex);
            }

            return ret;
        }
Example #17
0
        private void SetupService(ProxyNetworkService graph)
        {
            _service = graph;

            comboBoxNetGraph.Items.Clear();
            comboBoxNetGraph.SelectedItem = null;
            metaEditorControl.Meta = null;
            propertyBagViewerControl.UpdateProperties(null);
            listViewNetGraph.Items.Clear();
        }