private void service_ServiceStoppedEvent(object sender, EventArgs e) { ProxyNetworkService service = sender as ProxyNetworkService; lock (_subServices) { _subServices.Remove(service); } }
/// <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); } }
/// <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(); }
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; } } }
/// <summary> /// Remove an existing sub service /// </summary> /// <param name="service">The sub service to remove</param> public void RemoveSubService(ProxyNetworkService service) { service.Stop(); }
/// <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; } }
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); } }
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; } } }
/// <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(); }
/// <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; } }
/// <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; } }
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; }
private void SetupService(ProxyNetworkService graph) { _service = graph; comboBoxNetGraph.Items.Clear(); comboBoxNetGraph.SelectedItem = null; metaEditorControl.Meta = null; propertyBagViewerControl.UpdateProperties(null); listViewNetGraph.Items.Clear(); }