/* $Id: chanmodes.def,v 1.14 2004/10/25 18:53:56 pickle Exp $
 *
 * This file is Copyright (c) 2001,2002,2003,2004 Simon Butcher
 *  <pickle@alien.net.au>
 *
 * This file is PUBLIC DOMAIN, to benefit the IRC developer community. If you
 * modify this file, please state your name and modifications here in order
 * for people to be able to distinguish between your version and this version.
 *
 * For more information or corrections, please contact the author.
 */
autogen definitions chanmodes;

/* The following format is used through-out this file. The first two fields
 * ('irc2char' and 'name') are manditory, the others may or may not exist.
 *
 * usermodes = {
 *    irc2char     = "<mode char for irc2 based protocol(s)>";
 *    name         = "<mode name>";
 *  [ origin       = "<where the mode was found>"; ]
 *  [ when	   = "<release version or announced date>"; ]
 *  [ contact      = "<point of contact associated with the mode>"; ]
 *  [ information  = "<url where to find more information>"; ]
 *  [ parameter    = "<parameter name>"; ]
 *  [ comment      = "<comments, history etc>"; ]
 *  [ server_on    = "yes"; ]
 *  [ server_off   = "yes"; ]
 *  [ conflict     = "yes"; ]
 *  [ obsolete     = "yes"; ]
 * }
 */


revision	= "$Revision: 1.14 $";
lastupdated	= "$Date: 2004/10/25 18:53:56 $";


chanmodes = {
   irc2char	= "a";
   name		= "ANONYMOUS";
   origin	= "RFC2811";
   comment	= "Marks the channel to use anonymous conversations. All "
                  "conversations, and people joining/parting are viewed all "
		  "from 'anonymous!anonymous@anonymous'. Users quitting are "
		  "seen as users parting the channel with no reason.";
};

chanmodes = {
   irc2char	= "a";
   name		= "HIDEOPS";
   origin	= "Hybrid";
   comment	= "Anonymous operators - channel operators a hidden";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "a";
   name		= "CHANNEL_PROTECTION";
   origin	= "Unreal";
   parameter	= "Nickname";
   comment	= "Gives the given nickname 'protection'; Cannot be "
                  "kicked/deopped";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "A";
   name		= "ADMIN_ONLY";
   origin	= "Unreal";
   comment	= "Only server/service/network (co-)administrators can join "
		  "the channel";
};

chanmodes = {
   irc2char	= "b";
   name		= "BAN";
   origin	= "RFC1459";
   parameter	= "n!u@h mask";
   comment	= "Bans the specified mask from the channel";
};

chanmodes = {
   irc2char	= "c";
   name		= "NOCOLOUR";
   origin	= "Bahamut";
   comment	= "Stops colour from being broadcast from the channel. Some "
                  "implementations drop lines, some implementations strip it.";
};

chanmodes = {
   irc2char	= "C";
   name		= "NO_CTCP";
   origin	= "Unreal";
   comment	= "Stops people from sending CTCP commands to the channel";
};

chanmodes = {
   irc2char	= "d";
   name		= "DENY";
   parameter	= "Real-name";
   comment	= "Like ban, but apparently bans through matching the given "
                  "one-word mask to the 'irc-name' or 'real name' field a "
		  "client has.";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "d";
   name		= "HAS_HIDDEN"; // what is the real name?
   origin	= "QuakeNet";
   comment	= "Set by the server when the channel mode +D (on QuakeNet) "
                  "was removed, but there are still 'hidden' users in the "
		  "channel";
   server_on	= "yes";
   server_off	= "yes";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "D";
   name		= "DELJOINS";
   origin	= "QuakeNet";
   comment	= "When set, all joins are hidden until the user is given a "
   		  "voice, oper status, until they speak, or change a topic "
		  "etc.";
};

chanmodes = {
   irc2char	= "e";
   name		= "EVENT";
   origin	= "AustHex";
   obsolete	= "yes";
   comment	= "Stops users from changing their nicknames when set. "
                  "AustNet considers this obsolete, due to the conflict "
		  "between the more widely accepted use of the 'e' mode.";
};

chanmodes = {
   irc2char	= "e";
   name		= "BAN_EXCEPTION";
   origin	= "RFC2811";
   parameter	= "n!u@h mask";
   comment	= "Creates a ban exception using the given mask. Normally, "
                  "if someone's identity fits a channel ban mask, they are "
		  "banned. If their identity also matches the ban exception "
		  "mask, they are allowed not banned (exempt from the ban)";
};

chanmodes = {
   irc2char	= "f";
   name		= "FLOOD_LIMIT";
   origin	= "Unreal";
   information	= "http://www.vulnscan.org/UnrealIrcd/unreal32docs.html#feature_antiflood";
   parameter	= "<lines>:<seconds>";
   comment	= "Flood limiter";
};

