private void DeleteIgnoredUnit() { if (Ignored.Contains(Name)) { Ignored.Remove(Name); } }
public void RemoveIgnored(ChatUser user) { if (IsIgnored(user)) { Ignored.Remove(user); user.Ignoring.Remove(this); SendMessage(24, user.Username); // You are no longer ignoring %1. if (Ignored.Count == 0) { SendMessage(26); // You are no longer ignoring anyone. } } else { SendMessage(25, user.Username); // You are not ignoring %1. } }
/// <summary> /// Packets handled in this function are 'internal' and cannot be overriden. /// </summary> internal bool HandlePacket(PacketEventArgs e) { if (IsCaptcha) { switch ((AresId)e.Packet.Id) { case AresId.MSG_CHAT_CLIENT_FASTPING: FastPing = true; return(true); case AresId.MSG_CHAT_CLIENT_DUMMY: return(true); case AresId.MSG_CHAT_CLIENT_AUTOLOGIN: AutoLogin login = (AutoLogin)e.Packet; AresCommands.HandleAutoLogin(server, this, login.Sha1Password); return(true); case AresId.MSG_CHAT_CLIENT_PUBLIC: ClientPublic pub = (ClientPublic)e.Packet; FinishCaptcha(pub.Message); return(true); case AresId.MSG_CHAT_CLIENT_EMOTE: ClientEmote emote = (ClientEmote)e.Packet; FinishCaptcha(emote.Message); return(true); case AresId.MSG_CHAT_CLIENT_ADDSHARE: return(true); case AresId.MSG_CHAT_CLIENT_UPDATE_STATUS: ClientUpdate update = (ClientUpdate)e.Packet; LastUpdate = DateTime.Now; NodeIp = update.NodeIp; NodePort = update.NodePort; return(true); default: break; } return(false); } else if (LoggedIn) { switch ((AresId)e.Packet.Id) { case AresId.MSG_CHAT_CLIENT_FASTPING: FastPing = true; return(true); case AresId.MSG_CHAT_CLIENT_DUMMY: return(true); case AresId.MSG_CHAT_CLIENT_PUBLIC: ClientPublic pub = (ClientPublic)e.Packet; if (AresCommands.HandlePreCommand(server, this, pub.Message)) { return(true); } if (Muzzled) { server.SendAnnounce(this, Strings.AreMuzzled); return(true); } break; case AresId.MSG_CHAT_CLIENT_EMOTE: ClientEmote emote = (ClientEmote)e.Packet; if (AresCommands.HandlePreCommand(server, this, emote.Message)) { return(true); } if (Muzzled) { server.SendAnnounce(this, Strings.AreMuzzled); return(true); } break; case AresId.MSG_CHAT_CLIENT_COMMAND: Command cmd = (Command)e.Packet; if (AresCommands.HandleCommand(server, this, cmd.Message)) { return(true); } break; case AresId.MSG_CHAT_CLIENT_PVT: Private pvt = (Private)e.Packet; if (Muzzled && !server.Config.MuzzledPMs) { pvt.Message = "[" + Strings.AreMuzzled + "]"; SendPacket(pvt); return(true); } break; case AresId.MSG_CHAT_CLIENT_AUTHREGISTER: { AuthRegister reg = (AuthRegister)e.Packet; AresCommands.HandleRegister(server, this, reg.Password); return(true); } case AresId.MSG_CHAT_CLIENT_AUTHLOGIN: { AuthLogin login = (AuthLogin)e.Packet; AresCommands.HandleLogin(server, this, login.Password); return(true); } case AresId.MSG_CHAT_CLIENT_AUTOLOGIN: { AutoLogin login = (AutoLogin)e.Packet; AresCommands.HandleAutoLogin(server, this, login.Sha1Password); return(true); } case AresId.MSG_CHAT_CLIENT_ADDSHARE: return(true); case AresId.MSG_CHAT_CLIENT_IGNORELIST: Ignored ignore = (Ignored)e.Packet; if (ignore.Ignore) { lock (Ignored) { if (!Ignored.Contains(ignore.Username)) { Ignored.Add(ignore.Username); server.SendAnnounce(this, String.Format(Strings.Ignored, ignore.Username)); } } } else { lock (Ignored) { if (Ignored.Contains(ignore.Username)) { Ignored.Remove(ignore.Username); server.SendAnnounce(this, String.Format(Strings.Unignored, ignore.Username)); } } } return(true); case AresId.MSG_CHAT_CLIENT_UPDATE_STATUS: ClientUpdate update = (ClientUpdate)e.Packet; LastUpdate = DateTime.Now; NodeIp = update.NodeIp; NodePort = update.NodePort; server.SendPacket((s) => s.Vroom == Vroom && s.CanSee(this), new ServerUpdate(this)); return(true); case AresId.MSG_CHAT_CLIENT_DIRCHATPUSH: ClientDirectPush push = (ClientDirectPush)e.Packet; if (Encoding.UTF8.GetByteCount(push.Username) < 2) { SendPacket(new DirectPushError(4)); return(true); } if (push.TextSync.Length < 16) { SendPacket(new DirectPushError(3)); return(true); } IClient target = server.FindUser(s => s.Name == push.Username); if (target == null) { SendPacket(new DirectPushError(1)); return(true); } if (target.Ignored.Contains(Name)) { SendPacket(new DirectPushError(2)); return(true); } SendPacket(new DirectPushError(0)); server.SendPacket(target, new ServerDirectPush(this, push)); return(true); case AresId.MSG_CHAT_CLIENT_BROWSE: SendPacket(new BrowseError(((Browse)e.Packet).BrowseId)); return(true); case AresId.MSG_CHAT_CLIENT_SEARCH: SendPacket(new SearchEnd(((Search)e.Packet).SearchId)); return(true); case AresId.MSG_CHAT_CLIENTCOMPRESSED: { Compressed packet = (Compressed)e.Packet; byte[] payload = Zlib.Decompress(packet.Data); var reader = new PacketReader(payload) { Position = 0L }; while (reader.Remaining >= 3) { ushort count = reader.ReadUInt16(); byte id = reader.ReadByte(); IPacket msg = Socket.Formatter.Unformat(id, reader.ReadBytes(count)); OnPacketReceived(Socket, new PacketEventArgs(msg, WebSocketMessageType.Binary, 0)); } break; } default: break; } return(false);//wasn't handled } else { //not captcha, not logged, error? Logging.Info("AresClient", "Client {0} sent {1} before logging in.", this.ExternalIp, e.Packet.Id); return(true); } }