示例#1
0
    public async Task <bool> TryConnectMain(string ip_address, int port)
    {
        try {
            var crt = new SslCredentials(file);
            this.main_room_chan = new Channel(
                ip_address, port, crt
                );

            if (ConfigForm.Connector == "")
            {
                ConfigForm.Connector = "grpc";
            }
            if (ConfigForm.Host == "")
            {
                ConfigForm.Host = ip_address;
            }
            if (ConfigForm.Port == 0)
            {
                ConfigForm.Port = port;
            }
            return(true);
        } catch (RpcException e) {
            Debug.LogError(e);
            return(false);

            throw e;
        }
    }
示例#2
0
        public static void Main(string[] args)
        {
            var option = int.Parse(args[0]);

            var            cacert  = File.ReadAllText(@"ca.crt");
            var            cert    = File.ReadAllText(@"client.crt");
            var            key     = File.ReadAllText(@"client.key");
            var            keypair = new KeyCertificatePair(cert, key);
            SslCredentials creds   = new SslCredentials(cacert, keypair);
            var            channel = new Channel("DESKTOP-1UHNCG6", Port, creds);
            var            client  = new EmployeeServiceClient(channel);

            switch (option)
            {
            case 1:
                SendMetadataAsync(client).Wait();
                break;

            case 2:
                GetByBadgeNumber(client).Wait();
                break;

            case 3:
                GetAll(client).Wait();
                break;

            case 4:
                AddPhoto(client).Wait();
                break;

            case 5:
                SaveAll(client).Wait();
                break;
            }
        }
示例#3
0
        public void Init()
        {
            var rootCert    = File.ReadAllText(TestCredentials.ClientCertAuthorityPath);
            var keyCertPair = new KeyCertificatePair(
                File.ReadAllText(TestCredentials.ServerCertChainPath),
                File.ReadAllText(TestCredentials.ServerPrivateKeyPath));

            var serverCredentials = new SslServerCredentials(new[] { keyCertPair }, rootCert, true);
            var clientCredentials = new SslCredentials(rootCert, keyCertPair);

            server = new Server
            {
                Services = { TestService.BindService(new TestServiceImpl()) },
                Ports    = { { Host, ServerPort.PickUnused, serverCredentials } }
            };
            server.Start();

            var options = new List <ChannelOption>
            {
                new ChannelOption(ChannelOptions.SslTargetNameOverride, TestCredentials.DefaultHostOverride)
            };

            channel = new Channel(Host, server.Ports.Single().BoundPort, clientCredentials, options);
            client  = new TestService.TestServiceClient(channel);
        }
