Merge branch 'u2_10_12_branch' of git://git.code.sf.net/p/undernet-ircu/ircu2
[ircu2.10.12-pk.git] / doc / features.txt
diff --git a/doc/features.txt b/doc/features.txt
new file mode 100644 (file)
index 0000000..9b486ea
--- /dev/null
@@ -0,0 +1,208 @@
+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
+
+