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"); } }
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"); }