private void handleUnban(BroadcastChatClient client, string channel, string target) { if (!server.Channels.ContainsKey(channel)) { client.SendErrorNoChannel(channel); } else if (!server.Channels[channel].Clients.ContainsKey(client.Nick)) { client.SendErrorNotInChannel(channel); } else if (!server.Channels[channel].Clients.ContainsKey(target)) { client.SendErrorUserNotInChannel(channel, target); } else if (!server.Channels[channel].OperClients.ContainsKey(client.Nick)) { client.SendErrorNotChanOper(channel, target); } else if (!server.Channels[channel].BannedClients.ContainsKey(target)) { client.SendErrorUserAlreadyBanned(channel, target); } else { server.Channels[channel].SendUnban(client.Nick, target); } }
private void handleLeave(BroadcastChatClient client, string channel, string reason) { if (!client.Channels.ContainsKey(channel)) { client.SendErrorNotInChannel(channel); } else if (!server.Channels.ContainsKey(channel)) { client.SendErrorNoChannel(channel); } else { server.Channels[channel].SendLeave(client.Nick, reason); client.Channels.Remove(channel); } }
private void handleTopic(BroadcastChatClient client, string channel, string newTopic) { if (!server.Channels.ContainsKey(channel)) { client.SendErrorNoChannel(channel); } else if (!server.Channels[channel].Clients.ContainsKey(client.Nick)) { client.SendErrorNotInChannel(channel); } else if (!server.Channels[channel].OperClients.ContainsKey(client.Nick)) { client.SendErrorNotChanOper(channel, client.Nick); } else { server.Channels[channel].SendTopic(client, newTopic); } }
private void handleChanMsg(BroadcastChatClient client, string channel, string message) { if (!server.Channels.ContainsKey(channel)) { client.SendErrorNoChannel(channel); } else if (!client.Channels.ContainsKey(channel)) { client.SendErrorNotInChannel(channel); } else if (server.Channels[channel].BannedClients.ContainsKey(client.Nick)) { client.SendErrorBanned(channel); } else { server.Channels[channel].SendChanMsg(client.Nick, message); } }
private void handleUserList(BroadcastChatClient client, string channel) { if (!server.Channels.ContainsKey(channel)) { client.SendErrorNoChannel(channel); } else if (!client.Channels.ContainsKey(channel)) { client.SendErrorNotInChannel(channel); } else { StringBuilder sb = new StringBuilder(); foreach (string cl in server.Channels[channel].Clients.Keys) { sb.AppendFormat(server.Channels[channel].OperClients.ContainsKey(cl) ? "@{0} " : "{0} ", cl); } client.SendUserList(channel, sb.ToString()); } }
private void handleBanList(BroadcastChatClient client, string channel) { if (!server.Channels.ContainsKey(channel)) { client.SendErrorNoChannel(channel); } else if (!server.Channels[channel].Clients.ContainsKey(client.Nick)) { client.SendErrorNotInChannel(channel); } else { StringBuilder sb = new StringBuilder(); foreach (string nick in server.Channels[channel].BannedClients.Keys) { sb.AppendFormat("{0} ", nick); } client.SendBanList(channel, sb.ToString()); } }
private void handleChanOper(BroadcastChatClient client, string channel, string mod, string target) { if (!server.Channels.ContainsKey(channel)) { client.SendErrorNoChannel(channel); } else if (!server.Channels[channel].Clients.ContainsKey(client.Nick)) { client.SendErrorNotInChannel(channel); } else if (!server.Channels[channel].OperClients.ContainsKey(client.Nick)) { client.SendErrorNotChanOper(channel, client.Nick); } else if (mod.ToUpper() == "GIVE") { if (server.Channels[channel].OperClients.ContainsKey(target)) { client.SendErrorAlreadyChanOper(channel, target); } else { server.Channels[channel].SendChanOperGive(client, target); } } else if (mod.ToUpper() == "TAKE") { if (!server.Channels[channel].OperClients.ContainsKey(target)) { client.SendErrorNotChanOper(channel, target); } else { server.Channels[channel].SendChanOperTake(client, target); } } else { client.SendErrorExpected(mod.ToUpper(), "GIVE", "TAKE"); } }
private void handleKick(BroadcastChatClient client, string channel, string kicked) { if (!server.Channels.ContainsKey(channel)) { client.SendErrorNoChannel(channel); } else if (!server.Clients.ContainsKey(kicked)) { client.SendErrorNoNick(kicked); } else if (!server.Channels[channel].Clients.ContainsKey(kicked)) { client.SendErrorUserNotInChannel(channel, kicked); } else if (!server.Channels[channel].OperClients.ContainsKey(client.Nick)) { client.SendErrorNotChanOper(channel, client.Nick); } else { server.Channels[channel].SendKick(client.Nick, server.Clients[kicked]); } }