public SslConfigForm(SslNetworkLayerConfig config, NetworkLayerBinding binding) { InitializeComponent(); _config = config.Clone(); sslConfigControl.Config = _config; sslConfigControl.LayerBinding = binding != NetworkLayerBinding.Default ? binding : NetworkLayerBinding.ClientAndServer; }
public GraphEntry(LayerSectionFilter filter, LayerSectionDataAdapter clientAdapter, LayerSectionDataAdapter serverAdapter, NetGraph graph, Guid clientEndpoint, Guid serverEndpoint, NetworkLayerBinding defaultBinding) { Filter = filter; _clientAdapter = clientAdapter; _serverAdapter = serverAdapter; Graph = graph; _clientEndpoint = clientEndpoint; _serverEndpoint = serverEndpoint; _defaultBinding = defaultBinding; }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if ((provider != null) && (value is SslNetworkLayerConfig)) { IWindowsFormsEditorService service = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService; if (service != null) { NetworkLayerBinding binding = NetworkLayerBinding.ClientAndServer; INetworkLayerFactory layerFactory = context.Instance as INetworkLayerFactory; if ((layerFactory != null) && (layerFactory.Binding != NetworkLayerBinding.Default)) { binding = layerFactory.Binding; } using (SslConfigControl sslControl = new SslConfigControl()) { sslControl.Config = (SslNetworkLayerConfig)value; sslControl.LayerBinding = binding; service.DropDownControl(sslControl); value = sslControl.Config; } //using (SslConfigForm frm = new SslConfigForm((SslNetworkLayerConfig)value, binding)) //{ // if (service.ShowDialog(frm) == DialogResult.OK) // { // value = frm.Config; // } //} } } return(value); }
/// <summary> /// Called on layer setup, allows you to override the clients and server adapters if needed /// </summary> /// <param name="client">Reference to the client adapter</param> /// <param name="server">References to the server adapter</param> /// <param name="binding">The current binding</param> protected abstract void OnConnect(ref IDataAdapter client, ref IDataAdapter server, NetworkLayerBinding binding);
/// <summary> /// Method called on Connect /// </summary> /// <param name="client">The client adapter</param> /// <param name="server">The server adapter</param> /// <param name="binding">Binding mode</param> protected override sealed void OnConnect(ref IDataAdapter client, ref IDataAdapter server, NetworkLayerBinding binding) { if (OnConnect(client, server, binding)) { if ((binding & NetworkLayerBinding.Client) == NetworkLayerBinding.Client) { client = new WrapperClientDataAdapter(this, client.Description); } if ((binding & NetworkLayerBinding.Server) == NetworkLayerBinding.Server) { server = new WrapperServerDataAdapter(this, server.Description); } } }
/// <summary> /// Called on layer setup, allows you to override the clients and server adapters if needed /// </summary> /// <param name="client">Reference to the client adapter</param> /// <param name="server">References to the server adapter</param> /// <param name="binding">The current binding</param> /// <returns>Returns true if the connection should continue</returns> protected abstract bool OnConnect(IDataAdapter client, IDataAdapter server, NetworkLayerBinding binding);
// TODO: Should merge with implementation for the general connection so that it is 100% compatible /// <summary> /// /// </summary> /// <param name="graph"></param> /// <param name="token"></param> public void ReconnectClient(NetGraph graph, ProxyToken token) { IDataAdapter client = null; bool connected = false; PropertyBag networkService = graph.ConnectionProperties.GetRelativeBag("NetworkService"); PropertyBag clientProperties = graph.ConnectionProperties.GetRelativeBag("Client"); PropertyBag tokenProperties = graph.ConnectionProperties.GetRelativeBag("Token"); try { while (graph.Parent != null) { graph = graph.Parent; } if (token != null) { // If passed in a token we need to apply filters to it token = FilterToken(token); } else { // Use original post-filtered token = (ProxyToken)networkService.GetRelativeValue("Token"); } if (token.Status == NetStatusCodes.Success) { clientProperties.Clear(); if (token.Client == null) { client = _proxyClient.Connect(token, _logger, graph.Meta, _globalMeta, clientProperties); } else { client = token.Client.Connect(token, _logger, graph.Meta, _globalMeta, clientProperties); } tokenProperties.Clear(); token.PopulateBag(tokenProperties); // Negotiate SSL or other bespoke encryption mechanisms if (token.Layers != null) { // Bind but disabling server layer NetworkLayerBinding binding = DefaultBinding & ~NetworkLayerBinding.Server; foreach (INetworkLayer layer in token.Layers) { IDataAdapter server = null; layer.Negotiate(ref server, ref client, token, _logger, graph.Meta, _globalMeta, graph.ConnectionProperties, binding); } } graph.BindEndpoint((Guid)networkService.GetRelativeValue("ClientId"), client); IDataAdapter serverAdapter = networkService.GetRelativeValue("ServerAdapter"); if (token.NetworkDescription != null) { graph.NetworkDescription = token.NetworkDescription; } else { graph.NetworkDescription = String.Format("{0} <=> {1}", serverAdapter.Description, client.Description); } IDataAdapter oldClient = networkService.GetRelativeValue("ClientAdapter"); networkService.AddValue("ClientAdapter", client); networkService.AddValue("Token", token); oldClient.Dispose(); connected = true; } else { _logger.LogVerbose(Properties.Resources.ProxyNetworkService_ConnectionFiltered); } } catch (Exception ex) { _logger.LogException(ex); } finally { if (!connected) { try { if (client != null) { client.Dispose(); } } catch (Exception ex) { Logger.SystemLogger.LogException(ex); } } } }
protected override void OnConnect(ref IDataAdapter client, ref IDataAdapter server, NetworkLayerBinding binding) { Encoding encoding = _config.GetEncoding(); if ((binding & NetworkLayerBinding.Client) == NetworkLayerBinding.Client) { if (encoding.IsSingleByte) { client = new SimpleTextDataAdapter(client, encoding); } else { client = new ComplexTextDataAdapter(client, encoding); } } if ((binding & NetworkLayerBinding.Server) == NetworkLayerBinding.Server) { if (encoding.IsSingleByte) { server = new SimpleTextDataAdapter(server, encoding); } else { server = new ComplexTextDataAdapter(server, encoding); } } }
/// <summary> /// /// </summary> /// <param name="server"></param> /// <param name="client"></param> /// <param name="token"></param> /// <param name="logger"></param> /// <param name="meta"></param> /// <param name="globalMeta"></param> /// <param name="properties"></param> /// <param name="defaultBinding"></param> public void Negotiate(ref IDataAdapter server, ref IDataAdapter client, ProxyToken token, Logger logger, MetaDictionary meta, MetaDictionary globalMeta, PropertyBag properties, NetworkLayerBinding defaultBinding) { if (defaultBinding == NetworkLayerBinding.Default) { defaultBinding = NetworkLayerBinding.ClientAndServer; } if (Binding != NetworkLayerBinding.Default) { defaultBinding = Binding; } if ((defaultBinding & NetworkLayerBinding.Server) == NetworkLayerBinding.Server) { server = new HttpRequestDataAdapter(server, logger, this); } if ((defaultBinding & NetworkLayerBinding.Client) == NetworkLayerBinding.Client) { client = new HttpResponseDataAdapter(client, logger, this); } }
/// <summary> /// Method called on Connect /// </summary> /// <param name="client">The client adapter</param> /// <param name="server">The server adapter</param> /// <param name="binding">Binding mode</param> protected override sealed bool OnConnect(IDataAdapter client, IDataAdapter server, NetworkLayerBinding binding) { return(OnConnect(new DataAdapterToStream(client), new DataAdapterToStream(server), binding)); }
/// <summary> /// Method to implement for taking stream data /// </summary> /// <param name="clientStream"></param> /// <param name="serverStream"></param> /// <param name="binding"></param> /// <returns></returns> protected abstract bool OnConnect(Stream clientStream, Stream serverStream, NetworkLayerBinding binding);
/// <summary> /// Negotiate the layer /// </summary> /// <param name="server">The server data adapter</param> /// <param name="client">The client data adapter</param> /// <param name="token">The associated proxy token</param> /// <param name="logger">The current service's logger</param> /// <param name="meta">The current service's meta dictionary</param> /// <param name="globalMeta">The current global meta dictionary</param> /// <param name="properties">Additional properties</param> /// <param name="defaultBinding">The default binding</param> public void Negotiate(ref IDataAdapter server, ref IDataAdapter client, ProxyToken token, Logger logger, MetaDictionary meta, MetaDictionary globalMeta, PropertyBag properties, NetworkLayerBinding defaultBinding) { if (_config.Enabled) { if (defaultBinding == NetworkLayerBinding.Default) { defaultBinding = NetworkLayerBinding.ClientAndServer; } if (Binding != NetworkLayerBinding.Default) { defaultBinding = Binding; } if ((defaultBinding & NetworkLayerBinding.Client) == NetworkLayerBinding.Client) { if (_config.ClientProtocol != SslProtocols.None) { IpProxyToken iptoken = token as IpProxyToken; string serverName = null; if (iptoken != null) { if (!String.IsNullOrWhiteSpace(iptoken.Hostname)) { serverName = iptoken.Hostname; } else { serverName = iptoken.Address.ToString(); } } client = ConnectClient(client, logger, properties, serverName); } } if ((defaultBinding & NetworkLayerBinding.Server) == NetworkLayerBinding.Server) { if (_config.ServerProtocol != SslProtocols.None) { server = ConnectServerBC(server, logger, properties); } } } }
/// <summary> /// Ons the connect. /// </summary> /// <returns><c>true</c>, if connect was oned, <c>false</c> otherwise.</returns> /// <param name="clientStream">Client stream.</param> /// <param name="serverStream">Server stream.</param> /// <param name="binding">Binding.</param> protected override sealed bool OnConnect(Stream clientStream, Stream serverStream, NetworkLayerBinding binding) { _client_stream = clientStream; _server_stream = serverStream; return(NegotiateProtocol(clientStream, serverStream, binding)); }
/// <summary> /// Negotiates the protocol. /// </summary> /// <returns><c>true</c>, if protocol was negotiated, <c>false</c> otherwise.</returns> /// <param name="outboundStream">Outbound stream.</param> /// <param name="inboundStream">Inbound stream.</param> /// <param name="binding">Binding.</param> protected virtual bool NegotiateProtocol(Stream outboundStream, Stream inboundStream, NetworkLayerBinding binding) { return(NegotiateProtocol(outboundStream, inboundStream)); }
/// <summary> /// /// </summary> /// <param name="server"></param> /// <param name="client"></param> /// <param name="token"></param> /// <param name="logger"></param> /// <param name="meta"></param> /// <param name="globalMeta"></param> /// <param name="properties"></param> /// <param name="defaultBinding"></param> public void Negotiate(ref IDataAdapter server, ref IDataAdapter client, ProxyToken token, Logger logger, MetaDictionary meta, MetaDictionary globalMeta, PropertyBag properties, NetworkLayerBinding defaultBinding) { if (_config.Enabled) { if (defaultBinding == NetworkLayerBinding.Default) { defaultBinding = NetworkLayerBinding.ClientAndServer; } if (Binding != NetworkLayerBinding.Default) { defaultBinding = Binding; } if ((defaultBinding & NetworkLayerBinding.Client) == NetworkLayerBinding.Client) { if (_config.ClientProtocol != SslProtocols.None) { IpProxyToken iptoken = token as IpProxyToken; string serverName = null; if (iptoken != null) { if (!String.IsNullOrWhiteSpace(iptoken.Hostname)) { serverName = iptoken.Hostname; } else { serverName = iptoken.Address.ToString(); } } client = ConnectClient(client, logger, properties, serverName); } } if ((defaultBinding & NetworkLayerBinding.Server) == NetworkLayerBinding.Server) { if (_config.ServerProtocol != SslProtocols.None) { server = ConnectServer(server, logger, properties); } } } }
/// <summary> /// /// </summary> /// <param name="client"></param> /// <param name="server"></param> /// <param name="binding"></param> /// <returns></returns> protected override sealed bool OnConnect(CANAPE.DataAdapters.IDataAdapter client, CANAPE.DataAdapters.IDataAdapter server, NetworkLayerBinding binding) { _clientEnum = ReadClientFrames(client).GetEnumerator(); _serverEnum = ReadServerFrames(server).GetEnumerator(); _client = client; _server = server; return(true); }
/// <summary> /// Negotiate method /// </summary> /// <param name="server">Server adapter</param> /// <param name="client">Client adapter</param> /// <param name="token">The associated proxy token</param> /// <param name="logger">The associated logger</param> /// <param name="meta">The associated meta dictionary</param> /// <param name="globalMeta">The assocaited global meta dictionary</param> /// <param name="properties">Property bag</param> /// <param name="defaultBinding">Default layer binding mode</param> public void Negotiate(ref IDataAdapter server, ref IDataAdapter client, ProxyToken token, Logger logger, MetaDictionary meta, MetaDictionary globalMeta, PropertyBag properties, NetworkLayerBinding defaultBinding) { Token = token; Logger = logger; Meta = meta; GlobalMeta = globalMeta; Properties = properties; if (defaultBinding == NetworkLayerBinding.Default) { defaultBinding = NetworkLayerBinding.ClientAndServer; } if (Binding != NetworkLayerBinding.Default) { defaultBinding = Binding; } OnConnect(ref client, ref server, defaultBinding); }