public async Task ExecuteCallbackQueryAsync(long chatId, int messageId, string callbackQueryId, string payload) { _storageService.AddOrUpdate(StorageKeys.BotCurrentState, BotStateType.FirewallCreateWaitingEnterName); await _telegramBotClient.DeleteMessageAsync( chatId : chatId, messageId : messageId); await _telegramBotClient.SendTextMessageAsync( chatId : chatId, text : FirewallMessage.GetEnterNameMessage()); }
public async Task ExecuteCommandAsync(Message message) { var firewallId = _storageService.Get <string>(StorageKeys.FirewallId); if (!string.IsNullOrEmpty(firewallId)) { _storageService.AddOrUpdate(StorageKeys.BotCurrentState, BotStateType.FirewallUpdateWaitingEnterInboundRule); await _telegramBotClient.SendTextMessageAsync( chatId : message.Chat.Id, text : FirewallMessage.GetEnterBoundRuleMessage(), parseMode : ParseMode.Html); } }
private async Task EnterName(Message message) { var newFirewall = new FirewallRequest { Name = message.Text }; _storageService.AddOrUpdate(StorageKeys.NewFirewall, newFirewall); _storageService.AddOrUpdate(StorageKeys.BotCurrentState, BotStateType.FirewallCreateWaitingEnterInboundRule); await _telegramBotClient.SendTextMessageAsync( chatId : message.Chat.Id, text : FirewallMessage.GetEnterBoundRuleMessage("inbound"), parseMode : ParseMode.Html); }
public async Task ExecuteHandlerAsync(Message message) { var firewallId = _storageService.Get <string>(StorageKeys.FirewallId); if (string.IsNullOrEmpty(firewallId)) { return; } var outboundRules = new List <OutboundRule>(); var invalidRules = new List <string>(); var rules = message.Text.Split(";"); var regExp = new Regex(RegExpPatterns.NetworkAddress); foreach (var rule in rules) { var resultMatch = regExp.Match(rule); if (resultMatch.Success) { var inboundRule = new OutboundRule { Protocol = resultMatch.Groups[1].Value, Ports = resultMatch.Groups[2].Value, Destinations = new SourceLocation { Addresses = new List <string> { $"{resultMatch.Groups[3].Value}/{resultMatch.Groups[4].Value}" } } }; outboundRules.Add(inboundRule); } else { invalidRules.Add(rule); } } if (outboundRules.Count > 0) { await _digitalOceanClient.Firewalls.AddRules(firewallId, new FirewallRules { OutboundRules = outboundRules }); await _telegramBotClient.SendTextMessageAsync( chatId : message.Chat.Id, text : FirewallMessage.GetCreatedBoundRulesMessage(outboundRules.Count), parseMode : ParseMode.Markdown); } if (invalidRules.Count > 0) { await _telegramBotClient.SendTextMessageAsync( chatId : message.Chat.Id, text : FirewallMessage.GetInvalidBoundRulesMessage(invalidRules), parseMode : ParseMode.Html); } _storageService.AddOrUpdate(StorageKeys.BotCurrentState, BotStateType.None); }