chanmodes = {
   irc2char	= "G";
   name		= "STRIP_BAD_WORDS";
   origin	= "Unreal";
   comment	= "Strips profanity from messages broadcast through the "
                  "channel";
};

chanmodes = {
   irc2char	= "h";
   name		= "HALFOP";
   origin	= "RFC2811";
   parameter	= "Nickname";
   comment	= "Gives the specified nickname channel half-operator status";
};

chanmodes = {
   irc2char	= "H";
   name		= "NO_HIDING";
   origin	= "Unreal";
   comment	= "When set, this stops users set umode +I "
                  "(INVISIBLE_JOINPART) from being able to join or part a "
		  "channel secretly";
};

chanmodes = {
   irc2char	= "i";
   name		= "INVITE_ONLY";
   origin	= "RFC1459";
   comment	= "Marks the channel as invite only. When set, clients must "
                  "be invited using the INVITE command prior to being "
		  "allowed to join the channel";
};

chanmodes = {
   irc2char	= "I";
   name		= "INVITATION_MASK";
   origin	= "RFC2811";
   parameter	= "n!u@h mask";
   comment	= "If the channel is marked as invite only, users matching "
                  "the mask(s) set using this mode are allowed to enter "
		  "without invitation.";
};

chanmodes = {
   irc2char	= "J";
   name		= "JOIN_THROTTLE";
   origin	= "Dancer";
   parameter	= "<frequency>,<limit>";
   comment	= "When set, users may join this channel once every "
                  "'frequency' seconds with an initial burst and limit value "
		  "of 'limit' users";
};

chanmodes = {
   irc2char	= "k";
   name		= "KEYLOCK";
   origin	= "RFC1459";
   parameter	= "Password";
   comment	= "Locks the channel with the given password, which must be "
                  "specified via the JOIN command to any clients attempting "
		  "to join the channel when set. The correct key must be "
		  "given when turning this mode off.";
};

chanmodes = {
   irc2char	= "K";
   name		= "NOKNOCK";
   origin	= "Unreal";
   comment	= "Disables people using KNOCK on the channel";
};

chanmodes = {
   irc2char	= "l";
   name		= "LIMIT";
   origin	= "RFC1459";
   parameter	= "Integer";
   comment	= "Limits the channel to only allow the given number of "
                  "members to be in the channel while the mode is set. "
		  "Nobody else is allowed to join the channel while the "
		  "channel membership count is greater than or equal to "
		  "the number given with the mode, however some "
		  "implementations allow IRC operators to circumvent that "
		  "rule. Most traditional implementations accept only a "
                  "signed integer here (using atoi()), however some more "
                  "modern implementations may accept an unsigned integer "
		  "(i.e. strtoul()), or even have machine variations on "
		  "whether a 32-bit or 64-bit integer is accepted.";
};

chanmodes = {
   irc2char	= "L";
   name		= "LISTED";
   origin	= "Bahamut";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "L";
   name		= "LINK";
   origin	= "Unreal";
   parameter	= "Channel name";
   comment	= "If the channel is +l, and the channel is full, users will "
                  "be redirected to the given channel";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "m";
   name		= "MODERATED";
   origin	= "RFC1459";
   comment	= "The channel is being moderated. Only users who have a "
                  "voice are able to talk (people who are voiced or channel "
		  "operator members)";
};

chanmodes = {
   irc2char	= "M";
   name		= "MODREG";
   origin	= "Bahamut";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "M";
   name		= "REGONLY";
   origin	= "Unreal";
   comment	= "Channel only allows registered nicknames to talk.";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "n";
   name		= "NO_EXTERNAL_MSGS";
   origin	= "RFC1459";
   comment	= "Disallows messages from users who are not channel "
                  "members entering the channel";
};
   
chanmodes = {
   irc2char	= "N";
   name		= "NO_NICK_CHANGE";
   origin	= "Unreal";
   comment	= "Disallow nickname changes. This is similar to "
                  "AustHex's obsolete +e ('event') mode";
};

chanmodes = {
   irc2char	= "o";
   name		= "OPER";
   origin	= "RFC1459";
   parameter	= "Nickname";
   comment	= "Gives the specified nickname channel operator status";
};

chanmodes = {
   irc2char	= "O";
   name		= "CREATOR";
   origin	= "RFC2811";
   parameter	= "Nickname";
   comment	= "Give the specified nickname channel creator status";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "O";
   name		= "OPER_ONLY";
   origin	= "Bahamut, Unreal";
   comment	= "Channel only allows IRC operators to join";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "p";
   name		= "PRIVATE";
   origin	= "RFC1459";
   comment	= "Marks the channel as private. Using this form, +p cannot "
                  "be set with +s at the same time. Setting +p while +s is "
		  "set turns off +s, and vice-versa. This is widely "
		  "considered obsolete in favour of the secret mode (+s).";
   obsolete	= "yes";
};

