# $EPIC: mode.txt,v 1.3 2006/08/29 18:22:56 sthalik Exp $ ======Synopsis:====== __mode__ [<+|-> []] # Currently I (hop) am renovating the structure of this help file. The # first part of the help file will be a basic description of the purpose # of modes in irc, both to users and to channels. Then a description of # user modes will follow, with each user mode documented and its side # effects explained. Each network will get a section where its deviant # user modes will be explained. # After this, a description of channel modes, with each channel mode explained. # Each network will get a section where its deviant channel modes will be # explained. # After all of this, will be a description of how to use the /mode command, # complete with examples. The first part of this help file should be put # in an external document at some point, but for now it's going to be in # here until we move it. ======About Modes:====== A mode is an irc attribute which describes the current state of a channel or irc user. These are called "channel modes" and "user modes". Modes are traditionally single characters, usually lower case letters, and are manipulated with the __MODE__ command. You can turn on ("set") a mode by prefixing the character with a plus sign ('+') and turn off ("unset") a mode by prefixing the character with a minus sign ('-'). You can set or unset multiple modes at a time. ======User Modes:====== You can set and unset your user modes to change certain attributes about your irc session. User modes are lost when your server connection ends. You may be given a set of "default" user modes by your server when you initially connect to it. You may be given a set of extra user modes when the [[OPER]] command is successful. Some user modes are "privileged" which means that you cannot turn them on yourself; the server has to turn them on for you. You may not change or query the mode of any other user. =====Standard User Modes:===== i "Invisible mode". Everybody is permitted to ask for a list of members on a channel, or a detailed list of members on a channel with the [[NAMES]] or [[WHO]] request. If the requester is a member of the channel he requests, he will see the full details of all other members on the channel. However, if the requester is NOT a member of the channel he requests, any channel members who have this user mode set will NOT be shown in the list. They will be "invisible" to those who are not channel members. This same effect occurs if you are a member of a secret channel (channel mode +s, see below). o "Operator mode". This user mode is privileged. Some irc commands (relating to the administration of the irc server and network) may not be executed by those who do not have this user mode set. This mode must be enabled through the sucessful use of the OPER command, however, it can be removed with the MODE command s "Server Notices mode". The server sends out special information that is not generally useful to non-techie irc users when you turn this user mode on. Not every user receives every server notice just because they have +s turned on. Some server notices require more than one user mode to be turned on (particularly +o). The types and number of messages you receive varies from server to server. w "Wallops mode". Whereas server notices generally are of interest to local users, WALLOPS ("Write ALL OperatorS") are of interest to all privileged users on all servers. You will receive WALLOPS when you turn this user mode on. Some networks restrict WALLOPS only for server use. Other networks permit operators to send WALLOPS. Still other networks permit everybody to send WALLOPS. As with all other output modes, everything varies from server to server. ======Non-standard User Modes:====== =====Undernet (ircu2.9.x):===== d "Deaf mode". The server will not send public message to this client for any channels it is a member of. This mode is primarily intended for services, and may or may not be accessible to clients. k "No-kick mode". This user mode is privileged. All servers on the network will reject any attempt to [[KICK]] this client from any channel it is a member of. There is no way to the server to set this mode for you. =====DALnet (ircu2.9.x+DAL, DAL4.x, Bahamut, Dreamforge)===== g All will see nickname collisions. Those with user mode +o will also see all uses of the [[OPER]] command and all failed/aborted server connection attempts. h "Help mode". This user mode is privileged. The server will show you all uses of the HELP protocol command. All who [[WHOIS]] you will get the 310 server numeric indicating your +h status. =====IRCNet (irc2.9.x):===== r "Restricted mode". The server will not permit this client to become a channel operator either through the __MODE__ command or through the [[JOIN]] command. The server will not permit this client to use the [NICK]] command. You cannot unset this mode. (s) These servers do not have the +s user mode. =====EFnet [Comstud] (irc2.8.x+CSr27 and beyond):===== b When enabled, shows connects from potential bots, and attempts with invalid usernames. c When enabled, shows all clients connecting and disconnecting from your server. Limited to irc operators. d When enabled, shows connects where the username given and the client's ident response differ. f When enabled, shows all "Fake MODE" and "Nickname Collision" notices. k When enabled, shows all global and local operator kills. l When enabled, shows connect attempts from clients that exceed their connect class (Y:line) limit. (r) Replaced by +bdl after CSr25. s When enabled, it shows any miscellaneous server notices that are not shown with modes bcdfklu (even if they are not enabled). u When enabled, shows all unauthorized connect attempts, as well as connect attempts when the server has reached its maximum connection limit. =====EFnet [/th] servers (irc2.8/th):===== User Modes: c When enabled, shows all clients connecting and disconnecting from your server. Limited to IRC operators. d Debug mode, displays miscellaneous messages. Limited to irc operators. k When enabled, shows all server kills n Shows all local nickname changes. Limited to irc operators. r When enabled, shows all rejected connections. s When enabled, it shows any miscellaneous server notices that are not shown with modes ckr, including operator kills y Spy mode, informs operators of all [[LINKS]], [[STATS]], and [[TRACE]] commands issued, and of any failed [[MSG]] commands. =====EFnet Hybrid 6 servers (2.8/hybrid-6):===== User Modes: O Designates this client is a local IRC Operator. o Designates this client is a global IRC Operator. w Can see server wallops. May be irc operator only depending on server configuration. z Can see oper wallops. No function unless irc operator. s Can see generic server messages and oper kills. c Can see client connections and exits. No function unless irc operator. r Can see 'rejected' client notices. No function unless irc operator. k Can see server kill messages. f Can see 'I-line is full' notices. No function unless irc operator. y Can see stats/links/admin requests to name a few. No function unless irc operator. d Can see server debug messages. Note that if the server was compiled with DEBUG defined, this information can potentially be an invasion of user privacy. Limited to irc operators with D flag. n Can see client nick changes. Limited to irc operators with N flag. b Can see bot detection notices. No function unless irc operator =====EFnet Hybrid 7 servers (2.8/hybrid-7):===== All modes for EFNet Hybrid 6 Servers apply, and the following additional modes are available, or are changed in meaning. User Modes: (O) Obsolete. Hybrid-7 does not support local operators. a Server administrator flag. Automatically set by server in conjunction with the OPER command, not usable by normal users. g Reject all PRIVMSG/NOTICE not addressed to a channel, unless the sender has been authorized by the ACCEPT protocol command (presently you must use /quote for this) =====AnotherNet servers===== User Modes: c Show all [dis]connections, possible clones, and invalid logins f Show all [[DCC]] handshakes (mnemonic: file transfers) h Makes operator completely invisible to all normal users; mainly meant for channel services (mnemonic: hidden) ======UnderNet servers===== Server notice masks: Under ircu servers the +s usermode can optionally take a numeric argument prefixed by + or - This argument is used to show only specific types of server messages. 1 unsorted old messages 2 server kills (nick collisions) 4 oper kills 8 desyncs (hack2) 16 temporary desyncs (hack3) 32 unauthorized connections 64 common TCP or socket errors 128 too many connections 256 services actions on channels (hack4) 512 glines 1024 net join/break, etc 2048 IP mismatches 4096 host throttle add/remove notices 8192 old oper-only messages (Oper Only) 16384 client connect/exit messages (Oper Only) To set a server notice mask (allowing you to see that type of notice) /mode +s +mask Only one number may be specified, and it is added to your current server notice mask. However you can combine values before passing them to the mode command. To clear a server notice mask (preventing you from seeing that type of notice) /mode +s -mask Default server notice mask for users who just set +s usermode is 1540 (4+512+1024) Default server notice mask for opers is 1799 (1+2+4+256+512+1024) ======Channel Modes:====== You can set and unset your user modes to change certain attributes about a channel. Channel modes are lost when the last person leaves a channel (the channel is destroyed). Channels may be given a set of "default" channel modes by the server when you create it. The first person to join a channel creates it and becomes the channel operator. The mode of a channel may only be changed by one of its operators. The operatorship may be shared among any of the channel's members. be set and unset by channel operators. "prinitially nnect to it. You may be given a set of extra user modes when the [[OPER]] command is successful. Some user modes are "privileged" turn them on for you. You may not change or query the mode of any other user. =====Standard Channel Modes:===== b When enabled, this prevents the specified nick!user@host mask from entering the channel. If only the @host portion is specified, "*!*" is prepended; if only user@host is specified, "*!" is prepended; if the mask does not contain a "@", it is assumed to be a nickname, and a !*@* is appended. When used with no arguments, the channels list of "bans" is displayed. On some servers, this also prevents any users matching the specified nick!user@host mask from speaking on the channel or changing nicks. i When enabled, users may only join the channel if [[INVITE]]d. k When enabled, users may only join the channel if they specify the proper "key" (which is specified when +k is set). l When enabled, only the specified number of users may enter the channel. m When enabled, only users with +o or +v may speak on the channel. n When enabled, public messages from outside the channel are not allowed. o When enabled, grants the specified nickname channel operator status. p When enabled, the channel is made private. The channel name will not show up in [[WHO]], [[WHOIS]], [[NAMES]], or [[LIST]] replies (though users who are not +i will still be shown in [[NAMES]], the channel name is simply masked as "Private"). This no longer works as expected on all servers, as some have given +p other meanings. s When enabled, makes the channel secret. This is the same as +p, except the channel will not show up in any [[WHO]]/[[WHOIS]]/etc. queries from a person not on the channel. Anyone who is on a +s channel is effectively invisible, as per user mode +i. t When enabled, only channel operators may set a topic. v When enabled, grants the specified nickname voice status. IRCNet Channel Modes: a When enabled, this makes the channel anonymous. Nicknames are hidden (and thus nick changes are not shown), and no other channel modes are permitted. Note that this can seriously confuse the client... I Invite exemption. This takes a hostmask like a ban would, and acts as a perminant invite. e Ban exemption. Same format as +b, except user matching a ban exemption can join regardless of bans. Hybrid6 Channel Modes: e Ban exemption. Same format as +b, except users matching a ban exemption can walk through any bans matching them. The server may remove ban exemptions automatically when a ban-exempt client is kicked shortly after joining through a ban. p Paranoid. Channel operators will see when another channel operator invites someone. (this differs from the old chanmode p, which was formerly used for "private" mode) Beware that this will not have the desired effect in a mixed hybrid-6/hybrid-7 network, as +p is redefined to mean knock disable in hybrid-7. Hybrid7 Channel Modes: a Anonymous channel operators. Channel operators will not be identified as channel operators, and channel operator commands will not reveal the identity of a channel operator. e Ban exemption. Same format as +b, except users matching a ban exemption can walk through any bans matching them. The server may remove ban exemptions automatically when a ban-exempt client is kicked shortly after joining through a ban. p Knock Disable - This differs yet again from previous uses for the +p channel mode, which previously meant "private" or "paranoid". Setting this mode on a channel will prevent KNOCK from being used on hybrid-7 servers. This will not have the expected results on a mixed hybrid-6/hybrid-7 network! I Invite exemption. This takes a hostmask like a ban would, and acts as a perminant invite. ======Description:====== Both channels and users have modes associated with them. For channels, they determine who is a channel operator, the number of people who may join the channel, who may not enter the channel, and myriad other things. For users, they determine whether the user will is an IRC operator, whether the user will receive special server notices, etc. Modes are enabled when prepended with a "+", and disabled when with a "-". Modes may be clustered as well. When clustering modes, all mode changes are specified first, then their parameters (see the examples below). ======Examples:====== To receive operator [[WALLOPS]] and server notices (both examples are equivalent): /mode your_nick +sw /mode your_nick +s+w To set a channel limit (the number is arbitrary): /mode #channel +l 35 To make someone a channel operator: /mode #channel +o theirnick To set a ban, a key, and to remove chanop status from someone: /mode #channel +bk-o *!*some@*.ban.com Secret_Key foobar ======Restrictions:====== Only channel operators may set modes for a channel (though anyone may view them), and only you may set or view your personal user modes. Additionally, the user mode +o may **NOT** be set with __MODE__, you must use the [[OPER]] command. However, it may be removed with -o (see [[DEOP]] as well). Also note that some server variants do not allow for redundant mode changes, such as "+oo foobar foobar". This shouldn't cause too many problems though, since you can easily reverse a mode if you wish to set it again, such as "-o+o foobar foobar", which is allowed. Finally, note that mode changes are limited to a maximum of 4 total parameters. Thus you could give +o to 3 people and set +l, but you could not do those and set +k as well, since that would involve 5 parameters. ======Other Notes:====== On Undernet servers, the maximum number of parameters for __MODE__ is 6. Additionally, some server versions have extra modes that may be used. Keep in mind that these do not apply everywhere, so you should check what software version your server is using to be sure (see [[version command|VERSION]]). =====Undernet servers (ircu2.9.x):===== User Modes: d When enabled, your client does not receive any public messages from any channel you are on. (mnemonic: deaf mode) k No-kick mode. Any client with this mode may not be kicked from any channel it applies to. Limited to services. =====DALnet servers (ircu2.9.x+DAL, DAL4.x)===== User Modes: g Allows operators to see all [[OPER]] attempts, and failed server connects. Allows all users to see nickname collisions. h Shows operators the arguments to any protocol HELP command issued. Server numeric [[on 310|310]] is returned in [[WHOIS]] to denote +h users. =====IRC 2.9 servers (irc2.9.x):===== User Modes: r When enabled, the client cannot be a channel operator (even if it is the first to join), nor can it change nicknames. This mode is automatic if the connecting client has a matching i: line. This mode cannot be reversed once enabled. (s) Version 2.9 servers do not have a +s user mode. Channel Modes: a When enabled, this makes the channel anonymous. Nicknames are hidden (and thus nick changes are not shown), and no other channel modes are permitted. Note that this can seriously confuse the client... =====EFnet +CS servers (irc2.8.x+CSr27 and beyond):===== User Modes: b When enabled, shows connects from potential bots, and attempts with invalid usernames. c When enabled, shows all clients connecting and disconnecting from your server. Limited to irc operators. d When enabled, shows connects where the username given and the client's ident response differ. f When enabled, shows all "Fake MODE" and "Nickname Collision" notices. k When enabled, shows all global and local operator kills. l When enabled, shows connect attempts from clients that exceed their connect class (Y:line) limit. (r) Replaced by +bdl after CSr25. s When enabled, it shows any miscellaneous server notices that are not shown with modes bcdfklu (even if they are not enabled). u When enabled, shows all unauthorized connect attempts, as well as connect attempts when the server has reached its maximum connection limit. =====EFnet /th servers (irc2.8/th):===== User Modes: c When enabled, shows all clients connecting and disconnecting from your server. Limited to IRC operators. d Debug mode, displays miscellaneous messages. Limited to irc operators. k When enabled, shows all server kills n Shows all local nickname changes. Limited to irc operators. r When enabled, shows all rejected connections. s When enabled, it shows any miscellaneous server notices that are not shown with modes ckr, including operator kills y Spy mode, informs operators of all [[LINKS]], [[STATS]], and [[TRACE]] commands issued, and of any failed [MSG]] commands. =====EFnet Hybrid 6 servers (2.8/hybrid-6):===== User Modes: O Designates this client is a local IRC Operator. o Designates this client is a global IRC Operator. w Can see server wallops. May be irc operator only depending on server configuration. z Can see oper wallops. No function unless irc operator. s Can see generic server messages and oper kills. c Can see client connections and exits. No function unless irc operator. r Can see 'rejected' client notices. No function unless irc operator. k Can see server kill messages. f Can see 'I-line is full' notices. No function unless irc operator. y Can see stats/links/admin requests to name a few. No function unless irc operator. d Can see server debug messages. Limited to irc operators with D flag. n Can see client nick changes. Limited to irc operators with N flag. Channel Modes: e Ban exemption. Same format as +b, except users matching a ban exemption can walk through any bans matching them. p Paranoid. Channel operators will see when another channel operator invites someone. (this differs from the old chanmode p, which was formerly used for "private" mode) =====EFnet Hybrid 7 servers (2.8/hybrid-7):===== All modes for EFNet Hybrid 6 Servers apply, and the following additional modes are available, or are changed in meaning. User Modes: a Server administrator flag. Automatically set by server in conjunction with the [[OPER]] command, not usable by normal users. g Reject all PRIVMSG/NOTICE not addressed to a channel, unless the sender has been authorized by the ACCEPT protocol command (presently you must use /quote for this) Channel Modes: a Anonymous channel operators. Channel operators will not be identified as channel operators, and channel operator commands will not reveal the identity of a channel operator. I Standing Invitation. Format is the same as a ban. Users matching will be able to join regardless of the +i mode, as if they had been given an [[INVITE]] by one of the ops. =====AnotherNet servers===== User Modes: c Show all [dis]connections, possible clones, and invalid logins f Show all DCC handshakes (mnemonic: file transfers) h Makes operator completely invisible to all normal users; mainly meant for channel services (mnemonic: hidden) =====UnderNet servers===== Server notice masks: Under ircu servers the +s usermode can optionally take a numeric argument prefixed by + or - This argument is used to show only specific types of server messages. 1 unsorted old messages 2 server kills (nick collisions) 4 oper kills 8 desyncs (hack2) 16 temporary desyncs (hack3) 32 unauthorized connections 64 common TCP or socket errors 128 too many connections 256 services actions on channels (hack4) 512 glines 1024 net join/break, etc 2048 IP mismatches 4096 host throttle add/remove notices 8192 old oper-only messages (Oper Only) 16384 client connect/exit messages (Oper Only) To set a server notice mask (allowing you to see that type of notice) /mode +s +mask Only one number may be specified, and it is added to your current server notice mask. However you can combine values before passing them to the mode command. To clear a server notice mask (preventing you from seeing that type of notice) /mode +s -mask Default server notice mask for users who just set +s usermode is 1540 (4+512+1024) Default server notice mask for opers is 1799 (1+2+4+256+512+1024)