Exemple #1
0
        private async Task GetFirewalls(Message message)
        {
            await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, "\U0001F4C0 Loading your firewalls...", replyMarkup : Keyboards.GetFirewallMenuKeyboard());

            var digitalOceanApi = _digitalOceanClientFactory.GetInstance(message.From.Id);
            var firewalls       = await digitalOceanApi.Firewalls.GetAll();

            if (firewalls.Count > 0)
            {
                _sessionRepo.Update(message.From.Id, session =>
                {
                    session.Data  = firewalls;
                    session.State = SessionState.FirewallsMenu;
                });

                var droplets = await digitalOceanApi.Droplets.GetAll();

                var page      = _pageFactory.GetInstance <FirewallPage>(droplets);
                var pageModel = page.GetPage(message.From.Id, 0);

                var sendMessage = await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, pageModel.Message, ParseMode.Markdown, replyMarkup : pageModel.Keyboard);

                _handlerCallbackRepo.Update(message.From.Id, callback =>
                {
                    callback.MessageId   = sendMessage.MessageId;
                    callback.UserId      = message.From.Id;
                    callback.HandlerType = GetType().FullName;
                });
            }
            else
            {
                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, "You dont have a firewalls \U0001F914");
            }
        }
Exemple #2
0
        private async Task AddInboundRule(Message message)
        {
            await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, "\U0001F4C0 Adding inbound rule...", replyMarkup : Keyboards.GetFirewallMenuKeyboard());

            var session      = _sessionRepo.Get(message.From.Id);
            var inboundRules = new List <InboundRule>();
            var userRules    = message.Text.Split(';');

            foreach (var rule in userRules)
            {
                var ruleData = rule.Split(':');
                if (ruleData.Length == 3)
                {
                    var inboundRule = new InboundRule
                    {
                        Protocol = ruleData[0],
                        Ports    = ruleData[1],
                        Sources  = new SourceLocation
                        {
                            Addresses = ruleData[2].Split(',').ToList()
                        }
                    };

                    inboundRules.Add(inboundRule);
                }
                else
                {
                    await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, $"Invalid rule: {rule.Replace(".", "\\.")}\nPlease, try again");

                    return;
                }
            }

            var digitalOceanApi = _digitalOceanClientFactory.GetInstance(message.From.Id);
            await digitalOceanApi.Firewalls.AddRules((string)session.Data, new FirewallRules
            {
                InboundRules = inboundRules
            });

            await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, $"Done \U00002705");
        }