예제 #1
0
파일: Info.cs 프로젝트: JGunning/OpenAIM
        public override void Hook_NetworkInfo(Network network, string command, string parameters, string value)
        {
            if (command == "002")
            {
                if (value.Contains("running version Unreal"))
                {
                    string version = value.Substring(value.IndexOf("Unreal"));
                    network.IrcdVersion = version;
                    network.InsertSafeDescription('f', "Flood protection (for more info see /HELPOP CHMODEF) [o]");
                    network.InsertSafeDescription('c', "Block messages containing mIRC color codes [o]");
                    network.InsertSafeDescription('i', "A user must be invited to join the channel [h]");
                    network.InsertSafeDescription('j', "Throttle joins per-user to 'joins' per 'sec' seconds [o]");
                    network.InsertSafeDescription('k', "Users must specify <key> to join [h]");
                    network.InsertSafeDescription('l', "Channel may hold at most <number> of users [o]");
                    network.InsertSafeDescription('m', "Moderated channel (only +vhoaq users may speak) [h]");
                    network.InsertSafeDescription('n', "Users outside the channel can not send PRIVMSGs to the channel [h]");
                    network.InsertSafeDescription('p', "Private channel [o]");
                    network.InsertSafeDescription('r', "The channel is registered (settable by services only)");
                    network.InsertSafeDescription('t', "Only +hoaq may change the topic [h]");
                    network.InsertSafeDescription('z', "Only Clients on a Secure Connection (SSL) can join [o]");
                    network.InsertSafeDescription('A', "Server/Net Admin only channel (settable by Admins)");
                    network.InsertSafeDescription('C', "No CTCPs allowed in the channel [o]");
                    network.InsertSafeDescription('G', "Filters out all Bad words in messages with <censored> [o]");
                    network.InsertSafeDescription('M', "Must be using a registered nick (+r), or have voice access to talk [o]");
                    network.InsertSafeDescription('K', "/KNOCK is not allowed [o]");
                    network.InsertSafeDescription('L', "Channel link (If +l is full, the next user will auto-join <chan2>) [q]");
                    network.InsertSafeDescription('N', "No Nickname changes are permitted in the channel [o]");
                    network.InsertSafeDescription('O', "IRC Operator only channel (settable by IRCops)");
                    network.InsertSafeDescription('Q', "No kicks allowed [o]");
                    network.InsertSafeDescription('R', "Only registered (+r) users may join the channel [o]");
                    network.InsertSafeDescription('S', "Strips mIRC color codes [o]");
                    network.InsertSafeDescription('T', "No NOTICEs allowed in the channel [o]");
                    network.InsertSafeDescription('V', "/INVITE is not allowed [o]");
                    return;
                }

                if (value.Contains("running version ircd-seven"))
                {
                    string version = value.Substring(value.IndexOf("ircd-seven"));
                    network.IrcdVersion = version;
                    network.InsertSafeDescription('c', "No color.  All color codes in messages are stripped");
                    network.InsertSafeDescription('i', "A user must be invited to join the channel");
                    network.InsertSafeDescription('m', "Moderated channel (only +vo users may speak)");
                    network.InsertSafeDescription('n', "No external messages.  Only channel members may talk in the channel");
                    network.InsertSafeDescription('p', "Private channel");
                    network.InsertSafeDescription('r', "Registered users only.  Only users identified to services may join");
                    network.InsertSafeDescription('t', "Only +o may change the topic");
                    network.InsertSafeDescription('z', "Op moderated.  Messages blocked by +m, +b and +q are instead sent to ops");
                    network.InsertSafeDescription('g', "Free invite.  Everyone may invite users.  Significantly weakens +i control");
                    network.InsertSafeDescription('C', "Disable CTCP. All CTCP messages to the channel, except ACTION, are disallowed");
                    network.InsertSafeDescription('L', "Large ban list.  Increase maximum number of +beIq entries. Only settable by opers");
                    network.InsertSafeDescription('P', "Permanent.  Channel does not disappear when empty.  Only settable by opers");
                    network.InsertSafeDescription('j', "Join throttle.  Limits number of joins to the channel per time PARAMS: /mode #channel +j count:time");
                    network.InsertSafeDescription('f', "Forward.  Forwards users who cannot join because of +i, +j, +l or +r.");
                    network.InsertSafeDescription('k', "Key.  Requires users to issue /join #channel KEY to join");
                    network.InsertSafeDescription('l', "Limit.  Impose a maximum number of LIMIT people in the channel. PARAMS: /mode #channel +l limit");
                    network.InsertSafeDescription('Q', "Disable forward.  Users cannot be forwarded to the channel (however, new forwards can still be set subject to +F)");
                    network.InsertSafeDescription('F', "Free target.  Anyone may set forwards to this (otherwise ops are necessary)");
                    return;
                }

                if (value.Contains("running version InspIRCd"))
                {
                    string version = value.Substring(value.IndexOf("InspIRCd"));
                    network.IrcdVersion = version;
                    network.InsertSafeDescription('f', "Kicks on text flood equal to or above the specified rate. With *, the user is banned (requires messageflood module)");
                    network.InsertSafeDescription('c', "Blocks messages containing mIRC color codes");
                    network.InsertSafeDescription('i', "Makes the channel invite-only");
                    network.InsertSafeDescription('j', "Limits joins to the specified rate (requires joinflood module)");
                    network.InsertSafeDescription('k', "Users must specify <key> to join");
                    network.InsertSafeDescription('l', "Channel may hold at most <number> of users");
                    network.InsertSafeDescription('m', "Enable moderation. Only users with +v, +h, or +o can speak");
                    network.InsertSafeDescription('s', "Make channel secret, hiding it in users' whoises and /LIST");
                    network.InsertSafeDescription('n', "Blocks users who are not members of the channel from messaging it");
                    network.InsertSafeDescription('p', "Make channel private, hiding it in users' whoises and replacing it with * in /LIST.");
                    network.InsertSafeDescription('r', "Marks the channel as registered with Services (requires services account module)");
                    network.InsertSafeDescription('t', "Only +hoaq may change the topic");
                    network.InsertSafeDescription('z', "Only Clients on a Secure Connection (SSL) can join");
                    network.InsertSafeDescription('A', "Allows anyone to invite users to the channel (normally only chanops can invite, requires allowinvite module)");
                    network.InsertSafeDescription('C', "Blocks any CTCPs to the channel (requires noctcp module)");
                    network.InsertSafeDescription('G', "Filters out all Bad words in messages with <censored>");
                    network.InsertSafeDescription('M', "Blocks unregistered users from speaking (requires services account module)");
                    network.InsertSafeDescription('K', "/KNOCK is not allowed");
                    network.InsertSafeDescription('N', "Prevents users on the channel from chainging nick (requires nonicks module)");
                    network.InsertSafeDescription('O', "Channel is IRCops only (can only be set by IRCops, requires operchans module)");
                    network.InsertSafeDescription('S', "Strips mIRC color codes");
                    network.InsertSafeDescription('u', "Makes the channel an auditorium; normal users only see themselves or themselves and the operators, while operators see all the users (requires auditorium module)");
                    network.InsertSafeDescription('d', "Blocks messages to a channel from new users until they have been in the channel for [time] seconds (requires delaymsg module).");
                    network.InsertSafeDescription('w', "Adds basic channel access controls of [flag] to [banmask], via the +w listmode. For example, +w o:R:Brain will op anyone identified to the account 'Brain' on join. (requires autoop module)");
                    network.InsertSafeDescription('B', "Blocks messages with too many capital letters, as determined by the network configuration (requires blockcaps module)");
                    network.InsertSafeDescription('D', "Delays join messages from users until they message the channel (requires delayjoin module)");
                    network.InsertSafeDescription('F', "Blocks nick changes when they equal or exceed the specified rate (requires nickflood module)");
                    network.InsertSafeDescription('J', "Prevents rejoin after kick for the specified number of seconds. This prevents auto-rejoin (requires kicknorejoin module)");
                    network.InsertSafeDescription('P', "Makes the channel permanent; Bans, invites, the topic, modes, and such will not be lost when it empties (can only be set by IRCops, requires permchannels module)");
                    network.InsertSafeDescription('Q', "Only ulined servers and their users can kick (requires nokicks module)");
                    network.InsertSafeDescription('R', "Blocks unregistered users from joining (requires services account module)");
                    network.InsertSafeDescription('T', "Blocks /NOTICEs to the channel from users who are not at least halfop (requires nonotice module)");
                    return;
                }

                if (value.Contains("running version "))
                {
                    string version = value.Substring(value.IndexOf("version ") + 8);
                    network.IrcdVersion = version;
                }
            }
            base.Hook_NetworkInfo(network, command, parameters, value);
        }