UnrealIRCd 3.3 RPL_ISUPPORT/RPL_PROTOCTL [Numerical 005] Information & Details
Last modified Monday, August 18th, 2008. [nate]

RPL_ISUPPORT/RPL_PROTOCTL is the method that allows an IRCd to define to the client what all is available
on its server.  It allows the client software to understand and know what all protocol features are available.

The numeric is sent immediately after RPL_MYINFO [Numerical 004] on connect and on a /version request.
Unlike previous Unreal builds, remote /version requests uses Numerical 005 as well now intead of 105.

The format of the RPL_ISUPPORT/RPL_PROTOCTL return is still the same as previous UnrealIRCd builds, with the
exception only being what tokens are potentially returned, eg;

`:<server> 005 <target> [<token[=value]> ...] :are supported by this server`

The client interpreting these should be able to understand multiple RPL_ISUPPORT/RPL_PROTOCTL lines.


UnrealIRCd 3.3 has been designed around 3.2 legacy support or utilizing 3.3's more full RPL_ISUPPORT support.
This is an option selectable at Configuration point (Windows pre-compiles at this time are 3.2 legacy compiled).

The following is a list of tokens returned and/or possible to be returned in RPL_ISUPPORT lines.
More details for each token can be found @ http://www.unrealircd.com/files/docs/technical/rfc/isupport.txt


The 'Values' of each are meant to give an example implementation with an idea of what goes there using regex style


Token           Type             Value(s)             Default                 Description
****************************************************************************************************************
CASEMAPPING     string           ascii, rfc1459,      ascii                   Specifies the casemap of the server
                                 strict-rfc1459                               for determining if characters
                                                                              are upper/lowercase of eachother.


CHANLIMIT       prefix:count     prefix;#, &, $                               Defines the max amount of `prefix` 
                                 count;[0-9]                                  channel type(s) a client can join.
                                                                              Can be multiple, separated by ,.


CHANMODES       A,B,C,D          [a-z]/i,[a-z]/i,     be,kfL,lj,              Available CHModes by category type.
                                 [a-z]/i,[a-z]/i      psmntirRcOAQKVCuzNSMTG  A; List-type modes (eg; bans, invites,
                                                                              exceptions).
                                                                              B; Modes that require a parameter to set
                                                                              AND unset.
                                                                              C; Modes that require a parameter only on
                                                                              setting it.
                                                                              D; Modes that do not require a parameter.


CHANNELLEN      number           [0-9]                32                      Max length for channel names.


CHANTYPES       chars            #, &, +                                      Available channel prefixes.


EXCEPTS         char             [a-z]/i              e                       Defines ban-exceptions are available and
                                                                              the mode-character for it.


IDCHAN          prefix:length    prefix;!                                     Notes the availability of "Safe Channels"
                [OPTIONAL]       legnth;[0-9]                                 This is an optional, define in ./Config.
                [REQUIRES 3.3 Protocol, not 3.2 Legacy compatible]


INVEX           char             [a-z]/i              I                       Defines that invite exceptions are on.


KICKLEN         length           [0-9]                307                     Maximum kick reason length.


MAXLIST         char:count       [a-z]/i:[0-9]        b:60,e:60,I:60          Define the max number of 'list-type' mode
                                                                              entries that the mode character can have.
                                                                              Can be multiple, separated by ,.
                                                                              The mode-chars can be combined (eg; bI:90)
                                                                              for a 'combined' maximum and so on.


MODES           number           [0-9]                12                      Maximum number of A, B and C category type
                                                                              modes can be set to a channel at once.


NETWORK         string           [a-z0-9]/i                                   Specify the name/title of the network.


NICKLEN         length           [0-9]                20                      Maximum nickname length.


PREFIX         (chmodes)prefixes ([a-z]/i)[.*]        (qaohv)~&@%+            Assigns channel 'status' modes to prefix
                                                                              symbols in relative order.


SAFELIST                                                                      Specifies that the LIST command is sent in
                                                                              a way which will avoid causing the client
                                                                              to get killed for queue filling/flooding. 


STATUSMSG       prefixes         [.*]                 ~&@%+                   Notes the available prefix types usable to
                                                                              send 'mass' NOTICE's to within a channel.


STD             string           [a-z]                rfcnnnn                 Defines ISUPPORT draft implementation.


TARGMAX         cmd:count        [a-z]/i:[0-9]        KICK:6,NOTICE:10,       Defines max target counts for the commands
                                                      PRIVMSG:20              given.  Commands not listed will simply be
                [REQUIRES 3.3 Protocol, not 3.2 Legacy compatible]            considered to allow only a single target.


TOPICLEN        length           [0-9]                307                     Maximum topic length.


CMDS            cmds             [A-Z]                MAP,KNOCK,              Defines commands that the client software
                                                      DCCALLOW,USERIP         should know exists for usage.


HCN                                                                           Notes that the server supports the Hybrid
                                                                              Connect Notice [HCN] protocol.


MAXTARGETS      count            [0-9]                20                      Maximum targets for the PRIVMSG command.
                [OBSOLETE in 3.3 Protocol by TARGMAX]


AWAYLEN         length           [0-9]                307                     Maximum away message length.


WATCH           count            [0-9]                100                     Defines a Watch system is available and the
                                                                              maximum number of entries a user can watch.


SILENCE         count            [0-9]                20                      Defines a silence list is available and the
                                                                              maximum entries a user can have on it.


EXTBAN          prefix,types     [.*],[a-z]/i         ~,qncrfT                Specifies extended bans supported
                                                                              `Prefix` specifies the symbol all extbans
                                                                              prefix with and `Types` specifies what
                                                                              extbans are available.


ELIST           flags            [a-z]/i              MNUCT                   Specifies the acceptable LIST options.


NAMESX                                                                        Specifies that extended /NAMES information
                                                                              is available on this server.