IRC mode description reference for IRC client developers
This is supposed to be an easily automatically parsed reference document for verbose descriptions of user and channel modes of various IRCds to be displayed to the user. Several clients tried to implement such descriptions but due to the big amount of IRCds with their different modes, a central reference document released under public domain where everyone would combine efforts would be better.
I've chosen a plain text format because it is still a bit easier to parse than XML if you don't use any external libs (thinking of C/C++ developers now).
The file could be included with a client and parsed as soon as the client is started, or shipped with a source code distribution and parsed at build time, or with a script transformed into some other format that is shipped with the official source code releases by the client developers.
This is public domain: any use, no credits needed. Keep that in mind when contributing.
Contents
Simply copy this raw content into a .txt for simple use (that's also the format it's intended to have for easy inclusion/parsing). This is simply distributed through this wiki page to offer anyone to modify it, which a simply .txt file at a web server wouldn't do.
The comments explain the syntax more or less thoroughly. They also explain why it is important to check for the IRC daemons in the order in which they appear inside the document. And they also explain the strange ->[block] reference thing
# ---------------- # MODE REFERENCE LISTING for various IRCDs # ---------------- # This is collected information about user modes and channel modes on # different IRC daemons. It is supposed to give the client *very* basic # information what parameters a mode takes, and, the main concern of # this document, how to name/describe them to so the end user knows what # they do (as this sometimes differs for the very same mode char on # different IRCds). It also aims to tell the client how to identify # the respective IRCd (so far through the 004 message). # It is considered FREE to use for anyone # anywhere without the need to credit the source # as it is not some copyrighted new invention # but just a collection of information that # is also found somewhere else # It is supposed to save client developers the hassle of redoing # this research and allow them to display a helpful description # to the user instead of just nothing because it doesn't know # itself what a mode does. # This document is made up of blocks for different IRCds or # environments where those IRC modes may be used and lists # their parameters/purpose and verbose names to be used in # client software. # Generally, this aims to be easily parsed by a program (automatically) # Commenting lines are prefixed with # and shall be ignored, same as blank lines # Syntax: "[<name>]" at the beginning of a block, # naming the IRCd or environment this is for # "004Identifier <value>" This is present everywhere but in the default block # and names the value of the 004 message (second parameter) to identify # that IRCd. This is a wild card in many cases! (containing * or ?) # 004Identifier might be used multiple times for different identification # strings for different versions of the IRC daemon. # "Umodes:" at the beginning of the user modes section in a block # "Cmodes:" at the beginning of the channel modes section in a block # "+<mode>" inside the user mode and channel mode sections, # followed by optionally "[<mode type>]" and then a verbose # name/description/title for that mode in English language # Instead of type & description, there might also be "->[block name]" to # simply take that mode's type & description from another mode block where # it is already described (implying that the behaviour is similar) # Mode types: [uint] takes positive number as parameter # [string] takes a string as a parameter (most likely a specific # syntax if not a simple channel keyword) # [listmode] some kind of ban list mode, an extended channel list # (exception list or something) # Allows "+<mode> [item]", "-<mode> [item]" and "+<mode" without # params to spit out the whole list, similar to +b # [ustate] takes a user as parameter and changes state (op, halfop,...) # [unchangeable] Cannot be changed directly, only the server can set/unset it # (this does not include modes that are just available with specific # IRC op/admin privilegues. Just modes for which it makes no sense # to attempt to change them in any case, for which you can use a # greyed out check box in your mode settings dialog) # How to get the modes for an IRCd: Take the [Default] ones, then parse the IRCd specific # block (if any) and replace defaults/extend them. # NOTE: This document is *not* for listing *which* modes an IRCd will actually have, but # how they are best named/presented to the user *if* it does have them. # That means, [Default] intentionally lists more modes than many IRCds might have. # Check the IRCds 004 numeric to see which it actually supports # IMPORTANT # There is an issue with detecting some ircds, some wild cards would match other IRCds aswell # (mainly a problem with asuka/snircd and ircu). # Solution: CHECK THE WILDCARDS in the ORDER that is used in this document! (top most blocks/wildcards first)! # Then you will be safe you pick the right one (as long as this document is right). [Default] # RFC 1459, extended by commonly used ones (as fallback) Umodes: # <nonRFC> commonly used but practically named slightly different everywhere, # we will include some senseful fallback defaults here: +B Marked as bot +a [unchangeable] Server Administrator +A [unchangeable] Server Administrator +o [unchangeable] IRC Operator +O [unchangeable] IRC Operator +d Deaf (unable to receive channel messages) # </nonRF> +i Invisible +o [unchangeable] IRC Operator privilegues +s Receive server notices +w Receive Wallops Cmodes: # STATES +o [ustate] Channel operator # <nonRFC> +h [ustate] Channel half operator +a [ustate] Channel administrator +q [ustate] Channel owner # </nonRFC> +v [ustate] Voiced # BAN LISTS +b [listmode] Ban list # <nonRFC> +e [listmode] Ban exceptions list +I [listmode] Invite exceptions # </nonRFC> # CHANNEL SETTINGS # <nonRFC> +c Block coloured messages # </nonRFC> +i Invite only +k [string] Channel password +l [uint] User limit +m Moderated +n No channel messages from the outside +p Private +s Secret +t Topic locked for normal users [UnrealIRCd] # UnrealIRCd 004Identifier Unreal* Umodes: # Source: /helpop umodes +A [unchangeable] Server Administrator +a [unchangeable] Services Administrator +B Marked as being a bot +C [unchangeable] Co Administrator +d Deaf (unable to receive channel messages) +G Incoming messages are filtered for badwords +g Can read & send to GlobOps and LocOps +H Hide IRCop status in whois and who replies +h Available for help (Help Operator) +N [unchangeable] Network Administrator +O [unchangeable] Local IRC Operator +o [unchangeable] Global IRC Operator +p Hide all channels in whois and who replies +q Can only be kicked by U:lines +R Receive only messages and notices from registered users +r [unchangeable] User is registered +S [unchangeable] Services bot +s Receive server notices +T Don't receive CTCPs +t [unchangeable] User uses a vhost +V [unchangeable] Marked as WebTV user +v Receive infected DCC send rejection notices +W Show when someone does a whois on you +x Use cloaked host +z [unchangeable] Connected through a secure connection (SSL) Cmodes: # Source: /helpop chmodes +A Only Adminstrators may join +C Block channel CTCPs +f [string] Flood protection +G Filter badwords +j [string] Join throttling +K Disable KNOCK command +M Must have a registered nick or voice to talk +N No nickname changes allowed +O Only IRC Operators may join +Q No kicking allowed +R Only registered users may join +S Strip colour codes away +T Block channel notices +u Auditorium mode +V No inviting allowed +z Only clients on a secure connection (SSL) may join [snircd] # Quakenet's snircd 004Identifier u2.*.snircd* Umodes: # Source: DMDirc developers +h [unchangeable] Set host +n Hide channel list in whois output +I Hide idle time in whois output +k Services privilegues +X Extended operator: Override certain things (+b, +i, +k) when joining channels +x ->[UnrealIRCd] Cmodes: # Source: DMDirc developers +N Hide channel notices +u Hide part/quit messages of the users [ircu] # Undernet IRC daemon 004Identifier u2.* Umodes: # source: docs inside source .tar.gz +d Deaf (unable to receive channel messages) Cmodes: # it doesn't seem to extend any except those already being in [Default] [WeIRCd] # WeIRCd 004Identifier WeIRCd* Umodes: +c Receive connection notices +F Extremely relaxed flood limits +r ->[UnrealIRCd] +S ->[UnrealIRCd] Cmodes: +O ->[UnrealIRCd] [InspIRCd] # Inspire IRC daemon 004Identifier InspIRCd-* Umodes: # Source: http://wiki.inspircd.org/User_Modes +G ->[UnrealIRCd] +H ->[UnrealIRCd] +h ->[UnrealIRCd] +n Receive server notices - implies +s +I Don't show channels in whois +i Avoid being listed in who replies +R ->[UnrealIRCd] +r ->[UnrealIRCd] +S Strip colour codes away in received messages +s ->[UnrealIRCd] +W ->[UnrealIRCd] +x ->[UnrealIRCd] Cmodes: # Source: http://wiki.inspircd.org/Channel_Modes +C ->[UnrealIRCd] +G ->[UnrealIRCd] +g [string] Censor words based on a list specified by half ops or higher +J [uint] Prevent auto rejoin +j ->[UnrealIRCd] +K ->[UnrealIRCd] +N ->[UnrealIRCd] +O ->[UnrealIRCd] +P Block all caps lines +Q ->[UnrealIRCd] +R ->[UnrealIRCd] +r [unchangeable] Channel is registered +S ->[UnrealIRCd] +T ->[UnrealIRCd] +u ->[UnrealIRCd] +V ->[UnrealIRCd] +z ->[UnrealIRCd]


