public void NickCommand(Client client, string newNick) { foreach (Client cli in MainClass.Server.Clients) { if (cli.NickName == newNick) { client.Send(MessageGeneration.GenerateError("Nick " + newNick + " is already taken")); return; } } string oldNick = client.NickName; MainClass.Server.Clients.Remove(client); client.NickName = newNick; MainClass.Server.Clients.Add(client); if (oldNick != null && oldNick != "") { foreach (KeyValuePair<string, Channel> chan in client.Channels) { SendToChannel(chan.Value, MessageGeneration.GenerateNick(chan.Key, oldNick, newNick), client, true); chan.Value.Clients.Remove(oldNick); chan.Value.Clients.Add(newNick, client); if (chan.Value.OpUsers.ContainsKey(oldNick)) { chan.Value.OpUsers.Remove(oldNick); chan.Value.OpUsers.Add(newNick, client); } } } }
public void SendToUser(string user, string message, Client sender) { try { foreach (Client client in MainClass.Server.Clients) { if (client.NickName == user) { client.Send(message); return; } } sender.Send(MessageGeneration.GenerateError("No such user " + user)); } catch (IOException ex) { Console.WriteLine(ex.Message); } }
public void MotdCommand(Client client, string motdPath) { foreach (string line in File.ReadAllLines(motdPath)) client.Send(MessageGeneration.GenerateMotd(line)); }
public void Handle(Client client, string text) { client.CountedMilliseconds = client.Time.ElapsedMilliseconds; var parts = text.Split(' '); try { if ((client.NickName == null || client.NickName == "") && (parts[0] != "NICK" && parts[0] != "REGISTER")) { client.Send(MessageGeneration.GenerateError("Must set nick first with NICK [NICK] or /NICK [NICK]")); return; } switch (parts[0]) { case "REGISTER": case "NICK": NickCommand(client, parts[1]); break; case "PRIVMSG": PrivmsgCommand(client, parts[1], substringStringArray(parts, 2)); break; case "JOIN": JoinCommand(client, parts[1]); break; case "PART": PartCommand(client, parts[1], substringStringArray(parts, 2)); break; case "NAMES": NamesCommand(client, parts[1]); break; case "TOPIC": if (parts.Length >= 3) TopicCommand(client, parts[1], substringStringArray(parts, 2)); else TopicCommand(client, parts[1]); break; case "WHOIS": WhoisCommand(client, parts[1]); break; case "KICK": KickCommand(client, parts[1], parts[2], substringStringArray(parts, 3)); break; case "BAN": BanCommand(client, parts[1], parts[2]); break; case "UNBAN": UnBanCommand(client, parts[1], parts[2]); break; case "LIST": ListCommand(client); break; case "CHANOP": ChanOpCommand(client, parts[1], parts[2], parts[3]); break; case "NETOP": NetOpCommand(client, parts[1]); break; } } catch (NullReferenceException ex) { } }