chanmodes = {
   irc2char	= "p";
   name		= "PRIVATE";
   origin	= "Hybrid";
   comment	= "This restricts KNOCK, and prevents half-ops from using +h";
};

chanmodes = {
   irc2char	= "q";
   name		= "QUIET";
   origin	= "RFC2811";
   comment	= "Sets the channel to be quiet. When set, it restricts "
                  "what is sent to clients who are on the channel. Joins, "
		  "parts, and nick changes are not broadcast. From the "
		  "user's point of view, the channel only contains one user "
		  "(them).";
   server_on	= "yes";
   server_off	= "yes";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "q";
   name		= "CHANNEL_OWNER";
   origin	= "Unreal";
   parameter	= "Nickname";
   comment	= "Gives the nickname channel owner status";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "Q";
   name		= "NO_KICK";
   origin	= "Unreal";
   comment	= "Disallow people being kicked from the channel";
};

chanmodes = {
   irc2char	= "r";
   name		= "REOP";
   origin	= "RFC2811";
   comment	= "This mode is used to prevent a channel from having no "
                  "operator for an extended period of time. When set, any "
		  "channel that has lost all its channel operators for a "
		  "certain period of time automatically has some or all "
		  "channel members given channel operator status. RFC2811 "
		  "specifies this is only available to '!' channels, but "
		  "some implementations are reported to use it on other "
		  "channel types, since they use timestamping to avoid "
		  "channel take-overs during network splits.";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "r";
   name		= "REGISTERED";
   origin	= "Bahamut";
   comment	= "Channel is registered with a network channel service";
   server_on	= "yes";
   server_off	= "yes";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "r";
   name		= "REGONLY";
   origin	= "ircu";
   comment	= "Channel only allows registered nicknames to join/talk.";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "R";
   name		= "REGONLY";
   origin	= "Bahamut, tr-ircd";
   comment	= "Channel only allows registered nicknames to join/talk";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "R";
   name		= "REOP_LIST";
   origin	= "IRCNet";
   parameter	= "n!u@h mask";
   comment	= "Re-oper list - a list of identities used as a hint for "
   		  "reop when a channel is opless for a long enough time. Only "
		  "one of the matches is used for the reop.";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "s";
   name		= "SECRET";
   origin	= "RFC1459";
   comment	= "Marks the channel as secret. The channel will not appear "
                  "in channel listings, the NAMES command will not list "
		  "nicknames for users who are not channel members, and the "
		  "channel will not appear in WHOIS unless WHOIS is called "
		  "by a fellow channel member.";
};

chanmodes = {
   irc2char	= "S";
   name		= "STRIP";
   origin	= "Unreal";
   comment	= "Strip mIRC colours from text broadcast via the channel";
};

chanmodes = {
   irc2char	= "t";
   name		= "TOPIC_LOCK";
   origin	= "RFC1459";
   comment	= "Topic is locked, and can only be changed by channel "
                  "operators";
};

chanmodes = {
   irc2char	= "u";
   name		= "AUDITORIUM";
   origin	= "Unreal";
   comment	= "When set, makes /names and /who only show channel "
                  "operators";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "u";
   name		= "FOUNDER";
   origin	= "tr-ircd";
   comment	= "Gives the specified nickname 'founder' status.";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "u";
   name		= "NOQUITPARTS";
   origin	= "QuakeNet";
   comment	= "When set, this hides all part messages (no part reasons "
                  "are broadcast) and all quit reasons are simply replaced "
		  "with a generic string such as \"Signed Off\".";
   conflict	= "yes";
};

chanmodes = {
   irc2char	= "v";
   name		= "VOICE";
   origin	= "RFC1459";
   parameter	= "Nickname";
   comment	= "Gives the specified nickname a voice. The user may then "
                  "speak when the channel is being moderated (+m).";
};

chanmodes = {
   irc2char	= "V";
   name		= "NO_INVITE";
   origin	= "Unreal";
   comment	= "Stop channel members inviting people";
};

chanmodes = {
   irc2char	= "z";
   name		= "SECURED_ONLY";
   origin	= "Unreal";
   comment	= "Only allows clients connected via secure connections to "
                  "join (eg. SSL)";
};

chanmodes = {
   irc2char	= "!";
   name		= "SERVICE";
   origin	= "KineIRCd";
   contact	= "kineircd@alien.net.au";
   parameter	= "Nickname";
   comment	= "Gives the specified nickname a marker (a '!') to show "
                  "that it is a service (i.e. a channel service). This is to "
		  "help users identify legitimate services on channels";
};

