--- /dev/null
+Undernet server features.
+-------------------------
+
+This document is supposed to list the features that undernet supports and
+provides to clients, and which version of ircu this was added. Additional
+numeric replies should be added here too.
+
+Extended Who information: (WHOX)
+ Version: unknown, but at least 2.10.07+
+
+ This is described in the file 'readme.who'
+
+USERIP:
+ Version: unknown, but at least 2.10.07+
+
+ This works the same as userhost, but returns the IP instead, useful for
+ setting a ban on someones IP address instead of their nick.
+ usage:
+ USERIP nick[,nick...]
+ returns:
+ RPL_USERIP (307)
+ :server.name 307 target nick[*]=[+|-]user@host...
+
+RPL_ISUPPORT:
+ version: 2.10.08+
+
+ This sends a numeric during client signon that lists various features that
+ ircu supports. This allows client and script writers to know what features
+ they can use, and various parameters about the irc server. The numeric
+ used is '005' to try and maintain some semblance of compatibility with
+ dalnet which has a similar feature. The 005 numeric may be split across
+ multiple lines if the length exceeds 512 characters.
+
+ The format is:
+ :servername 005 target feature1 feature2... :are supported by this server.
+ :servername 005 target feature200... :are supported by this server.
+
+ features are either a word describing the feature eg: 'SILENCE', or a word
+ describing the feature and an equals and a list of parameters.
+ eg: SILENCE=15 (says that we support silence, and we support up to 15 of
+ them per user), or FOO=12,3 (says we support FOO with parameters 12 and 3)
+ for example 2.10.08 lists:
+
+ :test.undernet.org 005 test SILENCE=15 WHOX WALLCHOPS USERIP CPRIVMSG
+ CNOTICE MODES=6 MAXCHANNELS=10 MAXBANS=30 NICKLEN=9 TOPICLEN=160
+ KICKLEN=160
+
+ NOTE: Versions prior to 2.10.08+ use numeric 005 as part of 'MAP', so
+ 005 should be /not/ be used after the server registration has occured.
+ (ie: after END_OF_MOTD has arrived).
+
+MAP:
+ Version: unknown, but since 2.9.30 at least, updated in 2.10.08
+
+ /map shows the servers as the server percieves them, who's connected
+ to who in a pretty display. In version 2.10.08 it also lists the
+ amount time time it takes a message to get /from/ a server to the local
+ server - this measures the one way lag only, in 2.10.08 it also lists
+ the number of clients that are currently on that server.
+ The lag estimation is very approximate and depends on people changing nick
+ and joining channels, so the less clients on a server the less reliable the
+ lag estimation is.
+
+ Map prior to 2.10.08 uses:
+ RPL_MAP 005
+ RPL_MAPMORE 006
+ RPL_MAPEND 007
+ Map changed in 2.10.08 to allow for ISUPPORT on numeric 005, the new
+ numerics are:
+ RPL_MAP 015
+ RPL_MAPMORE 016
+ RPL_MAPEND 017
+
+WALLCHOPS:
+ Version: unknown, but since 2.10.07
+
+ WALLCHOPS sends a message to all channel operators (@)'s on a channel.
+ It does /not/ require you to be op'd (@'d) to do so. This is a feature.
+
+ syntax:
+ WALLCHOPS #channel :message
+ or:
+ NOTICE @#channel :message
+
+ this sends:
+ :user NOTICE @#channel :message
+ to clients that are @'d on the channel.
+
+CPRIVMSG/CNOTICE:
+ Version: unknown, but since 2.10.07
+
+ CPRIVMSG/CNOTICE are a way around target limiting in recent undernet
+ servers. Undernet servers prevent you from sending messages to too many
+ people at once in an attempt to help cut down the amount of spam that
+ occurs on the network. Because there are several situations where you want
+ to send messages to lots of people that are on the same channel as you
+ (autogreet's and gamebots for example) an 'escape' was made in the form
+ of CPRIVMSG/CNOTICE. These allow you to send a privmsg/notice to a person
+ on a common channel if you are op'd (@'d) without incuring a target
+ penalty. If you see 'Target changed too fast' messages, you should
+ probably be using these commands.
+
+ Syntax:
+ CPRIVMSG #channel nick :Message
+ CNOTICE #channel nick :Message
+
+ Results are the same as for 'PRIVMSG' and 'NOTICE' respectively.
+
+SILENCE:
+ Version: unknown, 2.9.32 at least.
+
+ Silence is a server side ignore. You can /silence +hostmask or
+ /silence +nick, to add someone to your silence list, or use /silence
+ -hostmask to remove it. /silence will list your 'silence list'.
+ you can /silence nick, to see someone elses silence list (useful for
+ helping someone). Silence is preferably used as a last resort as it
+ tends to use server CPU time. Undernet typically only allows 15 silences
+ per user. in 2.10.08+ this information is available in the RPL_ISUPPORT
+ line.
+
+ Syntax:
+ SILENCE +hostmask
+ SILENCE +nick
+ SILENCE -hostmask
+ SILENCE -nick
+ SILENCE nick
+
+ reply:
+ RPL_SILELIST 217
+ RPL_ENDOFSILELIST 218
+
+User modes:
+ Version: various
+
+ Undernet supports these additional user modes:
+ +d: Deaf & Dumb. This user will not get any channel traffic. Used for
+ bots.
+ +k: This user cannot be kicked, deop'd or /kill'd. This usermode may only
+ be set by a server, it may not be set by a user. This is used by
+ undernet service bots (X/W/UWorld etc)
+ +g: List channel HACK:'s
+ +s: Server messages - takes a parameter of which masks to send, see
+ 'snomask.html' for more details. (2.10.0+)
+
+LIST:
+ Version: Unknown
+
+ List now takes various parameters to allow you to quickly and efficiently
+ find interesting channels. These are:
+
+ >n or <n show channels with less than or greater than 'n' users
+ respectively
+ C>n or C<n show channels that have existed for less than or greater than
+ 'n' minutes.
+ T>n or C<n show channels that have had their topic changed in less than or
+ greater than 'n' minutes.
+
+ Additional Numerics:
+ RPL_LISTHELP 334
+
+Additional Topic Numerics:
+ Version: Since the dawn of time.
+
+ Topic also lists who set it and when they set it.
+
+ Additional Numerics:
+ RPL_TOPICWHOTIME 333
+
+ Straight after the topic:
+ :server.name 333 #channel Isomer 923423442
+ where the number is seconds past 00:00 1970-01-01 that the topic was set.
+
+
+INVITE list:
+ Version: 2.10.08+
+
+ /invite without any parameters lists which channels you have an outstanding
+ invite to (ie: an invite to a channel which you haven't joined)
+
+ Additional Numerics:
+ RPL_INVITELIST 346
+ RPL_ENDOFINVITELIST 347
+
+NICK change:
+ Version: Since the dawn of time.
+
+ Undernet prevents you from changing nick on a channel while your banned.
+ Undernet prevents you changing nicks more than once per 30 seconds, you
+ get one 'free' nick change if you haven't changed nick recently.
+
+ Additional Numerics:
+ RPL_BANNICKCHANGE 347
+ RPL_NICKTOOFAST 349
+
+Target limiting:
+ Version: Recent 2.10.07ish at least.
+
+ Undernet prevents you from changing 20 targets per 2 minutes. A target
+ is a 'Nick' or 'channel'. This is to prevent spam. If you message more
+ than 20 people or join more than 20 channels in two minutes then you'll
+ start getting 'Target change too fast' and will have to wait before you
+ can start talking. See CPRIVMSG/CNOTICE above for information on how to
+ avoid this.
+
+ Additional Numerics:
+ ERR_TARGETTOOFAST 349
+
+