示例#4
0
        public void InitClientAndServer(bool clientAddKeyCertPair,
                                        SslClientCertificateRequestType clientCertRequestType,
                                        VerifyPeerCallback verifyPeerCallback = null)
        {
            rootCert    = File.ReadAllText(TestCredentials.ClientCertAuthorityPath);
            keyCertPair = new KeyCertificatePair(
                File.ReadAllText(TestCredentials.ServerCertChainPath),
                File.ReadAllText(TestCredentials.ServerPrivateKeyPath));

            var serverCredentials = new SslServerCredentials(new[] { keyCertPair }, rootCert, clientCertRequestType);
            var clientCredentials = new SslCredentials(rootCert, clientAddKeyCertPair ? keyCertPair : null, verifyPeerCallback);

            // Disable SO_REUSEPORT to prevent https://github.com/grpc/grpc/issues/10755
            server = new Server(new[] { new ChannelOption(ChannelOptions.SoReuseport, 0) })
            {
                Services = { TestService.BindService(new SslCredentialsTestServiceImpl()) },
                Ports    = { { Host, ServerPort.PickUnused, serverCredentials } }
            };
            server.Start();

            var options = new List <ChannelOption>
            {
                new ChannelOption(ChannelOptions.SslTargetNameOverride, TestCredentials.DefaultHostOverride)
            };

            channel = new Channel(Host, server.Ports.Single().BoundPort, clientCredentials, options);
            client  = new TestService.TestServiceClient(channel);
        }
        /// <summary>
        /// Creates the specific communication client based on grpc technoligy
        /// </summary>
        /// <param name="address">The address.</param>
        /// <param name="chunkSender">The chunkSender<see cref="IChunkSender{Command, FetchRequest, GrpcResponse}"/></param>
        /// <param name="chunkReceiver">The chunkReceiver<see cref="IChunkReceiver{Command}"/></param>
        /// <returns>The <see cref="IClient{Command, FetchRequest, GrpcResponse}"/></returns>
        public static IClient <Command, FetchRequest, GrpcResponse> Create(string address, IChunkSender <Command, FetchRequest, GrpcResponse> chunkSender, IChunkReceiver <Command> chunkReceiver)
        {
            try
            {
                var           endPoint      = address.ToIpEndpoint();
                Channel       channel       = null;
                ChannelOption optionReceive = new ChannelOption(ChannelOptions.MaxReceiveMessageLength, GrpcStream.MaxPackageSize);
                ChannelOption optionSend    = new ChannelOption(ChannelOptions.MaxSendMessageLength, GrpcStream.MaxPackageSize);

                if (System.IO.File.Exists("ca.crt"))
                {
                    var cacert     = System.IO.File.ReadAllText(@"ca.crt");
                    var clientcert = System.IO.File.ReadAllText(@"client.crt");
                    var clientkey  = System.IO.File.ReadAllText(@"client.key");
                    var ssl        = new SslCredentials(cacert, new KeyCertificatePair(clientcert, clientkey));
                    channel = new Channel(string.Format("{0}:{1}", endPoint.Address.ToString(), endPoint.Port), ssl);
                }
                else
                {
                    channel = new Channel(string.Format("{0}:{1}", endPoint.Address.ToString(), endPoint.Port), ChannelCredentials.Insecure, new List <ChannelOption>()
                    {
                        optionReceive, optionSend
                    });
                }

                return(new GrpcClient(channel, endPoint, chunkSender, chunkReceiver));
            }
            catch (Exception ex)
            {
                throw new Exception("Grpc initialization error", ex);
            }
        }
        static void Main(string[] args)
        {
            // Read exported (PEM formatted) server TLS certificate from disk
            var serverCert         = File.ReadAllText("<< ADD PATH TO EXPORTED SERVER CERTIFICATE >>");
            var tlsCertCredentials = new SslCredentials(serverCert);

            // Apply the api key to every request that is made with the client
            var apiKeyCredentials = CallCredentials.FromInterceptor((context, metadata) =>
            {
                metadata.Add("ibahdapi-apikey", "<< ADD API KEY >>");
                return(Task.CompletedTask);
            });

            var combinedCredentials = ChannelCredentials.Create(tlsCertCredentials, apiKeyCredentials);

            // gRPC channel setup to connect to ibaHD-API endpoint in ibaHD-Server
            // Increasing the default message size (~4MB) is recommended
            var channel = new Channel("127.0.0.1:9003", combinedCredentials,
                                      new List <ChannelOption> {
                new ChannelOption(ChannelOptions.MaxReceiveMessageLength, Int32.MaxValue)
            });

            // Instantiate ibaHD-API client on the gRPC channel
            var client = new HdApiService.HdApiServiceClient(channel);

            // Simple request to retrieve stores
            var response = client.GetHdStores(new GetHdStoresRequest());

            // Clean channel shutdown (Check ShutdownAsync() documentation for details)
            channel.ShutdownAsync().Wait();

            Console.WriteLine(response);
            Console.ReadLine();
        }
示例#7
0
        /// <summary>
        /// Create a new channel.
        /// </summary>
        /// <param name="uriStr"></param>
        /// <param name="crt">Certificate</param>
        /// <returns></returns>
        private Channel CreateChannel(string uriStr, string crt)
        {
            var channelCredentials = new SslCredentials(crt);
            var channel            = new Channel(uriStr, channelCredentials);

            return(channel);
        }
