Esempio n. 1
0
        /// <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 + ".");
            }
        }
Esempio n. 2
0
        /// <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.");
        }