public void AddHandler(object sender, ReceivedChannelModeEventArgs e) { List <HostMask> list = GetList(e.Channel); if (list.Count > e.Server.Settings.MaximumListSize && (!e.Channel.HasFlag("LongLists") || list.Count > e.Server.Settings.MaximumLongListSize)) { e.User.SendNumeric(Numerics.ERR_BANLISTFULL, "That list is full. Contact a network operator to override this."); e.Cancel(); return; } HostMask mask = HostMask.Parse(e.Argument); if ((mask.Nickname == null || mask.Username == null || mask.Hostname == null) && mask.Account == null) { e.User.SendNumeric(Numerics.ERR_BADMASK, "List entries must be fully qualified hostmasks."); e.Cancel(); return; } if (list.Contains(mask)) { e.Cancel(); return; } list.Add(mask); }
protected UserSurrogate(HostMask mask, Authorizations level) { Mask = mask; Level = Level; Password = null; LastSeen = DateTime.MaxValue; Modes = new Dictionary<Modes, string>(); Properties = new Dictionary<string, object>(); Flags = new List<string>(); }
protected UserSurrogate(HostMask mask, Authorizations level) { Mask = mask; Level = Level; Password = null; LastSeen = DateTime.MaxValue; Modes = new Dictionary <Modes, string>(); Properties = new Dictionary <string, object>(); Flags = new List <string>(); }
public void RemoveHandler(object sender, ReceivedChannelModeEventArgs e) { List <HostMask> list = GetList(e.Channel); HostMask mask = HostMask.Parse(e.Argument); if (!list.Remove(mask)) { e.Cancel(); } }
protected UserBase(ServerBase server, Locations location, HostMask mask, Authorizations level) : base(mask, level) { Server = server; Location = location; Channels = new Dictionary <string, ChannelBase>(); SessionFlags = new List <string>(); if (mask.Nickname != "*" && mask.Nickname != null) { Id = mask.Nickname.ToLower(); } }
private void AcceptClient(TcpClient client, ListenerInfo info) { IPEndPoint ep = (IPEndPoint)client.Client.RemoteEndPoint; if (IsKLined(ep.Address)) { Console.WriteLine("Client is K:lined! Dropping."); client.Close(); return; } string ip = ep.Address.ToString(); HostMask mask = HostMask.Parse("*!:" + ep.Port + "@" + ip); mask.Account = "/" + ip; LocalUser user = new LocalUser(this, client, mask, info.Binding.Protocol == Protocols.Rfc2812 ? false : true); user.Start(); UsersByMask.Add(user.Mask, user); }
public LocalUser(Server server, TcpClient client, HostMask mask, bool encrypted) : base(server, Locations.Local, mask, Authorizations.Connecting) { Server = server; Client = client; PingTimer = new Timer(PingProc); Encrypted = encrypted; if (encrypted) { IsAuthenticated = false; Stream = new SafeStream(client.GetStream(), Server.Certificates.Certificate); } else { IsAuthenticated = true; Stream = new SafeStream(client.GetStream(), null); } PingTimer = new Timer(PingProc); OnPing(); Initialize(); }
protected User(Server server, Locations location, HostMask mask, Authorizations level) : base(server, location, mask, level) { }