示例#8
0
        private static async Task <HelloChatty.HelloChattyClient> ConnectProtoClient(string serverAddress)
        {
            var key        = System.IO.File.ReadAllText(client_private_key_file);
            var cert       = System.IO.File.ReadAllText(client_certificate_file);
            var serverCert = System.IO.File.ReadAllText(server_certificate_file);

            var creds = new SslCredentials(
                serverCert, new KeyCertificatePair(key, cert)
                );

            var rpcChannel = new Channel(serverAddress, creds,
                                         new List <ChannelOption> {
                // docs about keeping grpc connection alive: https://github.com/grpc/grpc/blob/master/doc/keepalive.md
                // the mappings of the fields are in file grpc/include/grpc/impl/codegen/grpc_types.h in the official grpc core repo https://github.com/grpc/grpc
                new ChannelOption("grpc.keepalive_time_ms", 1000),           // keepalive ping every X ms
                new ChannelOption("grpc.keepalive_timeout_ms", 10 * 1000),   // peer must reply to our ping within this
                new ChannelOption("grpc.keepalive_permit_without_calls", 1), // allow keepalive without calls at all
                // new ChannelOption ( "grpc.http2.max_pings_without_data", 0 ), // server-only setting
                // new ChannelOption ( "grpc.http2.min_ping_interval_without_data_ms", 1000), // server-only setting
                new ChannelOption("grpc.http2.max_ping_strikes", 1),
            }
                                         );
            var rpcClient = new HelloChatty.HelloChattyClient(rpcChannel);

            await rpcChannel.ConnectAsync();

            if (rpcChannel.State == ChannelState.Ready)
            {
                return(rpcClient);
            }
            throw new Exception($@"For unknown reason, the channel state is still {rpcChannel.State}");
        }
        static ChannelCredentials CreateCredentials(bool mutualTls, bool useJwt)
        {
            var certsPath = Environment.GetEnvironmentVariable("CERTS_PATH");

            var caRoots = File.ReadAllText(Path.Combine(certsPath, "ca.pem"));
            ChannelCredentials channelCredentials;

            if (!mutualTls)
            {
                channelCredentials = new SslCredentials(caRoots);
            }
            else
            {
                var keyCertPair = new KeyCertificatePair(
                    File.ReadAllText(Path.Combine(certsPath, "client.pem")),
                    File.ReadAllText(Path.Combine(certsPath, "client.key")));
                channelCredentials = new SslCredentials(caRoots, keyCertPair);
            }

            if (useJwt)
            {
                var authInterceptor = new AsyncAuthInterceptor(async(context, metadata) =>
                {
                    metadata.Add(
                        new Metadata.Entry("authorization", "Bearer " + GenerateJwt()));
                });

                var metadataCredentials = CallCredentials.FromInterceptor(authInterceptor);
                channelCredentials = ChannelCredentials.Create(channelCredentials, metadataCredentials);
            }
            return(channelCredentials);
        }
示例#10
0
        const string target = "127.0.0.1:50051";//connection IP on which the client want to connect
        static async Task Main(string[] args)
        {
            //WITHOUT SSL
            //Channel channel = new Channel(target, ChannelCredentials.Insecure);
            //WITH SSL
            var clientCert = File.ReadAllText("ssl/client.crt");
            var clientKey  = File.ReadAllText("ssl/client.key");
            var caCrt      = File.ReadAllText("ssl/ca.crt");

            var     channelCredentials = new SslCredentials(caCrt, new KeyCertificatePair(clientCert, clientKey));
            Channel channel            = new Channel("localhost", 50051, channelCredentials);

            //-------------------------------------------------------------


            await channel.ConnectAsync().ContinueWith((task) =>
            {
                if (task.Status == TaskStatus.RanToCompletion)
                {
                    Console.WriteLine("The Client Connected Successfully");
                }
            });

            //var client = new DummyService.DummyServiceClient(channel);

            var client = new GreetingService.GreetingServiceClient(channel);

            DoSimpleGreet(client);//UNARY
            //await DoManyGreetings(client);//SERVER STREAMING
            //await DoLongGreet(client);//CLIENT STREAMING
            //await DoGreetEveryone(client);//BI-DIRECTINAL STREAMING

            channel.ShutdownAsync().Wait();
            Console.ReadKey();
        }
