Ejemplo n.º 1
0
 public SslConfigForm(SslNetworkLayerConfig config, NetworkLayerBinding binding)
 {
     InitializeComponent();
     _config = config.Clone();
     sslConfigControl.Config = _config;
     sslConfigControl.LayerBinding = binding != NetworkLayerBinding.Default ? binding : NetworkLayerBinding.ClientAndServer;
 }
Ejemplo n.º 2
0
 public SslConfigForm(SslNetworkLayerConfig config, NetworkLayerBinding binding)
 {
     InitializeComponent();
     _config = config.Clone();
     sslConfigControl.Config       = _config;
     sslConfigControl.LayerBinding = binding != NetworkLayerBinding.Default ? binding : NetworkLayerBinding.ClientAndServer;
 }
Ejemplo n.º 3
0
 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;
 }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 /// <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);
Ejemplo n.º 6
0
        /// <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);
                }
            }
        }
Ejemplo n.º 7
0
 /// <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);
Ejemplo n.º 8
0
        // 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);
                    }
                }
            }
        }
Ejemplo n.º 9
0
        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);
                }
            }
        }
Ejemplo n.º 10
0
        /// <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);
            }
        }
Ejemplo n.º 11
0
        /// <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);
            }
        }
Ejemplo n.º 12
0
 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;
 }
 /// <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);
Ejemplo n.º 15
0
        /// <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));
 }
Ejemplo n.º 18
0
        /// <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);
                    }
                }
            }
        }
Ejemplo n.º 19
0
        /// <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);
        }
Ejemplo n.º 20
0
        /// <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);
        }