Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override Task <NewPassReply> NewPass(NewPassRequest request, ServerCallContext context)
        {
            var person = _mediator.Send(new NewPassQuery(request.Rut));

            if (person.Result.ERROR == TechnicalResponse.ErrorCode.None)
            {
                var channel = GrpcChannel.ForAddress(_configuration.GetSection("Mail").GetSection("url").Value);
                var client  = new Mailer.MailerClient(channel);

                var reply = client.MailChagedPassword(new MailRequest
                {
                    CuentaDestino = person.Result.CORREO_ELECTRONICO,
                    Nombre        = person.Result.NOMBRE_COMPLETO,
                    IdPersona     = person.Result.ID_PER,
                    CodEmail      = 1
                });

                var error = reply.Error; //Que se hace con el error
            }

            return(Task.FromResult(new NewPassReply
            {
                //Error = (ErrorCode)person.Result.ERROR
            }));
        }
Beispiel #2
0
        public MailService(ILogger <MailService> logger, IConfiguration configuration)
        {
            _logger = logger;

            // Setup gRPC server connection to mail sevrver.
            var channel = GrpcChannel.ForAddress(configuration["MailServerAddr"]);

            _grpcClinet = new Mailer.MailerClient(channel);
        }
Beispiel #3
0
        static async Task Main(string[] args)
        {
            var mailboxName = GetMailboxName(args);

            // Server will only support Https on Windows and Linux
            var credentials = RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? ChannelCredentials.Insecure : ClientResources.SslCredentials;

            var channel = new Channel("localhost:50051", credentials);

            Console.WriteLine($"Connecting to mailbox '{mailboxName}'");
            Console.WriteLine();

            await channel.ConnectAsync();

            Console.WriteLine("Connected");
            Console.WriteLine("Press escape to disconnect. Press any other key to forward mail.");

            var client = new Mailer.MailerClient(channel);

            using (var mailbox = client.Mailbox(headers: new Metadata {
                new Metadata.Entry("mailbox-name", mailboxName)
            }))
            {
                _ = Task.Run(async() =>
                {
                    while (await mailbox.ResponseStream.MoveNext(CancellationToken.None))
                    {
                        var response = mailbox.ResponseStream.Current;

                        Console.ForegroundColor = response.Reason == MailboxMessage.Types.Reason.Received ? ConsoleColor.White : ConsoleColor.Green;
                        Console.WriteLine();
                        Console.WriteLine(response.Reason == MailboxMessage.Types.Reason.Received ? "Mail received" : "Mail forwarded");
                        Console.WriteLine($"New mail: {response.New}, Forwarded mail: {response.Forwarded}");
                        Console.ResetColor();
                    }
                });

                while (true)
                {
                    var result = Console.ReadKey(intercept: true);
                    if (result.Key == ConsoleKey.Escape)
                    {
                        break;
                    }

                    await mailbox.RequestStream.WriteAsync(new ForwardMailMessage());
                }

                await mailbox.RequestStream.CompleteAsync();
            }

            Console.WriteLine("Disconnecting");
            await channel.ShutdownAsync();

            Console.WriteLine("Disconnected. Press any key to exit.");
            Console.ReadKey();
        }
Beispiel #4
0
        private void InitDBMailQueue(CancellationToken stoppingToken)
        {
            var _client = new Mailer.MailerClient(_dbGrpcChannel.Channel);

            foreach (var type in Enum.GetValues <DBMailQueueType>())
            {
                var proxy = new DBMailCallProxy(_client, _dbMailQueueRepository, type, _logger);
                proxy.Start();
                _dbMailCallProxies.Add(proxy);
            }
        }