示例#11
0
文件: Program.cs 项目: yuryu/agones
        static async Task Main(string[] args)
        {
            if (args.Length < 6)
            {
                throw new Exception("Arguments are missing. Expecting: <private key> <public key> <server CA> <external IP> <namepace> <enable multi-cluster>");
            }

            string clientKey    = File.ReadAllText(args[0]);
            string clientCert   = File.ReadAllText(args[1]);
            string serverCa     = File.ReadAllText(args[2]);
            string externalIp   = args[3];
            string namespaceArg = args[4];
            bool   multicluster = bool.Parse(args[5]);

            var creds   = new SslCredentials(serverCa, new KeyCertificatePair(clientCert, clientKey));
            var channel = new Channel(externalIp + ":443", creds);
            var client  = new AllocationService.AllocationServiceClient(channel);

            try {
                var response = await client.AllocateAsync(new AllocationRequest {
                    Namespace           = namespaceArg,
                    MultiClusterSetting = new V1Alpha1.MultiClusterSetting {
                        Enabled = multicluster,
                    }
                });

                Console.WriteLine(response);
            }
            catch (RpcException e)
            {
                Console.WriteLine($"gRPC error: {e}");
            }
        }
示例#12
0
文件: Program.cs 项目: hxw8187/grpc
        static async Task <int> Main(string[] args)
        {
            Console.WriteLine("GrpcClient started.");

            var channelCredentials = new SslCredentials(File.ReadAllText(@"Certs\certificate.crt"));
            var channel            = new Channel($"localhost:{PORT}", channelCredentials);

            var nl           = Environment.NewLine;
            var orgTextColor = Console.ForegroundColor;

            var client = new Client();
            await client.Do(
                channel,
                () =>
            {
                Console.Write($"Connected to server.{nl}ClientId = ");
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write($"{client.ClientId}");
                Console.ForegroundColor = orgTextColor;
                Console.WriteLine($".{nl}Enter string message to server.{nl}" +
                                  $"You will get response if your message will contain question mark '?'.{nl}" +
                                  $"Enter empty message to quit.{nl}");
            },
                () => Console.WriteLine("Shutting down...")
                );

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();

            return(0);
        }
示例#13
0
        private kubemqClient CreateNewClient()
        {
            Channel channel;
            string  kubemqAddress        = GetKubeMQAddress();
            string  clientCertFile       = ConfigurationLoader.GetCertificateFile();
            List <ChannelOption> options = new List <ChannelOption>();

            options.Add(new ChannelOption("grpc.max_receive_message_length", 1024 * 1024 * 1024));
            if (!string.IsNullOrWhiteSpace(clientCertFile))
            {
                // Open SSL/TLS connection
                var channelCredentials = new SslCredentials(File.ReadAllText(clientCertFile));
                channel = new Channel(kubemqAddress, channelCredentials, options);
            }
            else
            {
                // Open Insecure connection
                channel = new Channel(kubemqAddress, ChannelCredentials.Insecure, options);
            }

            _client = new kubemqClient(channel);


            //logger.LogTrace("Opened connection to KubeMQ server (ip:port) {0}", kubemqAddress);

            return(_client);
        }
示例#14
0
        public async Task <ChannelCredentials> Generate(string type, string configuration)
        {
            var sslConfiguration = JsonSerializerHelper.Deserialize <SSLConfiguration>(configuration);
            var cacert           = File.ReadAllText(sslConfiguration.CAFile);

            SslClientCertificateRequestType clientStrategy;

            switch (sslConfiguration.ClientStrategy)
            {
            case 1:
                clientStrategy = SslClientCertificateRequestType.DontRequest;
                break;

            default:
                clientStrategy = SslClientCertificateRequestType.RequestAndRequireAndVerify;
                break;
            }

            SslCredentials sslCredentials;

            if (clientStrategy == SslClientCertificateRequestType.RequestAndRequireAndVerify)
            {
                var servercert = File.ReadAllText(sslConfiguration.ChannelFile);
                var serverkey  = File.ReadAllText(sslConfiguration.KeyFile);
                var keypair    = new KeyCertificatePair(servercert, serverkey);
                sslCredentials = new SslCredentials(cacert, keypair);
            }
            else
            {
                sslCredentials = new SslCredentials(cacert);
            }
            return(await Task.FromResult(sslCredentials));
        }
