Exemple #1
0
        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);
     }
 }
Exemple #3
0
 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)
            {
            }
        }