Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public HighlightCount(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
     if (!int.TryParse(configuration["MaxHighlightCount"], out maxHighlightCount))
     {
         maxHighlightCount = 5;
     }
 }
Esempio n. 4
0
 public SpamFilter(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
     opsignalChannel = configuration["OpsignalChannel"];
     if (string.IsNullOrWhiteSpace(opsignalChannel) || !opsignalChannel.StartsWith('#'))
     {
         opsignalChannel = null;
     }
 }
Esempio n. 5
0
        protected Action(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
        {
            this.irc   = irc;
            this.nexmo = nexmo;

            reportChannel = configuration["OperChannel"];
            if (string.IsNullOrWhiteSpace(reportChannel))
            {
                reportChannel = "#opers";
            }
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        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;
        }
Esempio n. 9
0
 public SessionTracker(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
     nicksOnIps = new ConcurrentDictionary <string, HashSet <NickInfo> >();
 }
Esempio n. 10
0
 protected Command(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
 }
Esempio n. 11
0
 public FailedOperFilter(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
 }
Esempio n. 12
0
 protected ChannelAction(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
     this.irc   = irc;
     killReason = configuration["KillReason"];
 }
Esempio n. 13
0
 protected NoticeAction(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
 }
Esempio n. 14
0
 public Fetch(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
 }
Esempio n. 15
0
 public Debug(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
     this.irc = irc;
 }
Esempio n. 16
0
 public KillFilter(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
 }
Esempio n. 17
0
 public Part(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
     this.irc           = irc;
     this.configuration = configuration;
 }
Esempio n. 18
0
 public ZalgoProctection(IrcLayer irc, NexmoClient nexmo, IConfiguration configuration)
     : base(irc, nexmo, configuration)
 {
 }