Beispiel #5
0
        static async Task Main(string[] args)
        {
            var mailboxName = GetMailboxName(args);

            Console.WriteLine($"Creating client to mailbox '{mailboxName}'");
            Console.WriteLine();

            var channel = GrpcChannel.ForAddress("https://localhost:5001");
            var invoker = channel.Intercept(new ClientLoggerInterceptor());
            var client  = new Mailer.MailerClient(invoker);

            Console.WriteLine("Client created.");
            Console.WriteLine("Press escape to disconnect. Press any other key to forward mail.");

            using (var call = client.Mailbox(headers: new Grpc.Core.Metadata {
                new Metadata.Entry("mailbox-name", mailboxName)
            }))
            {
                var responseTask = Task.Run(async() =>
                {
                    await foreach (var message in call.ResponseStream.ReadAllAsync())
                    {
                        Console.ForegroundColor = message.Reason == MailboxMessage.Types.Reason.Received ? ConsoleColor.White : ConsoleColor.Green;
                        Console.WriteLine();
                        Console.WriteLine(message.Reason == MailboxMessage.Types.Reason.Received ? "Mail received" : "Mail forwarded");
                        Console.WriteLine($"New mail:{message.New},Forwarded mail:{message.Forwarded}");
                        Console.ResetColor();
                    }
                });

                while (true)
                {
                    var result = Console.ReadKey(intercept: true);
                    if (result.Key == ConsoleKey.Escape)
                    {
                        break;
                    }

                    await call.RequestStream.WriteAsync(new ForwardMailMessage());
                }

                Console.WriteLine("Disconnecting");
                await call.RequestStream.CompleteAsync();

                await responseTask;
            }



            Console.WriteLine("Disconnected. Press any key to exit...");
            Console.ReadKey();
        }
        public DBMailCallProxy(Mailer.MailerClient client,
                               DBMailQueueRepository dbMailQueueRepository,
                               DBMailQueueType type,
                               ILogger logger)
        {
            _client = client;
            _dbMailQueueRepository = dbMailQueueRepository;
            _type        = type;
            _logger      = logger;
            _mailChannel = Channel.CreateUnbounded <MailPacket>();
            var outgoMailQueue = _dbMailQueueRepository.GetOrAddOutgoMailQueue(_type);

            outgoMailQueue.OnRead += OnRead;
            EventCancelled        += OnCancelled;
        }
Beispiel #7
0
        public override async Task OnConnectedAsync()
        {
            var userId       = long.Parse(Context.UserIdentifier);
            var nickname     = Context.User.FindFirst("nickname").Value;
            var headicon     = Context.User.FindFirst("headicon").Value;
            var mailMetadata = new Mail.MailMetadata {
                UserId = userId, NickName = nickname, HeadIcon = headicon
            };

            var _client = new Mailer.MailerClient(ChannelService.Channel);
            var _call   = _client.Mailbox(headers: new Metadata {
                new Metadata.Entry("mailbox-name", "agent"),
                new Metadata.Entry("metadata" + Metadata.BinaryHeaderSuffix, mailMetadata.ToByteArray())
            });

            Context.Items.Add("_client", _client);
            Context.Items.Add("_call", _call);

            var CancellationToken = Context.ConnectionAborted;
            var ConnectionId      = Context.ConnectionId;
            var HttpContext       = Context.GetHttpContext();

            _ = Task.Run(async() =>
            {
                await foreach (var message in _call.ResponseStream.ReadAllAsync())
                {
                    var packet = new NetPacket {
                        Id = message.Id, Content = message.Content.ToBase64(), Reserve = message.Reserve
                    };
                    await _hubContext.Clients.Client(ConnectionId).SendAsync("StoCMessage", packet);
                    if (message.Id == 999999)
                    {
                        break;
                    }
                }

                if (!CancellationToken.IsCancellationRequested)
                {
                    HttpContext.Abort();
                }
                //Console.ForegroundColor = ConsoleColor.Green;
                //Console.WriteLine("!!!end");
                //Console.ResetColor();
            });

            await base.OnConnectedAsync();
        }
Beispiel #8
0
        public async Task <IActionResult> NewPass(int rut)
        {
            var person = await mediator.Send(new NewPassQuery(rut));

            await GrpcCallerService.CallService(_urls.GrpcMail, channel =>
            {
                var client = new Mailer.MailerClient(channel);
                client.MailChagedPassword(new MailRequest
                {
                    CuentaDestino = person.CORREO_ELECTRONICO,
                    Nombre        = person.NOMBRE_COMPLETO,
                    IdPersona     = person.ID_PER,
                    CodEmail      = 1
                });

                return(Task.CompletedTask);
            });

            return(Ok(person));
        }
Beispiel #9
0
 /// <summary>
 /// API constructor
 /// </summary>
 protected EmailClient(GrpcChannel channel)
 {
     m_channel = channel;
     m_client  = new Mailer.MailerClient(m_channel);
 }