/// <summary> /// Unbans a user by username and IP address from a channel. /// </summary> /// <param name="user">The user doing the unbanning</param> /// <param name="targetUser">The user to unban</param> /// <param name="fromChannel">The channel to unban from</param> /// <param name="wasIPBan">Specifies whether or not the ban was an IP ban</param> protected void UnbanUser(User user, User targetUser, Channel fromChannel, bool wasIPBan) { bool wasBanned = fromChannel.IsUserBanned(targetUser); if (fromChannel.BannedUsers.Contains(targetUser.Username.ToLower())) fromChannel.BannedUsers.Remove(targetUser.Username.ToLower()); if (fromChannel.BannedIPs.Contains(targetUser.IPAddress)) { fromChannel.BannedIPs.Remove(targetUser.IPAddress); foreach (User u in GetUsersByIP(targetUser.IPAddress)) UnbanUser(user, u, fromChannel, true); } if (wasBanned) { SendServerInfoToChannel(fromChannel, targetUser.Username + " was un" + (wasIPBan == true ? "ipban" : "ban") + "ned from the channel by " + user.Username + "."); SendServerInfo(targetUser, user.Username + " has un" + (wasIPBan == true ? "ipban" : "ban") + "ned you from channel " + fromChannel.Name + "."); } }
/// <summary> /// Joins a user to a channel. Will send the user left event to current channel if intenal checks pass. /// </summary> /// <param name="user">The user to join</param> /// <param name="channel">The channel to join the user to</param> /// <param name="ForceJoin">If true, will ignore all checks and foribly join the user</param> protected void JoinUserToChannel(User user, Channel channel, bool ForceJoin) { if (channel.IsUserBanned(user)) { SendServerError(user, "You are banned from that channel."); return; } if (ForceJoin == false) { //all restrictive stuff goes in here if (user.Channel == channel) return; //dont allow them to join their channel again if (channel == Channel_Admin && UserIsStaff(user) == false) { SendServerError(user, "Only staff can enter that channel."); return; } } ConsoleSendUserLeftChannel(user); RemoveUserFromChannel(user); channel.AddUser(user); ConsoleSendUserJoinChannel(user); SendUserJoinedChannel(user); SendJoinedChannelSuccessfully(user); SendList(user, ListType.UsersInChannel); if (ChannelHasFlags(channel, ChannelFlags.Administrative)) SendServerInfo(user, "Only Moderators and Admin can hear you in this channel."); else if (ChannelHasFlags(channel, ChannelFlags.Silent)) SendServerInfo(user, "This channel does not have any chat privileges."); }