示例#15
0
        public static void Main(string[] args)
        {
            var callCre = CallCredentials.FromInterceptor(MyAsyncAuthInterceptor);

            var cacert     = File.ReadAllText(@"C:\Sertifika\ca.crt");
            var clientcert = File.ReadAllText(@"C:\Sertifika\client.crt");
            var clientkey  = File.ReadAllText(@"C:\Sertifika\client.key");
            var sslCrd     = new SslCredentials(cacert, new KeyCertificatePair(clientcert, clientkey));

            var crd = ChannelCredentials.Create(sslCrd, callCre);

            channel = new Channel("localhost:50051", crd);
            var channel2 = new Channel("localhost:50052", crd);

            var inv = new MyInvoker(new Channel[] { channel, channel2 });

            var client = new Greeter.GreeterClient(inv);

            while (true)
            {
                var user = Console.ReadLine();

                if (user == "q")
                {
                    break;
                }
                var reply = client.SayHello(new HelloRequest {
                    Name = user
                });
                Console.WriteLine("Greeting: " + reply.Message);
            }

            channel.ShutdownAsync().Wait();
            channel2.ShutdownAsync().Wait();
        }
示例#16
0
        static async Task Main(string[] args)
        {
            string serverCa   = File.ReadAllText("../creds/service.pem");
            string clientKey  = File.ReadAllText("../creds/client.key");
            string clientCert = File.ReadAllText("../creds/client.pem");

            var creds   = new SslCredentials(serverCa, new KeyCertificatePair(clientCert, clientKey));
            var channel = new Channel("localhost:12343", creds);
            var client  = new HelloWorldService.HelloWorldServiceClient(channel);

            try {
                var response = await client.TestAsync(new TestRequest { Query = "mTLS random" });

                Console.WriteLine(response.Message);
            }
            catch (RpcException e)
            {
                Console.WriteLine($"gRPC error: {e.Status.Detail}");
                Console.WriteLine($"{e}");
            }
            catch
            {
                Console.WriteLine($"Unexpected error calling HelloWorldService");
                throw;
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
示例#17
0
        private static void Register()
        {
            Serilog.ILogger serilog = new LoggerConfiguration()
                                      .Enrich.FromLogProxy()
                                      .Destructure.UsingAttributes()
                                      .WriteTo.Seq(EnvVars.SeqAddress())
                                      .CreateLogger();
            Log.Logger = serilog;

            var builder = new ContainerBuilder();

            // SSL gRPC
            var caCrt          = File.ReadAllText(EnvVars.CaCrtPath());
            var sslCredentials = new SslCredentials(caCrt);

            var registrationEngineGrpcChannel = new Channel(
                EnvVars.Target(@"RegistrationEngineHost", @"RegistrationEnginePort"),
                sslCredentials);

            // Create MagicOnion dynamic client proxy
            var registrationEngineGrpcClient = TrackingProxy.Create <IRegistrationEngineGrpc>(registrationEngineGrpcChannel);

            var registrationEngine = LogProxy.Create <IRegistrationEngine>(new RegistrationEngineClient(registrationEngineGrpcClient), serilog, LogType.All);

            builder.RegisterInstance <Serilog.ILogger>(serilog);
            builder.RegisterInstance <IRegistrationEngine>(registrationEngine);
            builder.RegisterType <MembershipManager>().As <IMembershipManager>();
            IContainer container = builder.Build();

            // Set up the service locator
            ServiceLocator.SetLocatorProvider(() => new AutofacServiceLocator(container));

            GrpcEnvironment.SetLogger(new ConsoleLogger());
        }
        public ISender GetSender(ILoggerFactory loggerFactory, Configuration.SenderConfiguration senderConfiguration)
        {
            var logger = loggerFactory.CreateLogger <GrpcSenderFactory>();

            ChannelCredentials credentials;

            if (!string.IsNullOrEmpty(senderConfiguration.GrpcRootCertificate))
            {
                logger.LogDebug("Using TLS gRPC channel with data from the configuration.");

                KeyCertificatePair keypair = null;
                if (!string.IsNullOrEmpty(senderConfiguration.GrpcClientChain) &&
                    !string.IsNullOrEmpty(senderConfiguration.GrpcClientKey))
                {
                    var clientcert = File.ReadAllText(senderConfiguration.GrpcClientChain);
                    var clientkey  = File.ReadAllText(senderConfiguration.GrpcClientKey);
                    keypair = new KeyCertificatePair(clientcert, clientkey);
                }

                var rootcert = File.ReadAllText(senderConfiguration.GrpcRootCertificate);
                credentials = new SslCredentials(rootcert, keypair);
            }
            else
            {
                logger.LogDebug("Using insecure gRPC channel without credentials.");
                credentials = ChannelCredentials.Insecure;
            }

            logger.LogDebug("Using the gRPC Sender to send spans directly to the endpoint.");
            return(new GrpcSender(
                       StringOrDefault(senderConfiguration.GrpcTarget, GrpcSender.DefaultCollectorGrpcTarget),
                       credentials,
                       0 /* max packet size */));
        }
示例#19
0
    private static ChannelCredentials GetRootCertificateCredentials()
    {
        var rootCert  = "";
        var assetPath = UnityEngine.Application.streamingAssetsPath;
        var path      = Path.Combine(assetPath, "ca.crt");

#if UNITY_IOS
        using (var streamReader = new StreamReader(path))
        {
            rootCert = streamReader.ReadToEnd();
        }
#elif UNITY_ANDROID
        var www = new WWW(path);
        while (!www.isDone)
        {
        }

        using (var txtReader = new StringReader(www.text))
        {
            rootCert = txtReader.ReadToEnd();
        }
#else
        rootCert = File.ReadAllText(path);
#endif

        var credentials = new SslCredentials(rootCert);
        return(credentials);
    }
示例#20
0
        static void Main(string[] args)
        {
            // setup the channel
            var     caCert     = File.ReadAllText(@"certs/ca-chain.pem");
            var     clientCert = File.ReadAllText(@"certs/certificate.pem");
            var     clientKey  = File.ReadAllText(@"certs/key.pem");
            var     ssl        = new SslCredentials(caCert, new KeyCertificatePair(clientCert, clientKey));
            Channel channel    = new Channel("grpc.pub1.passkit.io", 443, ssl);

            // run member sample code
            MembersDemo md = new MembersDemo(channel);

            md.RunSamples();

            // run coupon sample code
            CouponsDemo cd = new CouponsDemo(channel);

            cd.RunSamples();

            // run flights sample code
            FlightsDemo fd = new FlightsDemo(channel);

            fd.RunSamples();

            channel.ShutdownAsync().Wait();
        }
示例#21
0
        public BTrDB(string endpoint, string apikey)
        {
            SslCredentials systemCAs = new SslCredentials();

            this.channel = new Channel(endpoint, systemCAs);
            this.client  = new V5Api.BTrDB.BTrDBClient(this.channel);
        }
示例#22
0
        public static void Main(string[] args)
        {
            const int port   = 9000;
            var       cacert = File.ReadAllText("Keys/ca.crt");
            var       cert   = File.ReadAllText("Keys/client.crt");
            var       key    = File.ReadAllText("Keys/client.key");

            var keypair  = new KeyCertificatePair(cert, key);
            var sslCreds = new SslCredentials(cacert, keypair);

            var channel = new Channel("Alexiss-MacBook-Pro.local", port, sslCreds);

            var client = new UserServiceClient(channel);

            Console.WriteLine("--- UNARY CALL ---------------------");
            GetByUserIdAsync(client).Wait();
            Console.WriteLine("------------------------------------");
            Console.WriteLine("--- SERVER STREAMING CALL ----------");
            GetAllAsync(client).Wait();
            Console.WriteLine("------------------------------------");
            Console.WriteLine("--- CLIENT STREAMING CALL ----------");
            AddImageAsync(client).Wait();
            Console.WriteLine("------------------------------------");
            Console.WriteLine("--- BIDIRECTIONAL STREAMING CALL ---");
            SaveAllAsync(client).Wait();
            Console.WriteLine("------------------------------------");
        }
示例#23
0
        private async Task <ChannelCredentials> CreateCredentialsAsync(bool?useTestCaOverride = null)
        {
            var credentials = ChannelCredentials.Insecure;

            if (options.UseTls.GetValueOrDefault())
            {
                credentials = new SslCredentials();
            }

            if (options.TestCase == "jwt_token_creds")
            {
                var googleCredential = await GoogleCredential.GetApplicationDefaultAsync();

                Assert.IsTrue(googleCredential.IsCreateScopedRequired);
                credentials = ChannelCredentials.Create(credentials, googleCredential.ToCallCredentials());
            }

            if (options.TestCase == "compute_engine_creds")
            {
                var googleCredential = await GoogleCredential.GetApplicationDefaultAsync();

                Assert.IsFalse(googleCredential.IsCreateScopedRequired);
                credentials = ChannelCredentials.Create(credentials, googleCredential.ToCallCredentials());
            }
            return(credentials);
        }
示例#24
0
        public async Task ConnectAsync(RobotConnectionInfo connectionInfo)
        {
            if (Client == null)
            {
                //create channel
                var ssl         = new SslCredentials(connectionInfo.Certificate);
                var interceptor = new AsyncAuthInterceptor((context, metadata) =>
                {
                    metadata.Add("authorization", $"Bearer {connectionInfo.Token}");
                    return(Task.CompletedTask);
                });
                var cred = ChannelCredentials.Create(ssl, CallCredentials.FromInterceptor(interceptor));
                _channel = new Channel(connectionInfo.IpAddress, 443, cred, new ChannelOption[] { new ChannelOption("grpc.ssl_target_name_override", connectionInfo.RobotName) });

                //connect to client
                try
                {
                    await _channel.ConnectAsync(DateTime.UtcNow.AddSeconds(10));
                }
                catch (TaskCanceledException ex)
                {
                    throw new VectorConnectionException("could not connect to Vector.  insure IP address is correct and that Vector is turned on", ex);
                }

                //create client
                Client      = new ExternalInterfaceClient(_channel);
                IsConnected = true;
            }
        }
        private void Reset(GrpcClientOptions opt)
        {
#if NETCOREAPP3_1
            var host = new Uri(opt.Url !).Host;
            var port = new Uri(opt.Url !).Port;
            _client = new Client(GrpcChannel.ForAddress(opt.Url !, opt.ChannelOptions !), host, port, opt.ToString());
#else
            if (string.IsNullOrEmpty(opt.PublicKey))
            {
                _client = new Client(new Channel(opt.Host, opt.Port, ChannelCredentials.Insecure), opt.Host !, opt.Port, opt.ToString());
            }
            else
            {
                Channel channel;
                var     ssl = new SslCredentials(opt.PublicKey);
                if (string.IsNullOrEmpty(opt.SslTargetName))
                {
                    channel = new Channel(opt.Host, opt.Port, ssl);
                }
                else
                {
                    var options = new List <ChannelOption>();
                    options.Add(new ChannelOption(ChannelOptions.SslTargetNameOverride, opt.SslTargetName));
                    channel = new Channel(opt.Host, opt.Port, ssl, options);
                }
                _client = new Client(channel, opt.Host !, opt.Port, opt.ToString());
            }
#endif
            _client.Connect();
        }
示例#26
0
        /// <summary>
        /// Creates a channel/client pair with the appropriate options and interceptors.
        /// </summary>
        /// <returns>A tuple of the channel and client</returns>
        private async Task <GrpcClient> CreateClientAsync(DnsEndPoint remoteEndpoint)
        {
            var certificate = await RetrieveServerCertificateAsync(remoteEndpoint);

            if (certificate == null)
            {
                return(null);
            }

            Logger.LogDebug($"Upgrading connection to TLS: {certificate}.");
            ChannelCredentials credentials = new SslCredentials(TlsHelper.ObjectToPem(certificate), _clientKeyCertificatePair);

            var channel = new Channel(remoteEndpoint.ToString(), credentials, new List <ChannelOption>
            {
                new ChannelOption(ChannelOptions.MaxSendMessageLength, GrpcConstants.DefaultMaxSendMessageLength),
                new ChannelOption(ChannelOptions.MaxReceiveMessageLength, GrpcConstants.DefaultMaxReceiveMessageLength),
                new ChannelOption(ChannelOptions.SslTargetNameOverride, GrpcConstants.DefaultTlsCommonName)
            });

            var nodePubkey = AsyncHelper.RunSync(() => _accountService.GetPublicKeyAsync()).ToHex();

            var interceptedChannel = channel.Intercept(metadata =>
            {
                metadata.Add(GrpcConstants.PubkeyMetadataKey, nodePubkey);
                return(metadata);
            }).Intercept(new RetryInterceptor());

            var client = new PeerService.PeerServiceClient(interceptedChannel);

            return(new GrpcClient(channel, client, certificate));
        }
示例#27
0
        public static async Task <GreetingResponse> Execute(string host, int port, GreetingRequest greetingRequest)
        {
            var clientCert = File.ReadAllText("ssl/client.crt");
            var clientKey  = File.ReadAllText("ssl/client.key");
            var caCrt      = File.ReadAllText("ssl/ca.crt");

            var channelCredentials = new SslCredentials(caCrt, new KeyCertificatePair(clientCert, clientKey));

            Channel          channel = null;
            GreetingResponse response;

            try
            {
                channel = new Channel(host, port, channelCredentials);
                await channel.ConnectAsync();

                var client = new GreetingService.GreetingServiceClient(channel);
                response = await client.GreetAsync(greetingRequest, deadline : DateTime.UtcNow.AddMilliseconds(5000));
            }
            catch (Exception)
            {
                // log
                throw;
            }
            finally
            {
                if (channel != null)
                {
                    await channel.ShutdownAsync();
                }
            }

            return(response);
        }
示例#28
0
        static void Main(string[] args)
        {
            Console.WriteLine("Press any key to start...");
            Console.ReadKey();

            var cacert  = File.ReadAllText(CertPath + @"ca.crt");
            var cert    = File.ReadAllText(CertPath + @"client.crt");
            var key     = File.ReadAllText(CertPath + @"client.key");
            var keypair = new KeyCertificatePair(cert, key);
            var creds   = new SslCredentials(cacert, keypair);

            // The host value should be same with COMPUTERNAME in generate_crt_key.bat
            var channel = new Channel("localhost", Port, creds);
            var client  = new PingClient(new PingApi.PingApiClient(channel));

            // Test echo
            client.Ping("sender1", 10L);
            client.Ping("sender2", 100L);
            client.Ping("sender3", 1000L);
            client.Ping("sender4", 10000L);
            client.Ping("sender5", 100000L);
            client.Ping("sender6", 1000000L);

            channel.ShutdownAsync().Wait();
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
示例#29
0
        private async Task <StreamingRecognizeStream> GetGoogleStream(int SampleRate)
        {
            var sslCredentials = new SslCredentials();

            var speechBuilder = new SpeechClientBuilder();

            speechBuilder.ChannelCredentials = sslCredentials;
            //speechBuilder.Endpoint = "google.com/speech-api/";
            var speech        = speechBuilder.Build();
            var streamingCall = speech.StreamingRecognize(CallSettings.FromHeader("x-goog-api-key", ApiKey));

            // Write the initial request with the config.
            await streamingCall.WriteAsync(
                new StreamingRecognizeRequest()
            {
                StreamingConfig = new StreamingRecognitionConfig()
                {
                    Config = new RecognitionConfig()
                    {
                        Encoding                   = RecognitionConfig.Types.AudioEncoding.Linear16,
                        SampleRateHertz            = SampleRate,
                        LanguageCode               = CultureLanguage.ToString(),
                        EnableAutomaticPunctuation = false,
                        AudioChannelCount          = 1,
                        UseEnhanced                = true
                    },
                    InterimResults = false,
                }
            });

            return(streamingCall);
        }
示例#30
0
        public ChatServiceClient()
        {
            // Locate required files and set true to enable SSL
            var secure = false;

            if (secure)
            {
                // create secure channel
                var serverCACert = File.ReadAllText(@"C:\localhost_server.crt");
                var clientCert   = File.ReadAllText(@"C:\localhost_client.crt");
                var clientKey    = File.ReadAllText(@"C:\localhost_clientkey.pem");
                var keyPair      = new KeyCertificatePair(clientCert, clientKey);
                var credentials  = new SslCredentials(serverCACert, keyPair);

                // Client authentication is an option. You can remove it as follows if you only need SSL.
                //var credentials = new SslCredentials(serverCACert);

                m_client = new Chat.ChatClient(
                    new Channel("localhost", 50052, credentials));
            }
            else
            {
                // create insecure channel
                m_client = new Chat.ChatClient(
                    new Channel("localhost", 50052, ChannelCredentials.Insecure));
            }
        }