public FloodProtector(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { if (Instance != null) { throw new Exception("Can only instantiate one FloodProtector"); } Instance = this; this.irc = irc; if (!int.TryParse(configuration["FloodProtectionRate"], out rate)) { rate = 3; } if (!int.TryParse(configuration["FloodProtectionTime"], out per)) { per = 5; } if (!int.TryParse(configuration["FloodProtectionBanDuration"], out muteDuration)) { muteDuration = 5; } muteDuration *= 60 * 1000; // convert minutes to milliseconds irc.Connected += IrcOnConnected; irc.Disconnected += IrcOnDisconnected; }
public static IEnumerable <ChannelAction> GetAll(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) { yield return(new FloodProtector(irc, nexmo, configuration)); yield return(new HighlightCount(irc, nexmo, configuration)); //yield return new ZalgoProctection(irc, nexmo); }
public HighlightCount(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { if (!int.TryParse(configuration["MaxHighlightCount"], out maxHighlightCount)) { maxHighlightCount = 5; } }
public SpamFilter(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { opsignalChannel = configuration["OpsignalChannel"]; if (string.IsNullOrWhiteSpace(opsignalChannel) || !opsignalChannel.StartsWith('#')) { opsignalChannel = null; } }
protected Action(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) { this.irc = irc; this.nexmo = nexmo; reportChannel = configuration["OperChannel"]; if (string.IsNullOrWhiteSpace(reportChannel)) { reportChannel = "#opers"; } }
public static IEnumerable <Command> GetAll(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) { yield return(new Fetch(irc, nexmo, configuration)); yield return(new Join(irc, nexmo, configuration)); yield return(new Part(irc, nexmo, configuration)); yield return(new Mute(irc, nexmo, configuration)); yield return(new Unmute(irc, nexmo, configuration)); yield return(new Debug(irc, nexmo, configuration)); }
public static IEnumerable <NoticeAction> GetAll(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) { yield return(new BanFilter(irc, nexmo, configuration)); yield return(new ExpireFilter(irc, nexmo, configuration)); yield return(new FailedOperFilter(irc, nexmo, configuration)); yield return(new KillFilter(irc, nexmo, configuration)); yield return(new OperServFilter(irc, nexmo, configuration)); yield return(new SpamFilter(irc, nexmo, configuration)); yield return(new SessionTracker(irc, nexmo, configuration)); }
public async Task Run() { var nickName = configuration["NickName"]; var userName = configuration["UserName"]; var realName = configuration["RealName"]; var channels = configuration["Channels"].Split(',').Select(x => x.Trim()).ToList(); ircLayer = new IrcLayer(configuration); var server = configuration["Server"]; if (string.IsNullOrWhiteSpace(server)) { throw new Exception("No server given"); } var hasPort = int.TryParse(configuration["Port"], out var port); bool.TryParse(configuration["UseSsl"], out var useSsl); if (!hasPort) { port = useSsl ? 6697 : 6667; } nexmo = new NexmoClient(configuration); noticeActions.AddRange(NoticeAction.GetAll(ircLayer, nexmo, configuration)); channelActions.AddRange(ChannelAction.GetAll(ircLayer, nexmo, configuration)); channelCommands.AddRange(Command.GetAll(ircLayer, nexmo, configuration)); ircLayer.OnMessageReceived += IrcLayerOnOnMessageReceived; ircLayer.OnNoticeReceived += IrcLayerOnOnNoticeReceived; ircLayer.OnQueryReceived += IrcLayerOnOnQueryReceived; ircLayer.Disconnected += IrcLayerDisconnected; await ircLayer.Connect(server, port, useSsl, nickName, userName, realName, channels); IsConnected = true; }
public SessionTracker(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { nicksOnIps = new ConcurrentDictionary <string, HashSet <NickInfo> >(); }
protected Command(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { }
public FailedOperFilter(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { }
protected ChannelAction(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { this.irc = irc; killReason = configuration["KillReason"]; }
protected NoticeAction(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { }
public Fetch(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { }
public Debug(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { this.irc = irc; }
public KillFilter(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { }
public Part(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { this.irc = irc; this.configuration = configuration; }
public ZalgoProctection(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration) : base(irc, nexmo, configuration) { }