home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_n_r / draft-pfenning-irc-extensions-02.txt < prev    next >
Text File  |  1997-08-21  |  86KB  |  2,575 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.           INTERNET-DRAFT                                             Kent Cedola
  8.           File: <draft-pfenning-irc-extensions-02.txt>            Lisa Dusseault
  9.           20 August 1997                                         Thomas Pfenning
  10.                                                            Microsoft Corporation
  11.  
  12.  
  13.  
  14.                   Extensions to the Internet Relay Chat Protocol (IRCX)
  15.  
  16.  
  17.  
  18.           1.  Status of this Memo
  19.  
  20.           This document is an Internet-Draft.  Internet-Drafts are working docu-
  21.           ments of the Internet Engineering Task Force (IETF),  its  areas,  and
  22.           its  working groups.  Note that other groups may also distribute work-
  23.           ing documents as Internet-Drafts.
  24.  
  25.           Internet-Drafts are draft documents valid for a maximum of six  months
  26.           and  may  be updated, replaced, or obsoleted by other documents at any
  27.           time.  It is inappropriate to use Internet-Drafts as  reference  mate-
  28.           rial or to cite them other than as ``work in progress.''
  29.  
  30.           To  learn  the  current status of any Internet-Draft, please check the
  31.           ``1id-abstracts.txt'' listing contained in the Internet-Drafts  Shadow
  32.           directories   on   ds.internic.net   (US  East  Coast),  nic.nordu.net
  33.           (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim).
  34.  
  35.           The  distribution  of  this memo is unlimited.  It is filed as <draft-
  36.           pfenning-irc-extensions-01.txt>,  and  expires  February   25,   1998.
  37.           Please send comments to the authors.
  38.  
  39.  
  40.           2.  Abstract
  41.  
  42.           This  document  describes  extensions to the Internet Relay Chat (IRC)
  43.           protocol defined in RFC 1459[1].  Only client-server interactions  are
  44.           defined. The added functionality includes optional user authentication
  45.           for multiple security providers, support  for  UNICODE[2]  characters,
  46.           multilayer  security,  and  a unified property mechanism.  Chat server
  47.           implementations can optionally support channel or server services with
  48.           full  control over all messages and events. These services communicate
  49.           with the core server over an extended IRC connection.
  50.  
  51.           All changes to the IRC protocol are designed in a  way  that  existing
  52.           clients  will continue to work against servers implementing the exten-
  53.           sions. Support for the extended protocol can be queried by clients  to
  54.           take  advantage  of the added functionality or to conform to the basic
  55.           protocol as defined in RFC1459.
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.           Cedola, Dusseault & Pfenning                                  [Page 1]
  65.  
  66.  
  67.  
  68.  
  69.  
  70.           INTERNET-DRAFT                                          20 August 1997
  71.  
  72.  
  73.           3.  Modified UTF8 Encoding of UNICODE characters
  74.  
  75.           Allowing UNICODE characters for all user visible strings introduces  a
  76.           set of compatibility problems if the protocol must be backward compat-
  77.           ible. UTF8 encoding is used to convert wide UNICODE characters into  a
  78.           string compatible with existing IRC servers and clients.
  79.  
  80.           To  permit  the full range of UNICODE characters, we must introduce an
  81.           additional postprocessing step on the result of an UTF8 translation.
  82.  
  83.           Any string beginning with  a  '%'  character  (i.e.  "reason"  strings
  84.           within  a REDIRECT command) may be interpreted as UTF8-encoded UNICODE
  85.           strings.
  86.  
  87.           UNICODE characters encoded in UTF8 may use more bytes  than  an  ASCII
  88.           character.  To ensure compatibility, UNICODE strings such as nicknames
  89.           and channel names must fit within  the  standard  length  measured  in
  90.           bytes, not in characters.
  91.  
  92.           The  quoting  character for the postprocessing step is the '\' charac-
  93.           ter. All mappings are listed in the table below.
  94.  
  95.  
  96.                           +------------------------------------+
  97.                           |Table 1 - Character Quoting in UTF8 |
  98.                           +----------------+-------------------+
  99.                           |      \b        |  for " " blank    |
  100.                           |      \c        |  for ","          |
  101.                           |      \\        |  for "\"          |
  102.                           |      \r        |  for CR           |
  103.                           |      \n        |  for LF           |
  104.                           |      \t        |  for TAB          |
  105.                           +----------------+-------------------+
  106.  
  107.           IRCX clients will view UNICODE strings in their native form.  So  that
  108.           non-IRCX  clients  can  interoperate with UNICODE nicks, UNICODE nicks
  109.           are translated by the server into a usable form before being  sent  to
  110.           the non-IRCX client.  Usable format is a simple hex format preceded by
  111.           a '^' character.  Non-IRCX clients can use this hex format nickname to
  112.           specify the IRCX/UNICODE user.  The server may prevent duplicate nicks
  113.           by preventing users from setting their nick to a valid hex translation
  114.           (a '^' character followed by an even number of hex characters).
  115.  
  116.  
  117.           4.  Terms and Definitions
  118.  
  119.           Throughout  this  document we will use certain terms which are defined
  120.           in the following pages.
  121.  
  122.           String lengths are indicated in "characters", referring to ASCII char-
  123.           acters,  because even UNICODE strings must be encoded in ASCII for the
  124.           IRC protocol.
  125.  
  126.  
  127.  
  128.  
  129.  
  130.           Cedola, Dusseault & Pfenning                                  [Page 2]
  131.  
  132.  
  133.  
  134.  
  135.  
  136.           INTERNET-DRAFT                                          20 August 1997
  137.  
  138.  
  139.            +------------------------------------------------------------------+
  140.            |                  Table 2 - Definition of Terms                   |
  141.            +---------------+--------------------------------------------------+
  142.            | Chat Network  |  A Chat Network is comprised  of  one  or  more  |
  143.            |               |  servers linked together.                        |
  144.            | Server        |  A server is a single machine.                   |
  145.            | Channel       |  A  channel (sometimes called a room or confer-  |
  146.            |               |  ence) is a conversation between  one  or  more  |
  147.            |               |  users.                                          |
  148.            | Member        |  A member is a user that is part of a conversa-  |
  149.            |               |  tion in a channel.                              |
  150.            | User          |  A user is a client that makes a connection  to  |
  151.            |               |  the server.                                     |
  152.            | Objects       |  An  object  is  a  general  term for channels,  |
  153.            |               |  users,  members  (users  in  a  channel),  and  |
  154.            |               |  servers.  The type of object can be determined  |
  155.            |               |  from the first character of the object's name.  |
  156.            +---------------+--------------------------------------------------+
  157.  
  158.  
  159.           4.1.  User Access Levels
  160.  
  161.           There  are six user levels that define the ability of the user to per-
  162.           form operations.  Some levels are determined on  the  context  of  the
  163.           operation to be performed.
  164.  
  165.  
  166.            +------------------------------------------------------------------+
  167.            |              Table 3 - Definition of Client Levels               |
  168.            +---------------------+--------------------------------------------+
  169.            | Chat Administrator  |  A  Chat Administrator has full access to  |
  170.            |                     |  the server.                               |
  171.            | Chat Sysop          |  A Chat Sysop oversees and  controls  the  |
  172.            |                     |  chat network.                             |
  173.            | Channel Owner       |  A  Channel  Owner  manages a channel and  |
  174.            |                     |  the channel hosts.                        |
  175.            | Channel Host        |  A Channel Host manages a channel.   Also  |
  176.            |                     |  referred to as a channel operator.        |
  177.            | Channel Member      |  A  Channel Member is a member of a chan-  |
  178.            |                     |  nel.                                      |
  179.            | Chat User           |  A Chat User is a client connected to the  |
  180.            |                     |  server.                                   |
  181.            +---------------------+--------------------------------------------+
  182.  
  183.  
  184.           4.2.  Prefixes
  185.  
  186.           Each  object  contains  a  unique  prefix  that identifies the type of
  187.           object.  By tagging UNICODE objects with a special  prefix,  a  client
  188.           can  easily decide whether to use standard ASCII or UNICODE when send-
  189.           ing a message to a user or channel.  The IRCX client  is  responsible,
  190.           when  sending  a UNICODE string, for prefixing it with a '%' character
  191.           so that other IRCX clients can interpret it as UNICODE.
  192.  
  193.  
  194.  
  195.  
  196.           Cedola, Dusseault & Pfenning                                  [Page 3]
  197.  
  198.  
  199.  
  200.  
  201.  
  202.           INTERNET-DRAFT                                          20 August 1997
  203.  
  204.  
  205.             +-----------------------------------------------------------------+
  206.             |                  Table 4 - Object identifiers                   |
  207.             +---------+-------------------------------------------------------+
  208.             | #       |  The '#' prefix identifies a RFC1459 global channel.  |
  209.             | &       |  The '&' prefix identifies a RFC1459 local channel.   |
  210.             | %#      |  The "%#" prefix identifies an extended global chan-  |
  211.             |         |  nel  name (a modified UTF8-encoded UNICODE string).  |
  212.             | %&      |  The "%&" prefix identifies an extended local  chan-  |
  213.             |         |  nel  name (a modified UTF8-encoded UNICODE string).  |
  214.             | %       |  The '%' character followed by a space or comma  can  |
  215.             |         |  identify  the  last channel that this client speci-  |
  216.             |         |  fied and is a member of.  Its function is to  opti-  |
  217.             |         |  mize  server processing of multiple messages from a  |
  218.             |         |  client to a channel.  Support for this  feature  is  |
  219.             |         |  optional.                                            |
  220.             | A to }  |  The  'A'  through  '}' prefix identifies a standard  |
  221.             |         |  RFC1459 nickname.                                    |
  222.             | '       |  The ''' prefix identifies an extended IRCX nickname  |
  223.             |         |  which  consists  of a modified UTF8-encoded UNICODE  |
  224.             |         |  string.  The ''' character followed by a  space  or  |
  225.             |         |  comma  may  be  used  to represent the local client  |
  226.             |         |  connection (support for this feature is  optional).  |
  227.             |         |  The  characters  following  '''  can be '0' through  |
  228.             |         |  '9', '-', and any character above 'A'.               |
  229.             | ^       |  The '^' prefix  identifies  a  nickname  which  was  |
  230.             |         |  translated  from  UTF8  into hex characters so that  |
  231.             |         |  the nickname can be  viewed  by  non-IRCX  clients.  |
  232.             |         |  The  characters  following  '^' can be any standard  |
  233.             |         |  RFC1459 nickname characters.                         |
  234.             | 0       |  The '0' prefix identifies an internal object  iden-  |
  235.             |         |  tifier  (OID).   The OID consists of the '0' prefix  |
  236.             |         |  and eight hexadecimal characters.  Use of  the  OID  |
  237.             |         |  is implementation dependent.                         |
  238.             | $       |  The  '$' prefix identifies a server on the network.  |
  239.             |         |  The '$' character followed by a space or comma  may  |
  240.             |         |  be used to represent the local server the client is  |
  241.             |         |  connected  to  (support   for   this   feature   is  |
  242.             |         |  optional).                                           |
  243.             +---------+-------------------------------------------------------+
  244.  
  245.           5.  IRCX Client Messages
  246.  
  247.           This section details commands which have been added and commands which
  248.           have changed from RFC1459.  Responses from the server are discussed in
  249.           greater detail in later sections.
  250.  
  251.           5.1.  ACCESS command (new IRCX command)
  252.  
  253.           Create  an  "access entry" for an object to grant or deny access to an
  254.           object, including a channel, a user, or the server.   ACCESS  LIST  is
  255.           used  to  list  all  access entries for an object and CLEAR is used to
  256.           clear all entries or all entries of the same level.
  257.  
  258.           Syntax 1: ACCESS <object> LIST
  259.  
  260.  
  261.  
  262.           Cedola, Dusseault & Pfenning                                  [Page 4]
  263.  
  264.  
  265.  
  266.  
  267.  
  268.           INTERNET-DRAFT                                          20 August 1997
  269.  
  270.  
  271.           Syntax  2:  ACCESS  <object>  ADD|DELETE  <level>  <mask>  [<timeout>]
  272.           [:<reason>]
  273.  
  274.           Syntax 3: ACCESS <object> CLEAR [<level>]
  275.  
  276.  
  277.           5.1.1.  Parameters
  278.  
  279.           <object>  The object to which access is being granted or limited.  Can
  280.           be:
  281.  
  282.                <channel>      Channel
  283.                <nick>         Nickname
  284.                $              Chat server to which the command is sent
  285.                *              All chat servers on the network
  286.  
  287.  
  288.           <level>  The level of access being given or taken away.  Can be:
  289.  
  290.                DENY      Disallow access to an object that is accessible
  291.                GRANT     Allow access to an object that is  inaccessible
  292.                HOST      Channel host access to specified channel
  293.                OWNER     Channel owner access to specified channel
  294.                VOICE     Voice access to specified channel
  295.  
  296.  
  297.           <mask>  Mask to identify user by  nickname,  userid,  host  or  server
  298.           characteristics.  Supports wildcards * and ?.
  299.  
  300.           <timeout>   Minutes  until  the access entry is removed.  A value of 0
  301.           indicates unlimited duration.
  302.  
  303.           <reason>  Text reason shown when users are denied access  due  to  the
  304.           access entry.
  305.  
  306.  
  307.           5.1.2.  Results
  308.  
  309.             IRCRPL_ACCESSADD
  310.             IRCRPL_ACCESSDELETE
  311.             IRCRPL_ACCESSSTART
  312.             IRCRPL_ACCESSLIST
  313.             IRCRPL_ACCESSEND
  314.  
  315.  
  316.           5.1.3.  Possible Errors
  317.  
  318.           In this specification possible error messages are listed.  Which error
  319.           messages are used is dependent on the server implementation.
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.           Cedola, Dusseault & Pfenning                                  [Page 5]
  329.  
  330.  
  331.  
  332.  
  333.  
  334.           INTERNET-DRAFT                                          20 August 1997
  335.  
  336.  
  337.                  IRCERR_BADLEVEL
  338.                  IRCERR_DUPACCESS
  339.                  IRCERR_MISACCESS
  340.                  IRCERR_TOOMANYACCESSES
  341.                  IRCERR_TOOMANYARGUMENTS
  342.                  IRCERR_BADCOMMAND
  343.                  IRCERR_SECURITY
  344.  
  345.  
  346.           5.1.4.  Remarks
  347.  
  348.           An object with GRANT access entries but no DENY entries is assumed  to
  349.           be  off-limits  to  those  users not covered by the GRANT entries.  If
  350.           there are multiple entries in the access list, the list  is  processed
  351.           in the following order:  OWNER, HOST, VOICE, GRANT, DENY.
  352.  
  353.           Hosts  and Owners may add and delete access entries for their channel.
  354.           Hosts may not remove access entries added by owners.  Any user may add
  355.           and  delete  access  entries  for  themselves.  Sysops and admins on a
  356.           server may add and delete access entries for that server or the entire
  357.           network.
  358.  
  359.           A  user  who has blocked another user should not get any messages from
  360.           the blocked user, including invites.
  361.  
  362.  
  363.  
  364.           5.1.5.  Example:
  365.  
  366.           To make a user a channel host when they join the channel:
  367.  
  368.             ACCESS #mychan ADD HOST piper
  369.  
  370.           To grant normal access to the network to a few people but deny  access
  371.           to all others:
  372.  
  373.             ACCESS * ADD DENY * :closed for private party
  374.             ACCESS  * ADD GRANT *.company.com :these are the people that can get
  375.           on
  376.  
  377.           To delete the DENY access record on the network that denies access  to
  378.           '*'  (note  that this doesn't delete other DENY access records such as
  379.           '*.com'):
  380.  
  381.             ACCESS * DELETE DENY *
  382.  
  383.           To clear all DENY-level entries on the local server:
  384.  
  385.             ACCESS $ CLEAR DENY
  386.  
  387.  
  388.           To clear all access entries of any level for a channel:
  389.  
  390.             ACCESS #mychan CLEAR
  391.  
  392.  
  393.  
  394.           Cedola, Dusseault & Pfenning                                  [Page 6]
  395.  
  396.  
  397.  
  398.  
  399.  
  400.           INTERNET-DRAFT                                          20 August 1997
  401.  
  402.  
  403.           5.2.  AUTH Command (new IRCX command)
  404.  
  405.           Authenticate the client using an SASL[4] authentication mechanism. The
  406.           details  of  the  authentication mechanisms are specified in a profile
  407.           that should be registered with the IANA.
  408.  
  409.           Syntax 1: AUTH <name> <seq>: [<parameter>]
  410.  
  411.  
  412.           5.2.1.  Parameters
  413.  
  414.           <name>  The name of the SASL mechanism to use for authentication.  The
  415.           specific SASL mechanisms supported are implementation-dependent.
  416.  
  417.           <seq>   The sequence is a value of 'I' or 'S'. The 'I' value is speci-
  418.           fied for the initial AUTH message and the 'S' value is  specified  for
  419.           all  subsequent  AUTH  messages.   If the client specifies '*' for the
  420.           sequence, the server will abort the authentication sequence and return
  421.           IRCERR_AUTHENTICATIONFAILED.
  422.  
  423.           <parameter>   This  is optional data sent as an argument with the AUTH
  424.           messages.  The content depends on the authentication  mechanism  being
  425.           used.  All content must use standard escaping formats (eg. \r for car-
  426.           riage return) to comply with IRC message format restrictions.
  427.  
  428.  
  429.           5.2.2.  Results
  430.  
  431.             AUTH message
  432.  
  433.  
  434.           5.2.3.  Possible Errors
  435.  
  436.             IRCERR_ALREADYAUTHENTICATED
  437.             IRCERR_ALREADYREGISTERED
  438.             IRCERR_AUTHENTICATIONFAILED
  439.             IRCERR_AUTHENTICATIONSUSPENDED
  440.             IRCERR_BADCOMMAND
  441.             IRCERR_NEEDMOREPARAMS
  442.             IRCERR_UNKNOWNPACKAGE
  443.  
  444.  
  445.           5.2.4.  Remarks:
  446.  
  447.           If the server is known to  support  IRCX  with  specific  SASL  mecha-
  448.           nism(s), then the first message must be the AUTH command (if authenti-
  449.           cation is to be used), before the USER and NICK  commands.   Use  MODE
  450.           ISIRCX to determine if the server supports IRCX.
  451.  
  452.  
  453.           5.2.5.  Example:
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.           Cedola, Dusseault & Pfenning                                  [Page 7]
  461.  
  462.  
  463.  
  464.  
  465.  
  466.           INTERNET-DRAFT                                          20 August 1997
  467.  
  468.  
  469.                Client: AUTH NTLM I: <data>
  470.                Server: AUTH NTLM S: <data>
  471.                Client: AUTH NTLM S: <data>
  472.                Server: AUTH NTLM * userid@domain 03FA4534C
  473.  
  474.  
  475.           5.3.  CREATE (new IRCX command)
  476.  
  477.           Create a new channel and/or join an existing channel.
  478.  
  479.           Syntax: CREATE <channel> <modes> [<modeargs>]
  480.  
  481.           5.3.1.  Parameters
  482.  
  483.           <channel>  The name of the channel.
  484.  
  485.           <modes>   Initial  channel  modes,  not separated by spaces (like MODE
  486.           command).  Includes mode 'e' to force a clone of a clonable channel.
  487.  
  488.           <modeargs>  Optional mode arguments, separated by spaces, in the  same
  489.           order as the modes.  For the mode 'l' the mode argument is the maximum
  490.           number of members in the channel.  For the mode 'k' the mode  argument
  491.           is  the  channel  keyword.  These are the only modes that require mode
  492.           arguments.
  493.  
  494.           5.3.2.  Results
  495.  
  496.             CREATE message
  497.             JOIN message.
  498.             RPL_TOPIC
  499.             RPL_NAMEPLY
  500.             RPL_ENDOFNAMES
  501.  
  502.  
  503.           5.3.3.  Possible Errors
  504.  
  505.             IRCERR_CHANNELEXIST
  506.             IRCERR_ALREADYONCHANNEL
  507.             ERR_NEEDMOREPARAMS
  508.             ERR_INVITEONLYCHAN
  509.             ERR_CHANNELISFULL
  510.             ERR_BANNEDFROMCHAN
  511.             ERR_BADCHANNELKEY
  512.             ERR_TOOMANYCHANNELS
  513.             ERR_UNKNOWNCOMMAND
  514.  
  515.  
  516.           5.3.4.  Remarks
  517.  
  518.           The CREATE command provides a method to specify channel properties  at
  519.           creation  time,  and  also  provides a method (flag 'c') to create and
  520.           join a channel only if it does not already exist.  If user is  not  in
  521.           IRCX mode, server returns ERR_UNKNOWNCOMMAND.
  522.  
  523.  
  524.  
  525.  
  526.           Cedola, Dusseault & Pfenning                                  [Page 8]
  527.  
  528.  
  529.  
  530.  
  531.  
  532.           INTERNET-DRAFT                                          20 August 1997
  533.  
  534.  
  535.           5.3.5.  Examples
  536.  
  537.           This  example  shows  the creation of a moderated (m) channel with the
  538.           following properties and modes:  its topic can only be changed  by  an
  539.           owner  or  host  (t  = TOPICOP), messages from outside the channel are
  540.           blocked (n = NOEXTERN), it is limited to 50 members (l 50), it  has  a
  541.           member  key  which  is 'password' (k password), and it will be created
  542.           only if it doesn't already exist (c = CREATE)
  543.  
  544.  
  545.                Client: CREATE #MyChannel tnmlkc 50 password
  546.                Server: CREATE #MyChannel 048532944
  547.  
  548.  
  549.  
  550.           5.4.  DATA / REQUEST / REPLY
  551.  
  552.           Used to send tagged data, requests or replies.  The syntax for each is
  553.           the  same,  but  clients  can  use REQUEST to indicate that a REPLY is
  554.           desired, and use REPLY to indicate that a REQUEST was issued.  If user
  555.           is not in IRCX mode, server returns ERR_UNKNOWNCOMMAND.
  556.  
  557.           Syntax 1: DATA <target> <tag> :<message>
  558.  
  559.  
  560.           5.4.1.  Parameters
  561.  
  562.           <target>  The   target  for  the  data.  Target can be a nick, list of
  563.           nicks, channel, list of channels, or channel followed  by  a  list  of
  564.           some  members  of  the  channel.  This definition for <target> will be
  565.           used throughout this document.
  566.  
  567.           <tag>  Text field that clients use to know how to interpret the  data.
  568.           Valid characters are [A..z], [0..9] and period (.).  The first charac-
  569.           ter must be one of [A..z].  Maximum 15 characters.  If the tag  begins
  570.           with  SYS  or  ADM then the originator must have sysop or admin privi-
  571.           leges.  The server itself can send tags beginning with SYS or ADM.
  572.  
  573.           <message>  Payload or data for the message,  ending  with  a  newline.
  574.           Any  newlines  or other control characters within the body of the mes-
  575.           sage must be escaped.
  576.  
  577.           5.4.2.  Results
  578.  
  579.           DATA message
  580.  
  581.  
  582.           5.4.3.  Possible Errors
  583.  
  584.           ERR_UNKNOWNCOMMAND
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.           Cedola, Dusseault & Pfenning                                  [Page 9]
  593.  
  594.  
  595.  
  596.  
  597.  
  598.           INTERNET-DRAFT                                          20 August 1997
  599.  
  600.  
  601.           5.4.4.  Remarks
  602.  
  603.           REPLY and REQUEST may be used to replace "DATA".  IRCX servers  should
  604.           not  send  DATA  commands to clients that have not indicated that they
  605.           support IRCX. Clients should only process DATA messages if  they  know
  606.           and support the tag used.
  607.  
  608.           Prefixes  should  indicate  the organization that specified them, when
  609.           appropriate.  For example:  MYORG.AVATAR could be a tag used by MyOrg,
  610.           as would be all MYORG.* tags.
  611.  
  612.           5.4.5.  Example
  613.  
  614.           Sending ad banners from server admin to channel
  615.  
  616.           DATA #Channel SYS.AD.SMALL :<url-stuff>
  617.  
  618.  
  619.           5.5.  EVENT (new IRCX command)
  620.  
  621.           Add/Change/Delete event logging to the client connection.  The list of
  622.           event types and the way masks are applied may vary  depending  on  the
  623.           server implementation.
  624.  
  625.           Syntax 1: EVENT [ADD | DELETE] <event> [<mask>]
  626.  
  627.           Syntax 2: EVENT LIST [<event>]
  628.  
  629.           5.5.1.  Parameters
  630.  
  631.           <event>   Type  of event, such as CHANNEL, MEMBER, SERVER, CONNECTION,
  632.           SOCKET or USER.
  633.  
  634.           <mask>  Optional mask for applying a selection criteria per event.
  635.  
  636.           5.5.2.  Results
  637.  
  638.             IRCRPL_EVENTADD
  639.             IRCRPL_EVENTDEL
  640.             IRCRPL_EVENTSTART
  641.             IRCRPL_EVENTLIST
  642.             IRCRPL_EVENTEND
  643.  
  644.  
  645.           5.5.3.  Possible Errors
  646.  
  647.             IRCERR_NEEDMOREPARAMS
  648.             IRCERR_BADFUNCTION
  649.             IRCERR_EVENTDUP
  650.             IRCERR_EVENTMIS
  651.             IRCERR_NOSUCHEVENT
  652.             IRCERR_TOOMANYEVENTS
  653.             ERR_NOPRIVILEGES
  654.  
  655.  
  656.  
  657.  
  658.           Cedola, Dusseault & Pfenning                                 [Page 10]
  659.  
  660.  
  661.  
  662.  
  663.  
  664.           INTERNET-DRAFT                                          20 August 1997
  665.  
  666.  
  667.           5.5.4.  Remarks
  668.  
  669.           Use the EVENT command to define the events  that  an  admin  or  sysop
  670.           wishes  to be notified of.  The format above is the recommended format
  671.           for this optional command.  It is  advised  that  only  admins  and/or
  672.           sysops be allowed to receive event messages.
  673.  
  674.           5.5.5.  Examples:
  675.  
  676.           Add channel events.
  677.  
  678.                Client: EVENT ADD CHANNEL
  679.                Server: :<host> 806 <nick> CHANNEL *!*@*$*
  680.  
  681.           Add a list event with no active events returned.
  682.  
  683.                Client: EVENT LIST
  684.                Server: :<host> 808 <nick> :Start of events
  685.                        :<host> 809 <nick> CHANNEL *!*@*$*
  686.                        :<host> 810 <nick> :End of events.
  687.  
  688.  
  689.           5.6.  IRCX (new IRCX command)
  690.  
  691.           Enables  IRCX mode and displays IRCX status.  Use MODE ISIRCX first to
  692.           see if the server supports IRCX.
  693.  
  694.           Syntax: IRCX
  695.  
  696.           5.6.1.  Parameters
  697.  
  698.           None.
  699.  
  700.           5.6.2.  Results
  701.  
  702.             IRCRPL_IRCX
  703.  
  704.  
  705.           5.6.3.  Example
  706.  
  707.           This example includes a server that supports IRCX and three  authenti-
  708.           cation packages.
  709.  
  710.                Client: IRCX
  711.                Server: :<host> 800 <nick> 1 0 NTLM,DPA,ANON 512 *
  712.  
  713.  
  714.           5.7.  ISIRCX (new IRCX command)
  715.  
  716.           Queries whether or not the server supports the Extended RFC1459 proto-
  717.           col (IRCX).  Server response is same as for IRCX message.
  718.  
  719.           Syntax: ISIRCX
  720.  
  721.  
  722.  
  723.  
  724.           Cedola, Dusseault & Pfenning                                 [Page 11]
  725.  
  726.  
  727.  
  728.  
  729.  
  730.           INTERNET-DRAFT                                          20 August 1997
  731.  
  732.  
  733.           5.7.1.  Results
  734.  
  735.             IRCRPL_IRCX
  736.  
  737.  
  738.  
  739.           5.8.  LISTX (new IRCX command)
  740.  
  741.           Extended version of the LIST command that returns  additional  channel
  742.           properties.   Channels  with  extended names will be returned, even to
  743.           non-IRCX clients.  Some channel modes and the PICS rating  string  are
  744.           included  with  the result.  Only the channel modes that do not define
  745.           an additional argument (TOPICOP, NOEXTERN, etc.) are included  in  the
  746.           <modes> field. Clients should use the query limit to avoid overloading
  747.           the client or having the connection dropped by the server.
  748.  
  749.           Syntax 1:  LISTX [<channel list>]
  750.  
  751.           Syntax 2:  LISTX <query list> [<query limit>]
  752.  
  753.           5.8.1.  Parameters
  754.  
  755.           <channel list>  A list of channels may be specified in order  to  find
  756.           the PICS ratings or modes of those channels.  If no channels are spec-
  757.           ified, the server will send the entire matching list of channels.
  758.  
  759.           <query list>  One or more query terms separated by spaces or commas.
  760.  
  761.  
  762.           +--------------------------------------------------------------------+
  763.           |              Table 5 - Query terms for LIST command                |
  764.           +-----------+--------------------------------------------------------+
  765.           | <#        |  Select channels with less than # members              |
  766.           | >#        |  Select channels with more than # members              |
  767.           | C<#       |  Select channels created less than # minutes ago       |
  768.           | C>#       |  Select channels created greater than # minutes ago    |
  769.           | L=<mask>  |  Select channels with language property matching  the  |
  770.           |           |  mask string                                           |
  771.           | N=<mask>  |  Select channels with name matching the mask string    |
  772.           | R=0       |  Select unregistered channels                          |
  773.           | R=1       |  Select registered channels                            |
  774.           | S=<mask>  |  Select  channels  with  subject  matching  the  mask  |
  775.           |           |  string                                                |
  776.           | T<#       |  Select channels with a topic  changed  less  than  #  |
  777.           |           |  minutes ago                                           |
  778.           | T>#       |  Select  channels with a topic changed greater than #  |
  779.           |           |  minutes ago                                           |
  780.           | T=<mask>  |  Select channels that topic matches the mask string    |
  781.           +-----------+--------------------------------------------------------+
  782.  
  783.           <query limit>  Maximum number of channels to be returned.
  784.  
  785.           <mask> Sequence of characters that is used to select a matching  chan-
  786.           nel  name  or  topic.   The  character  *  and ? are used for wildcard
  787.  
  788.  
  789.  
  790.           Cedola, Dusseault & Pfenning                                 [Page 12]
  791.  
  792.  
  793.  
  794.  
  795.  
  796.           INTERNET-DRAFT                                          20 August 1997
  797.  
  798.  
  799.           searches.
  800.  
  801.  
  802.           5.8.2.  Results
  803.  
  804.             IRCRPL_LISTXSTART
  805.             IRCRPL_LISTXLIST
  806.             IRCRPL_LISTXPICS
  807.             IRCRPL_LISTXTRUNC
  808.             IRCRPL_LISTXEND
  809.  
  810.  
  811.           5.8.3.  Remarks
  812.  
  813.           To compose a mask, use this character escaping scheme.
  814.  
  815.                       +--------------------------------------------+
  816.                       |Table 6 - Character escaping in mask-string |
  817.                       +--------------------+-----------------------+
  818.                       |        \b          |    for " " blank      |
  819.                       |        \c          |    for ","            |
  820.                       |        \\          |    for "\"            |
  821.                       |        \*          |    for *              |
  822.                       |        \?          |    for ?              |
  823.                       +--------------------+-----------------------+
  824.           The PICS property is only returned if not null.
  825.  
  826.           A record limit of '0' (zero) or blank will be  interpreted  as  unlim-
  827.           ited.
  828.  
  829.           5.9.  MODE (extension to RFC1459 command)
  830.  
  831.  
  832.           MODE  command can now be used for new user or channel modes (see later
  833.           sections).  In addition, the special syntax "MODE ISIRCX" can be  used
  834.           to help clients find out whether a server supports IRCX.
  835.  
  836.           Syntax: MODE ISIRCX
  837.  
  838.           5.9.1.  Results
  839.  
  840.             MODE message
  841.             IRCRPL_IRCX
  842.  
  843.  
  844.           5.9.2.  Remarks
  845.  
  846.  
  847.           The ISIRCX mode (must be in capital letters) is only functional before
  848.           the user has registered with the server.  IRCX  servers  respond  with
  849.           IRCRPL_IRCX  and  non-IRCX  servers should return an error code.  This
  850.           allows unregistered users to query whether the server supports IRCX.
  851.  
  852.           See RFC1459 for more details on the  original  MODE  command  and  its
  853.  
  854.  
  855.  
  856.           Cedola, Dusseault & Pfenning                                 [Page 13]
  857.  
  858.  
  859.  
  860.  
  861.  
  862.           INTERNET-DRAFT                                          20 August 1997
  863.  
  864.  
  865.           parameters.
  866.  
  867.  
  868.           5.10.  NOTICE (extension to RFC1459 command)
  869.  
  870.           Sends  a  notice to a channel or user.  In RFC1459 a notice could only
  871.           be sent to a channel or a list of users.  Now a notice can be sent  to
  872.           a  list  of  users  within the context of a channel.  As before, users
  873.           will not get the list of users that received the notice.
  874.  
  875.           Syntax: NOTICE <target> :<message>
  876.  
  877.  
  878.           5.10.1.  Results
  879.  
  880.           Same as defined in RFC1459, but with the additional  functionality  of
  881.           sending to a list of nicknames within the context of a channel.
  882.  
  883.           5.11.  PRIVMSG (extension to RFC1459 command)
  884.  
  885.           Sends a message to a channel or user.  PRIVMSG is extended in the same
  886.           way as NOTICE.
  887.  
  888.           Syntax: PRIVMSG <target> :<message>
  889.  
  890.  
  891.           5.11.1.  Results
  892.  
  893.           Same as defined in RFC1459, but with the additional  functionality  of
  894.           sending to a list of nicknames within the context of a channel.
  895.  
  896.           5.12.  PROP (new IRCX command)
  897.  
  898.           Add, change or delete a channel data property.
  899.  
  900.           To query a property:
  901.  
  902.           Syntax 1: PROP <channel> <property>[,<property>]
  903.  
  904.           To set or change a property:
  905.  
  906.           Syntax 2: PROP <channel> <property> :<data>
  907.  
  908.           To delete a property:
  909.  
  910.           Syntax 3: PROP <channel> <property> :
  911.  
  912.  
  913.           5.12.1.  Results
  914.  
  915.             PROP message
  916.             IRCRPL_PROPLIST
  917.             IRCRPL_PROPEND
  918.  
  919.  
  920.  
  921.  
  922.           Cedola, Dusseault & Pfenning                                 [Page 14]
  923.  
  924.  
  925.  
  926.  
  927.  
  928.           INTERNET-DRAFT                                          20 August 1997
  929.  
  930.  
  931.           5.12.2.  Possible Errors
  932.  
  933.             IRCERR_BADCOMMAND
  934.             IRCERR_BADPROPERTY
  935.             IRCERR_SECURITY
  936.             IRCERR_NOSUCHOBJECT
  937.             IRCERR_TOOMANYARGUMENTS
  938.             IRCERR_BADVALUE
  939.  
  940.  
  941.           5.12.3.  Remarks
  942.  
  943.           The  PROP  command  provides  a new method for manipulating string and
  944.           numeric properties of channels.  If an optional  channel  property  is
  945.           not  supported on the server, the server should return IRCERR_BADPROP-
  946.           ERTY.
  947.  
  948.           See section 8.2 for definitions of channel properties.
  949.  
  950.           5.12.4.  Examples
  951.  
  952.             Client: PROP #MyChan TOPIC,ONJOIN
  953.             Server: :<host> 818 <nick> #MyChan TOPIC :This is the topic of my channel
  954.             Server: :<host> 818 <nick> #MyChan ONJOIN :Welcome to my channel!
  955.             Server: :<host> 819 <nick> #MyChan :End of properties
  956.  
  957.             Client: PROP #MyChannel TOPIC :Change my channel topic to something
  958.             Server: PROP #MyChannel TOPIC :Change my channel topic to something
  959.  
  960.  
  961.           5.13.  WHISPER (new IRCX command)
  962.  
  963.           Whisper to member(s) in a channel.
  964.  
  965.           Syntax: WHISPER <channel> <nick-list> :<message>
  966.  
  967.           5.13.1.  Results
  968.  
  969.             WHISPER message
  970.  
  971.  
  972.           5.13.2.  Possible Errors
  973.  
  974.             ERR_UNKNOWNCOMMAND
  975.             IRCERR_NEEDMOREPARAMS
  976.             IRCERR_NOTONCHANNEL
  977.             IRCERR_CANNOTSENDTOCHANNEL
  978.             IRCERR_TOOMANYTARGETS
  979.             IRCERR_NOSUCHNICK
  980.             IRCERR_NOSUCHCHANNEL
  981.             IRCERR_NOWHISPER
  982.             ERR_USERNOTINCHANNEL
  983.  
  984.  
  985.  
  986.  
  987.  
  988.           Cedola, Dusseault & Pfenning                                 [Page 15]
  989.  
  990.  
  991.  
  992.  
  993.  
  994.           INTERNET-DRAFT                                          20 August 1997
  995.  
  996.  
  997.           5.13.3.  Remarks
  998.  
  999.           The purpose of the WHISPER command is to whisper to one or  more  mem-
  1000.           bers  in a channel within the context of that channel.  The sender and
  1001.           all recipients must be in the channel specified.
  1002.  
  1003.           IRCX clients should display the WHISPER  message  within  the  context
  1004.           (window)  of  the  specified  channel.  Non-IRCX clients may receive a
  1005.           PRIVMSG with the content of the whisper.  Only  one  whisper  will  be
  1006.           sent per nick.  A user may whisper to themselves.
  1007.  
  1008.           The channel mode 'w' will disable whispers between ordinary members of
  1009.           the channel (but not whispers from or to channel operators).
  1010.  
  1011.  
  1012.           6.  IRCX Server Messages
  1013.  
  1014.           This section summarizes new extended messages which can be  sent  from
  1015.           the server.
  1016.  
  1017.  
  1018.           6.1.  AUTH (new IRCX message)
  1019.  
  1020.           Negotiates  authentication  with  client or informs client that autho-
  1021.           rization was successful.
  1022.  
  1023.           Syntax 1 (negotiating authorization): AUTH <name> S: [<parameter>]
  1024.  
  1025.           Syntax 2 (authorization successful): AUTH <name> * <ident> <oid>
  1026.  
  1027.           6.1.1.  Parameters
  1028.  
  1029.           <name>  The name of the SASL mechanism to use for authentication.  The
  1030.           specific SASL mechanisms supported are implementation-dependent.
  1031.  
  1032.           <ident>   The  ident  is the userid@domain of the authenticated client
  1033.           account.  It is returned on the final response from the server (Syntax
  1034.           2) when authentication is successful.
  1035.  
  1036.           <oid>   The  OID  is  the  internal  object identifier assigned to the
  1037.           client connection. If not supported by the server, then  '0'  must  be
  1038.           returned.
  1039.  
  1040.           <parameter>   This  is optional data sent as an argument with the AUTH
  1041.           messages.  The content depends on the authentication  mechanism  being
  1042.           used.
  1043.  
  1044.  
  1045.           6.1.2.  Remarks
  1046.  
  1047.           The server will send the syntax 2 form when the authentication process
  1048.           is complete or a numeric error reply.
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.           Cedola, Dusseault & Pfenning                                 [Page 16]
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.           INTERNET-DRAFT                                          20 August 1997
  1061.  
  1062.  
  1063.           6.2.  CLONE (new IRCX message)
  1064.  
  1065.           Informs the hosts and owners in a CLONEABLE channel that a  new  CLONE
  1066.           channel was created.
  1067.  
  1068.           Syntax: CLONE <channel-name> <oid>
  1069.  
  1070.           6.2.1.  Parameters
  1071.  
  1072.           <channel-name> The name of the created CLONE channel.
  1073.  
  1074.           <oid>  The object identifier for this new CLONE channel.  The value is
  1075.           implementation- dependent and must equal 0 if not supported.
  1076.  
  1077.           6.2.2.  Remarks
  1078.  
  1079.           The CLONE message can be sent at anytime  to  the  hosts/owners  of  a
  1080.           CLONEABLE channel to inform them that a new CLONE channel was created.
  1081.           This message is intended to be used by a custom application  to  auto-
  1082.           matically  join the new CLONE channel.  A non-IRCX client will not get
  1083.           this message.
  1084.  
  1085.  
  1086.           6.2.3.  Example:
  1087.  
  1088.                Server: CLONE #MyChat1 034F8FF32
  1089.  
  1090.  
  1091.           6.3.  CREATE (new IRCX message)
  1092.  
  1093.           Informs the client that a new channel was created.   Response  to  the
  1094.           CREATE command.
  1095.  
  1096.           Syntax: CREATE <channel-name> <oid>
  1097.  
  1098.           6.3.1.  Parameters
  1099.  
  1100.           <channel-name> The name of the created channel.
  1101.  
  1102.           <oid> The object identifier for this new channel.  The value is imple-
  1103.           mentation- dependent and must equal 0 if not supported.
  1104.  
  1105.           6.3.2.  Remarks
  1106.  
  1107.           The CREATE message is sent in response to a CREATE command sent by the
  1108.           client  application  if the channel specified did not previously exist
  1109.           and was created by the server.
  1110.  
  1111.           6.3.3.  Example:
  1112.  
  1113.                Server: CREATE #MyChat1 034F8FF32
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.           Cedola, Dusseault & Pfenning                                 [Page 17]
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.           INTERNET-DRAFT                                          20 August 1997
  1127.  
  1128.  
  1129.           6.4.  DATA / REQUEST / REPLY (new IRCX messages)
  1130.  
  1131.           The DATA message (could be REQUEST or REPLY also)  is  forwarded  from
  1132.           another  user or sent by the server.  The payload or message should be
  1133.           interpreted according to the tag.  If the tag is unknown, the  message
  1134.           may be discarded.
  1135.  
  1136.           Syntax 1: <sender> :DATA <target> <tag> :<message>
  1137.                     <sender> :REQUEST <target> <tag> :<message>
  1138.                     <sender> :REPLY <target> <tag> :<message>
  1139.  
  1140.           If  the  DATA, REQUEST or REPLY message is sent to a number of members
  1141.           within a channel, the receiving user will see  the  channel  name  and
  1142.           their own nick in the message as follows:
  1143.  
  1144.           Syntax 2:  <sender> :DATA <channel> <nick> <tag> :<message>
  1145.  
  1146.  
  1147.           6.4.1.  Parameters
  1148.  
  1149.           <sender> May be a user or a server.
  1150.  
  1151.           <target> Channel and/or nick list as defined above.
  1152.  
  1153.           <tag> Identifying tag.
  1154.  
  1155.           <message> Payload.
  1156.  
  1157.           6.4.2.  Remarks
  1158.  
  1159.           The tag indicates what to do with the message.  Tag types may be spec-
  1160.           ified by administrators, client developers, server developers etc.
  1161.  
  1162.           A tag beginning with SYS can only  be  from  a  sysop,  admin  or  the
  1163.           server.   A  tag  beginning  with ADM can only be from an admin or the
  1164.           server.
  1165.  
  1166.           DATA message functionality is different from a simple client-to-client
  1167.           message  in  several  respects.   First, we encourage groups to define
  1168.           their own tags and data formats for special purposes, for  example  to
  1169.           indicate  details  for a user's avatar in graphical chats, or to indi-
  1170.           cate that an ad banner or image should  be  downloaded.   Second,  the
  1171.           DATA  message  is  more appropriate for content that may go to several
  1172.           users, for example all users in a channel.  Third,  the  DATA  message
  1173.           may come from the server.  Fourth, the SYS and ADM prefixes are speci-
  1174.           fied so that important tags may be reserved for sysops, admins and the
  1175.           server  itself,  with  the server responsible for verifying the sender
  1176.           before forwarding the DATA message.
  1177.  
  1178.           6.5.  EVENT (new optional IRCX message)
  1179.  
  1180.           Notifies the client of an event.  These events are intended for sysops
  1181.           and  admins,  and  are sent in addition to IRC events.  Specific event
  1182.           messages and message types are implementation-dependent.
  1183.  
  1184.  
  1185.  
  1186.           Cedola, Dusseault & Pfenning                                 [Page 18]
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.           INTERNET-DRAFT                                          20 August 1997
  1193.  
  1194.  
  1195.           Syntax:  EVENT <time-stamp> <object> <event type> <parameters>
  1196.  
  1197.           6.5.1.  Parameters
  1198.  
  1199.           <time-stamp> The number of elapsed seconds  from  midnight  (00:00:00)
  1200.           January  1,  1970 (coordinated universal time) until the time that the
  1201.           event occurred on the server.
  1202.  
  1203.           <object> Objects can be Channel, Member, User, Connection,  Socket  or
  1204.           Server.
  1205.  
  1206.           <event  type> Event type varies depending on the object.  For example,
  1207.           events for channels can be Create, Destroy, Topic change, Mode change,
  1208.           Collision.
  1209.  
  1210.           <parameters> Vary depending on event type.
  1211.  
  1212.  
  1213.           6.5.2.  Example
  1214.  
  1215.           This example is the event generated when a user logs onto server chat1
  1216.           with the nickname john, showing the user's info including  IP  address
  1217.           and port.
  1218.  
  1219.           EVENT chat1 946080000 USER LOGON john!jsmith@uw.edu 192.29.93.93:1111
  1220.  
  1221.  
  1222.           6.6.  KNOCK (new IRCX message)
  1223.  
  1224.           Informs  the  owners  and  hosts of a channel that a user has tried to
  1225.           enter the channel and could not (could be because of a  full  channel,
  1226.           keyword  set,  user ban, or other reasons).  This message is only sent
  1227.           to the owners and hosts of the channel in IRCX mode.
  1228.  
  1229.           Syntax: <user> KNOCK <channel-name> <reason>
  1230.  
  1231.           6.6.1.  Parameters
  1232.  
  1233.           <user> User field is of the format nick!userid@host.
  1234.  
  1235.           <channel-name> Name of the channel that the user tried to enter.
  1236.  
  1237.           <reason> Reason that the user received when they  tried  to  join  the
  1238.           channel.
  1239.  
  1240.  
  1241.           6.6.2.  Remarks
  1242.  
  1243.           A KNOCK message will not be sent to a non-IRCX client.
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.           Cedola, Dusseault & Pfenning                                 [Page 19]
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.           INTERNET-DRAFT                                          20 August 1997
  1259.  
  1260.  
  1261.           6.7.  REDIRECT (new IRCX message)
  1262.  
  1263.           Informs the client that they need to connect to another server.
  1264.  
  1265.           Syntax: REDIRECT <server-list> :<reason>
  1266.  
  1267.           6.7.1.  Parameters
  1268.  
  1269.           <server-list>  The  server list is a comma seperated list of host:port
  1270.           pairs.  The server list can be specified either as  a  fully-qualified
  1271.           domain name or by the IP address in quad-dotted notation.
  1272.  
  1273.           <reason>  The  redirect  reason  is an implementation-dependent string
  1274.           which can optionally be displayed to the client.
  1275.  
  1276.           6.7.2.  Remarks
  1277.  
  1278.           The REDIRECT message can be sent to the client at any time to  request
  1279.           that  the  client disconnect and reconnect to another server specified
  1280.           in the list.   The REDIRECT message is generally sent when a server is
  1281.           to be shutdown.
  1282.  
  1283.           A REDIRECT message will not be sent to a non-IRCX client.
  1284.  
  1285.  
  1286.           6.7.3.  Example
  1287.  
  1288.                Server: REDIRECT chat.corp.net:6667,134.9.3.3:6667 :Server full.
  1289.  
  1290.  
  1291.           6.8.  WHISPER (new IRCX message)
  1292.  
  1293.           A whisper from another channel member.
  1294.  
  1295.           Syntax: <sender> WHISPER <channel> <nick list> :<text>
  1296.  
  1297.           6.8.1.  Parameters
  1298.  
  1299.           <sender> The nick-name of the person that sent the whisper.
  1300.  
  1301.           <channel> The channel that the message is sent to.
  1302.  
  1303.           <nick list> The list of nicknames of channel members that will receive
  1304.           the whisper.
  1305.  
  1306.           <text> The content of the whisper.
  1307.  
  1308.           6.8.2.  Remarks
  1309.  
  1310.           The server may transform a WHISPER into a PRIVMSG for clients that  do
  1311.           not support IRCX.
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.           Cedola, Dusseault & Pfenning                                 [Page 20]
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.           INTERNET-DRAFT                                          20 August 1997
  1325.  
  1326.  
  1327.           6.8.3.  Example
  1328.  
  1329.                Server: Joe WHISPER #test :Test whisper.
  1330.  
  1331.  
  1332.           7.  User Modes and Properties
  1333.  
  1334.           These  are  new  user  modes and properties that have been added.  The
  1335.           MODE command as defined in RFC1459 is used to add or remove modes.
  1336.  
  1337.  
  1338.           7.1.  OWNER (IRCX +q)
  1339.  
  1340.           The OWNER mode indicates that the user is an owner of a channel.  Only
  1341.           a channel owner can give OWNER mode to another member of that channel,
  1342.           but any owner may remove OWNER mode from themself.
  1343.  
  1344.           Clients in IRCX mode see owner nicknames with a '.'  prefix  and  con-
  1345.           tinue  to  see  hosts  with  a '@' prefix (in results from NAMES, WHO,
  1346.           WHOIS and other commands which list nicknames).
  1347.  
  1348.           Note that HOST mode uses +o, which was  "operator"  mode  in  RFC1459.
  1349.           Syntax for these modes is the same as "operator" mode:
  1350.  
  1351.           MODE <channel> { + | - }q <nick>
  1352.  
  1353.  
  1354.           7.2.  GAG (IRCX +z)
  1355.  
  1356.           The  GAG  mode is applied by a sysop or admin on a user and may not be
  1357.           removed except by a sysop or admin.  The user may not be notified when
  1358.           this mode is applied because the mode can be a more effective tool for
  1359.           keeping order if the user doesn't know exactly when it is applied.
  1360.  
  1361.           The server will discard all messages from a user with GAG mode to  any
  1362.           other user or to any channel.
  1363.  
  1364.           MODE <nick> { + | - }z
  1365.  
  1366.  
  1367.           8.  Channel Modes and Properties
  1368.  
  1369.           New  modes  and properties have been added to channels.  Some of these
  1370.           are optional and are marked as such.
  1371.  
  1372.           Channels support four mutually exclusive states of visibility: public,
  1373.           private,  hidden,  and  secret.   The  visibility of a channel affects
  1374.           which modes and properties are available to a client.  Each mode/prop-
  1375.           erty is followed by a table that consists of a matrix of the channel's
  1376.           visibility state and each type  of  client.   R/W  is  for  Read/Write
  1377.           access,  WO for Write Only access, RO for Read Only access, "-" for no
  1378.           access (can't be queried), "*" for special  access  explained  in  the
  1379.           mode  description, and N/A for does not apply. These access rights are
  1380.           listed for the different access levels.
  1381.  
  1382.  
  1383.  
  1384.           Cedola, Dusseault & Pfenning                                 [Page 21]
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.           INTERNET-DRAFT                                          20 August 1997
  1391.  
  1392.  
  1393.           8.1.  Modes
  1394.  
  1395.           Each channel object contains a number of binary mode settings that can
  1396.           be queried and optionally updated via the RFC1459 MODE command.
  1397.  
  1398.  
  1399.           8.1.1.  PUBLIC (RFC1459 default)
  1400.  
  1401.           The  channel  is  public and all information about the channel (except
  1402.           for text messages) can be queried  by  non-members.   PUBLIC  mode  is
  1403.           mutually exclusive with the PRIVATE, HIDDEN and SECRET modes.
  1404.  
  1405.                     Admin  Sysop  Owner  Host  Member  User
  1406.             Public   R/W    RO     R/W    R/W    RO     RO
  1407.             Private  N/A    N/A    N/A    N/A    N/A    N/A
  1408.             Hidden   N/A    N/A    N/A    N/A    N/A    N/A
  1409.             Secret   N/A    N/A    N/A    N/A    N/A    N/A
  1410.  
  1411.  
  1412.           8.1.2.  PRIVATE (RFC1459 +p)
  1413.  
  1414.           The  channel  is private and only the name, number of members and PICS
  1415.           property can be queried  by  non-members.  PRIVATE  mode  is  mutually
  1416.           exclusive with the PUBLIC, HIDDEN and SECRET modes.
  1417.  
  1418.                     Admin  Sysop  Owner  Host  Member  User
  1419.             Public   N/A    N/A    N/A    N/A    N/A    N/A
  1420.             Private  R/W    RO     R/W    R/W    RO     -
  1421.             Hidden   N/A    N/A    N/A    N/A    N/A    N/A
  1422.             Secret   N/A    N/A    N/A    N/A    N/A    N/A
  1423.  
  1424.  
  1425.           8.1.3.  HIDDEN (IRCX +h)
  1426.  
  1427.           The  channel  is  hidden  and cannot be located by enumeration queries
  1428.           from non-members. HIDDEN mode is mutually exclusive with  the  PUBLIC,
  1429.           PRIVATE, and SECRET modes.  The purpose of the new HIDDEN channel mode
  1430.           is to permit the existence of channels that cannot be found using  the
  1431.           standard  LIST  command,  but  whose  properties can be queried if the
  1432.           exact channel name is known.  Thus a HIDDEN channel is the same  as  a
  1433.           PUBLIC  channel except that it cannot be enumerated by using a LIST or
  1434.           LISTX command.
  1435.  
  1436.                     Admin  Sysop  Owner  Host  Member  User
  1437.             Public   N/A    N/A    N/A    N/A    N/A    N/A
  1438.             Private  N/A    N/A    N/A    N/A    N/A    N/A
  1439.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1440.             Secret   N/A    N/A    N/A    N/A    N/A    N/A
  1441.  
  1442.  
  1443.           8.1.4.  SECRET (RFC1459 +s)
  1444.  
  1445.           The channel is secret and cannot by located by any query from non-mem-
  1446.           bers.  SECRET mode is mutually exclusive with the PUBLIC, PRIVATE, and
  1447.  
  1448.  
  1449.  
  1450.           Cedola, Dusseault & Pfenning                                 [Page 22]
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.           INTERNET-DRAFT                                          20 August 1997
  1457.  
  1458.  
  1459.           HIDDEN modes.
  1460.  
  1461.                     Admin  Sysop  Owner  Host  Member  User
  1462.             Public   N/A    N/A    N/A    N/A    N/A    N/A
  1463.             Private  N/A    N/A    N/A    N/A    N/A    N/A
  1464.             Hidden   N/A    N/A    N/A    N/A    N/A    N/A
  1465.             Secret   R/W    RO     R/W    R/W    RO     -
  1466.  
  1467.  
  1468.           8.1.5.  MODERATED (RFC1459 +m)
  1469.  
  1470.           Normally, new channel members may speak.  In MODERATED  mode  however,
  1471.           new  channel  members  may  not speak by default.  This is achieved by
  1472.           giving all new members the '-v' mode  (no  voice)  for  that  channel.
  1473.           Usually -v mode has no effect, but in a MODERATED channel it does.
  1474.  
  1475.                     Admin  Sysop  Owner  Host  Member  User
  1476.             Public   R/W    RO     R/W    R/W    RO     RO
  1477.             Private  R/W    RO     R/W    R/W    RO     -
  1478.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1479.             Secret   R/W    RO     R/W    R/W    RO     -
  1480.  
  1481.  
  1482.           8.1.6.  NOEXTERN (RFC1459 +n)
  1483.  
  1484.           NOEXTERN  mode  blocks  messages  from  non-members to the channel. An
  1485.           administrator can still send a message to the channel.
  1486.  
  1487.                     Admin  Sysop  Owner  Host  Member  User
  1488.             Public   R/W    RO     R/W    R/W    RO     RO
  1489.             Private  R/W    RO     R/W    R/W    RO     -
  1490.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1491.             Secret   R/W    RO     R/W    R/W    RO     -
  1492.  
  1493.  
  1494.           8.1.7.  TOPICOP (RFC1459 +t)
  1495.  
  1496.           TOPICOP mode permits only channel owners and hosts to change the chan-
  1497.           nel topic property.
  1498.  
  1499.                     Admin  Sysop  Owner  Host  Member  User
  1500.             Public   R/W    RO     R/W    R/W    RO     RO
  1501.             Private  R/W    RO     R/W    R/W    RO     -
  1502.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1503.             Secret   R/W    RO     R/W    R/W    RO     -
  1504.  
  1505.  
  1506.           8.1.8.  INVITE (RFC1459 +i)
  1507.  
  1508.           INVITE  mode  permits  only  invited users to enter the channel.  Only
  1509.           owners and hosts can issue an invitation when this mode is on.
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.           Cedola, Dusseault & Pfenning                                 [Page 23]
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.           INTERNET-DRAFT                                          20 August 1997
  1523.  
  1524.  
  1525.                     Admin  Sysop  Owner  Host  Member  User
  1526.             Public   R/W    RO     R/W    R/W    RO     RO
  1527.             Private  R/W    RO     R/W    R/W    RO     -
  1528.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1529.             Secret   R/W    RO     R/W    R/W    RO     -
  1530.  
  1531.  
  1532.           8.1.9.  KNOCK (IRCX +u)
  1533.  
  1534.           The KNOCK extended mode causes a KNOCK message to be  sent  to  owners
  1535.           and  hosts  of  the channel if user attempts to join a channel and the
  1536.           server denies entrance.
  1537.  
  1538.                     Admin  Sysop  Owner  Host  Member  User
  1539.             Public   R/W    RO     R/W    R/W    RO     RO
  1540.             Private  R/W    RO     R/W    R/W    RO     -
  1541.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1542.             Secret   R/W    RO     R/W    R/W    RO     -
  1543.  
  1544.  
  1545.           8.1.10.  NOFORMAT (IRCX +f)
  1546.  
  1547.           The NOFORMAT channel mode is an indication to the  client  application
  1548.           not to format text received from  the  channel.  Normally clients will
  1549.           prefix text messages with "x said y" or "x whispers to y  and  x",  if
  1550.           the  NOFORMAT  mode is set then  just  the  raw text  should  be  dis-
  1551.           played  moving to the next line at the end of the message.  The client
  1552.           should  not  echo  text  sent by the client.  This is to permit custom
  1553.           applications to control the formatting to clients.  Clients  may  want
  1554.           to inform users that messages can be spoofed with this mode.
  1555.  
  1556.                     Admin  Sysop  Owner  Host  Member  User
  1557.             Public   R/W    RO     RO     RO     RO     RO
  1558.             Private  R/W    RO     RO     RO     RO     -
  1559.             Hidden   R/W    RO     RO     RO     RO     RO
  1560.             Secret   R/W    RO     RO     RO     RO     -
  1561.  
  1562.  
  1563.           8.1.11.  NOWHISPER (IRCX +w)
  1564.  
  1565.           The  NOWHISPER channel mode will prevent all messages sent to specific
  1566.           nicknames within the context of that channel.
  1567.  
  1568.                     Admin  Sysop  Owner  Host  Member  User
  1569.             Public   R/W    RO     R/W    RO     RO     RO
  1570.             Private  R/W    RO     R/W    RO     RO     -
  1571.             Hidden   R/W    RO     R/W    RO     RO     RO
  1572.             Secret   R/W    RO     R/W    RO     RO     -
  1573.  
  1574.  
  1575.           8.1.12.  AUDITORIUM (IRCX +x)
  1576.  
  1577.           The AUDITORIUM channel mode restricts visibility and messaging  within
  1578.           a  channel.   Members will only see themselves and the hosts/owners in
  1579.  
  1580.  
  1581.  
  1582.           Cedola, Dusseault & Pfenning                                 [Page 24]
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.           INTERNET-DRAFT                                          20 August 1997
  1589.  
  1590.  
  1591.           the channel.  Any message sent by a member will only  be  received  by
  1592.           the  hosts  and  owners.  Hosts and owners will see all members in the
  1593.           channel and messages from a host or owner are seen by all channel mem-
  1594.           bers.  Ordinary members will not receive JOIN/PART messages from other
  1595.           members.  This mode is designed for channels with so many members that
  1596.           they  do  not  want  to see each other.  Note that auditorium mode may
  1597.           only be set at channel creation time using the CREATE command.
  1598.  
  1599.  
  1600.                     Admin  Sysop  Owner  Host  Member  User
  1601.             Public   R/W    R/W    R/W    RO     RO     RO
  1602.             Private  R/W    R/W    R/W    RO     RO     -
  1603.             Hidden   R/W    R/W    R/W    RO     RO     RO
  1604.             Secret   R/W    R/W    R/W    RO     RO     -
  1605.  
  1606.  
  1607.           8.1.13.  REGISTERED (IRCX +r)
  1608.  
  1609.           The channel is registered by the administrator of  the  chat  network.
  1610.           The  registration procedure is not defined here and is implementation-
  1611.           dependent.  Only the server or admin can set this mode.
  1612.  
  1613.                     Admin  Sysop  Owner  Host  Member  User
  1614.             Public   R/W    RO     RO     RO     RO     RO
  1615.             Private  R/W    RO     RO     RO     RO     -
  1616.             Hidden   R/W    RO     RO     RO     RO     RO
  1617.             Secret   R/W    RO     RO     RO     RO     -
  1618.  
  1619.  
  1620.           8.1.14.  SERVICE (IRCX +z)
  1621.  
  1622.           A service is monitoring/controlling the channel.  This is  an  indica-
  1623.           tion  to  the client that message traffic sent to the channel is being
  1624.           monitored by a Chat Service which does not appear as a member  in  the
  1625.           channel.  The SERVICE flag can only be set by the Chat Server.
  1626.  
  1627.                     Admin  Sysop  Owner  Host  Member  User
  1628.             Public   RO     RO     RO     RO     RO     RO
  1629.             Private  RO     RO     RO     RO     RO     -
  1630.             Hidden   RO     RO     RO     RO     RO     RO
  1631.             Secret   RO     RO     RO     RO     RO     -
  1632.  
  1633.  
  1634.           8.1.15.  AUTHONLY (IRCX +a)
  1635.  
  1636.           The  AUTHONLY  channel  mode  permits channel access only to users who
  1637.           have been authenticated by the server.   Note  that  an  authenticated
  1638.           user  is  any  user  that was successfully authenticated with the PASS
  1639.           command or the AUTH command.
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.           Cedola, Dusseault & Pfenning                                 [Page 25]
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.           INTERNET-DRAFT                                          20 August 1997
  1655.  
  1656.  
  1657.                     Admin  Sysop  Owner  Host  Member  User
  1658.             Public   R/W    RO     R/W    RO     RO     RO
  1659.             Private  R/W    RO     R/W    RO     RO     -
  1660.             Hidden   R/W    RO     R/W    RO     RO     RO
  1661.             Secret   R/W    RO     R/W    RO     RO     -
  1662.  
  1663.  
  1664.           8.1.16.  CLONEABLE (IRCX +d)
  1665.  
  1666.           The CLONEABLE channel mode defines a channel that  creates  new  clone
  1667.           channels  if  the  parent channel is full.  A clone channel is created
  1668.           with the same name as the parent cloneable channel with a numeric suf-
  1669.           fix  starting  at 1, ranging to 99.  It is not valid to set the CLONE-
  1670.           ABLE channel mode of a parent channel that ends with a numeric charac-
  1671.           ter.   The clone channel inherits modes and properties from the parent
  1672.           channel when it is set up.  When a clone channel is created, any chan-
  1673.           nel  that  has  the  same name is removed.  This prevents channel take
  1674.           over of a clone channel.  It is advised that  only  administrators  be
  1675.           allowed to set cloneable mode on a channel.
  1676.  
  1677.                     Admin  Sysop  Owner  Host  Member  User
  1678.             Public   R/W    RO     RO     RO     RO     RO
  1679.             Private  R/W    RO     RO     RO     RO     -
  1680.             Hidden   R/W    RO     RO     RO     RO     RO
  1681.             Secret   R/W    RO     RO     RO     RO     -
  1682.  
  1683.  
  1684.           8.1.17.  CLONE (IRCX +e)
  1685.  
  1686.           The  CLONE  channel  mode  defines  a  channel that was created by the
  1687.           server when a parent CLONEABLE channel  becomes  full.   Users  should
  1688.           usually  join  the  parent  channel,  although a user may join a clone
  1689.           channel that is not full.  An admin can set up  a  clone  channel  but
  1690.           only when the channel is being created.
  1691.  
  1692.                     Admin  Sysop  Owner  Host  Member  User
  1693.             Public    *     RO     RO     RO     RO     RO
  1694.             Private   *     RO     RO     RO     RO     -
  1695.             Hidden    *     RO     RO     RO     RO     RO
  1696.             Secret    *     RO     RO     RO     RO     -
  1697.  
  1698.  
  1699.           8.2.  Properties
  1700.  
  1701.           Each  channel  object  contains  a  number  of  properties that can be
  1702.           queried and optionally updated via the IRCX PROP command.  Owners  and
  1703.           hosts  may update a property for their own channel.  Admins and Sysops
  1704.           can use the PROP command on a channel only by becoming  host/owner  of
  1705.           that channel.  Users and members can read properties only.
  1706.  
  1707.           8.2.1.  OID (R/O)
  1708.  
  1709.           The  OID  channel  property  is the internal object identifier for the
  1710.           channel.  As a shortcut, the OID can be optionally used  in  place  of
  1711.  
  1712.  
  1713.  
  1714.           Cedola, Dusseault & Pfenning                                 [Page 26]
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.           INTERNET-DRAFT                                          20 August 1997
  1721.  
  1722.  
  1723.           the  full  string  name  of a channel.  If the OID is set to "0", then
  1724.           this feature is not supported on the server.
  1725.  
  1726.                     Admin  Sysop  Owner  Host  Member  User
  1727.             Public   RO     RO     RO     RO     RO     RO
  1728.             Private  RO     RO     RO     RO     RO     -
  1729.             Hidden   RO     RO     RO     RO     RO     RO
  1730.             Secret   RO     RO     RO     RO     RO     -
  1731.  
  1732.  
  1733.           8.2.2.  NAME (R/O)
  1734.  
  1735.           The NAME channel property is the name of the channel  (limited  to  63
  1736.           characters,  including  1  or 2 characters for channel prefix).  Valid
  1737.           characters are as defined in RFC1459.
  1738.  
  1739.                     Admin  Sysop  Owner  Host  Member  User
  1740.             Public   RO     RO     RO     RO     RO     RO
  1741.             Private  RO     RO     RO     RO     RO     -
  1742.             Hidden   RO     RO     RO     RO     RO     RO
  1743.             Secret   RO     RO     RO     RO     RO     -
  1744.  
  1745.  
  1746.           8.2.3.  CREATION (R/O)
  1747.  
  1748.           The CREATION channel property is the time that the  channel  was  cre-
  1749.           ated,  in number of seconds elapsed since midnight (00:00:00), January
  1750.           1, 1970, (coordinated universal time).
  1751.  
  1752.                     Admin  Sysop  Owner  Host  Member  User
  1753.             Public   RO     RO     RO     RO     RO     RO
  1754.             Private  RO     RO     RO     RO     RO     -
  1755.             Hidden   RO     RO     RO     RO     RO     RO
  1756.             Secret   RO     RO     RO     RO     RO     -
  1757.  
  1758.  
  1759.           8.2.4.  LANGUAGE
  1760.  
  1761.           The LANGUAGE channel property is the  perferred  language  type.   The
  1762.           LANGUAGE  property is a string limited to 31 characters.  We recommend
  1763.           following the guidelines of RFC1766 to form well-understood  language-
  1764.           defining strings.
  1765.  
  1766.                     Admin  Sysop  Owner  Host  Member  User
  1767.             Public   R/W    RO     R/W    R/W    RO     RO
  1768.             Private  R/W    RO     R/W    R/W    RO     -
  1769.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1770.             Secret   R/W    RO     R/W    R/W    RO     -
  1771.  
  1772.  
  1773.           8.2.5.  OWNERKEY
  1774.  
  1775.           The  OWNERKEY  channel property is the owner keyword that will provide
  1776.           owner access when entering the  channel.   The  OWNERKEY  property  is
  1777.  
  1778.  
  1779.  
  1780.           Cedola, Dusseault & Pfenning                                 [Page 27]
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.           INTERNET-DRAFT                                          20 August 1997
  1787.  
  1788.  
  1789.           limited to 31 characters.
  1790.  
  1791.                     Admin  Sysop  Owner  Host  Member  User
  1792.             Public   WO     -      WO     -      -      -
  1793.             Private  WO     -      WO     -      -      -
  1794.             Hidden   WO     -      WO     -      -      -
  1795.             Secret   WO     -      WO     -      -      -
  1796.  
  1797.  
  1798.           8.2.6.  HOSTKEY
  1799.  
  1800.           The  HOSTKEY  channel  property  is the host keyword that will provide
  1801.           host (channel op) access when entering the channel.  The HOSTKEY prop-
  1802.           erty is limited to 31 characters.
  1803.  
  1804.                     Admin  Sysop  Owner  Host  Member  User
  1805.             Public   WO     -      WO     -      -      -
  1806.             Private  WO     -      WO     -      -      -
  1807.             Hidden   WO     -      WO     -      -      -
  1808.             Secret   WO     -      WO     -      -      -
  1809.  
  1810.  
  1811.           8.2.7.  MEMBERKEY
  1812.  
  1813.           The  MEMBERKEY  channel  property is the keyword required to enter the
  1814.           channel.  The MEMBERKEY property is limited to 31 characters.  This is
  1815.           backwards-compatible with RFC1459 because users can still use the MODE
  1816.           command as an alternative way to set this property.
  1817.  
  1818.                     Admin  Sysop  Owner  Host  Member  User
  1819.             Public   WO     -      WO     -      -      -
  1820.             Private  WO     -      WO     -      -      -
  1821.             Hidden   WO     -      WO     -      -      -
  1822.             Secret   WO     -      WO     -      -      -
  1823.  
  1824.  
  1825.           8.2.8.  PICS (Optional)
  1826.  
  1827.           The PICS channel property is the current PICS rating of  the  channel.
  1828.           Chat  clients that are PICS enabled can use this property to determine
  1829.           if the channel is appropriate for the user.  The PICS property is lim-
  1830.           ited  to 255 characters.  The format for this field is defined by PICS
  1831.           (see http://www.w3.org).
  1832.  
  1833.                     Admin  Sysop  Owner  Host  Member  User
  1834.             Public   R/W    RO     RO     RO     RO     RO
  1835.             Private  R/W    RO     RO     RO     RO     RO
  1836.             Hidden   R/W    RO     RO     RO     RO     RO
  1837.             Secret   R/W    RO     RO     RO     RO     -
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.           Cedola, Dusseault & Pfenning                                 [Page 28]
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.           INTERNET-DRAFT                                          20 August 1997
  1853.  
  1854.  
  1855.           8.2.9.  TOPIC
  1856.  
  1857.           The TOPIC channel property is the current topic of the  channel.   The
  1858.           TOPIC property is limited to 160 characters.
  1859.  
  1860.                     Admin  Sysop  Owner  Host  Member  User
  1861.             Public   R/W    RO     R/W    R/W    RO     RO
  1862.             Private  R/W    RO     R/W    R/W    RO     -
  1863.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1864.             Secret   R/W    RO     R/W    R/W    RO     -
  1865.  
  1866.  
  1867.           8.2.10.  SUBJECT
  1868.  
  1869.           The SUBJECT channel property is a string that can contain subject key-
  1870.           words.  The SUBJECT property is limited to 31 characters.
  1871.  
  1872.                     Admin  Sysop  Owner  Host  Member  User
  1873.             Public   R/W    RO     R/W    R/W    RO     RO
  1874.             Private  R/W    RO     R/W    R/W    RO     -
  1875.             Hidden   R/W    RO     R/W    R/W    RO     RO
  1876.             Secret   R/W    RO     R/W    R/W    RO     -
  1877.  
  1878.  
  1879.           8.2.11.  CLIENT (Optional)
  1880.  
  1881.           The CLIENT channel property  contains  client  specified  information.
  1882.           The  format is not defined by the server.  The CLIENT property is lim-
  1883.           ited to 255 characters.
  1884.  
  1885.                     Admin  Sysop  Owner  Host  Member  User
  1886.             Public   R/W    RO     R/W    RO     RO     RO
  1887.             Private  R/W    RO     R/W    RO     RO     -
  1888.             Hidden   R/W    RO     R/W    RO     RO     RO
  1889.             Secret   R/W    RO     R/W    RO     RO     -
  1890.  
  1891.  
  1892.           8.2.12.  ONJOIN (Optional)
  1893.  
  1894.           The ONJOIN channel property contains a string to be sent (via PRIVMSG)
  1895.           to  a user after the user has joined the channel.  The channel name is
  1896.           displayed as the sender of the message.  Only  the  user  joining  the
  1897.           channel  will  see  this  message.  Multiple lines can be generated by
  1898.           embedding '\n' in the string.  The ONJOIN property is limited  to  255
  1899.           characters.
  1900.  
  1901.                     Admin  Sysop  Owner  Host  Member  User
  1902.             Public   R/W    RO     R/W    R/W    -      -
  1903.             Private  R/W    RO     R/W    R/W    -      -
  1904.             Hidden   R/W    RO     R/W    R/W    -      -
  1905.             Secret   R/W    RO     R/W    R/W    -      -
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.           Cedola, Dusseault & Pfenning                                 [Page 29]
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.           INTERNET-DRAFT                                          20 August 1997
  1919.  
  1920.  
  1921.           8.2.13.  ONPART (Optional)
  1922.  
  1923.           The  ONPART  channel  property  contains  a  string  that is sent (via
  1924.           NOTICE) to a user after they have parted from the channel.  The  chan-
  1925.           nel  name  is  displayed  as the sender of the message.  Only the user
  1926.           parting the channel will see this message.  Multiple lines can be gen-
  1927.           erated  by  embedding '\n' in the string.  The ONPART property is lim-
  1928.           ited to 255 characters.
  1929.  
  1930.                     Admin  Sysop  Owner  Host  Member  User
  1931.             Public   R/W    RO     R/W    R/W    -      -
  1932.             Private  R/W    RO     R/W    R/W    -      -
  1933.             Hidden   R/W    RO     R/W    R/W    -      -
  1934.             Secret   R/W    RO     R/W    R/W    -      -
  1935.  
  1936.  
  1937.           8.2.14.  LAG (Optional)
  1938.  
  1939.           The LAG channel property contains a numeric value between 0 to 2  sec-
  1940.           onds.   The server will add an artificial delay of that length between
  1941.           subsequent messages from the same member.  All messages to the channel
  1942.           are affected.
  1943.  
  1944.                     Admin  Sysop  Owner  Host  Member  User
  1945.             Public   R/W    RO     R/W    RO     RO     RO
  1946.             Private  R/W    RO     R/W    RO     RO     -
  1947.             Hidden   R/W    RO     R/W    RO     RO     RO
  1948.             Secret   R/W    RO     R/W    RO     RO     -
  1949.  
  1950.  
  1951.           8.2.15.  ACCOUNT (Optional)
  1952.  
  1953.           The  ACCOUNT  channel  property  contains  an implementation-dependent
  1954.           string for attaching a security account.  This controls access to  the
  1955.           channel  using the native OS security system.  The ACCOUNT property is
  1956.           limited to 31 characters.
  1957.  
  1958.                     Admin  Sysop  Owner  Host  Member  User
  1959.             Public   R/W    RO     RO     -      -      -
  1960.             Private  R/W    RO     RO     -      -      -
  1961.             Hidden   R/W    RO     RO     -      -      -
  1962.             Secret   R/W    RO     RO     -      -      -
  1963.  
  1964.  
  1965.           8.2.16.  CLIENTGUID (Optional)
  1966.  
  1967.           The CLIENTGUID channel property  contains  a  GUID  that  defines  the
  1968.           client protocol to be used within the channel.
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.           Cedola, Dusseault & Pfenning                                 [Page 30]
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.           INTERNET-DRAFT                                          20 August 1997
  1985.  
  1986.  
  1987.                     Admin  Sysop  Owner  Host  Member  User
  1988.             Public   R/W    RO     R/W    RO     RO     RO
  1989.             Private  R/W    RO     R/W    RO     RO     -
  1990.             Hidden   R/W    RO     R/W    RO     RO     RO
  1991.             Secret   R/W    RO     R/W    RO     RO     -
  1992.  
  1993.  
  1994.           8.2.17.  SERVICEPATH (Optional)
  1995.  
  1996.           The  SERVICEPATH  channel  property contains the path of a server side
  1997.           extension that is used to control the channel operation.  Details  are
  1998.           implementation-dependent.
  1999.  
  2000.                     Admin  Sysop  Owner  Host  Member  User
  2001.             Public   R/W    RO     RO     RO     -      -
  2002.             Private  R/W    RO     RO     RO     -      -
  2003.             Hidden   R/W    RO     RO     RO     -      -
  2004.             Secret   R/W    RO     RO     RO     -      -
  2005.  
  2006.  
  2007.  
  2008.  
  2009.           9.  IRCX Command Responses
  2010.  
  2011.           The  new  extended  IRCX numeric replies follow the same convention as
  2012.           IRC replies, with a specific range for command responses  and  another
  2013.           range  for error results.  The IRCX command responses are in the range
  2014.           of 800 to 899 and 900 to 999 for the error results.  The prefix  field
  2015.           is  optional if the server generating the error is the server that the
  2016.           client is connected to.
  2017.  
  2018.  
  2019.           9.1.  Command Replies
  2020.  
  2021.  
  2022.           800 - IRCRPL_IRCX
  2023.  
  2024.                <state> <version> <package-list> <maxmsg> <option-list>
  2025.  
  2026.           The response to the IRCX and ISIRCX commands.  The  <state>  indicates
  2027.           if  the  client has IRCX mode enabled (0 for disabled, 1 for enabled).
  2028.           The <version> is the version of the IRCX protocol starting at 0.   The
  2029.           <package-list> contains a list of authentication packages supported by
  2030.           the server.  The package name of "ANON" is reserved to  indicate  that
  2031.           anonymous connections are permitted.  The <maxmsg> defines the maximum
  2032.           message size permitted, with the standard being 512. The <option-list>
  2033.           contains  a  list of options supported by the server; these are imple-
  2034.           mentation-dependent.  If no options are available, the  '*'  character
  2035.           is used.
  2036.  
  2037.  
  2038.  
  2039.           801 - IRCRPL_ACCESSADD
  2040.  
  2041.  
  2042.  
  2043.  
  2044.           Cedola, Dusseault & Pfenning                                 [Page 31]
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.           INTERNET-DRAFT                                          20 August 1997
  2051.  
  2052.  
  2053.                <object> <level> <mask> <timeout> <user> :<reason>
  2054.  
  2055.           Response to a successful ACCESS ADD command.  The <object> is the name
  2056.           of the object to which the access  restrictions  apply  (i.e.  channel
  2057.           name  or  user  name).  The <level> is the level of access being added
  2058.           (i.e. GRANT, DENY).  The <mask> is the selection mask.  If no mask  is
  2059.           provided  in  the  ACCESS command, then the default mask of *!*@*$* is
  2060.           used.  The <timeout> is the amount of  time  this  access  entry  will
  2061.           last.   The  <user>  is  the one who added the new ACCESS record.  The
  2062.           <reason> is the reason supplied in the ACCESS ADD command.
  2063.  
  2064.  
  2065.           802 - IRCRPL_ACCESSDELETE
  2066.  
  2067.                <object> <level> <mask> <timeout>
  2068.  
  2069.           Response to a successful ACCESS DELETE command.   See  reply  801  for
  2070.           explanation of the fields.
  2071.  
  2072.  
  2073.           803 - IRCRPL_ACCESSSTART
  2074.  
  2075.                <object> :Start of access entries
  2076.  
  2077.           Beginning  of  a  list  of  access entries.  <object> is the object to
  2078.           which the access restrictions apply (i.e. channel name or user  name).
  2079.           The  next  message  will  be  an IRCRPL_ACCESSLIST or IRCRPL_ACCESSEND
  2080.           reply.
  2081.  
  2082.  
  2083.           804 - IRCRPL_ACCESSLIST
  2084.  
  2085.                <object> <level> <mask> <timeout> <user> :<reason>
  2086.  
  2087.           One entry in a list of access entries.  See reply 801 for  explanation
  2088.           of the fields.
  2089.  
  2090.  
  2091.           805 - IRCRPL_ACCESSEND
  2092.  
  2093.                <object> :End of access entries
  2094.  
  2095.           End of a list of access entries.  See reply 803 for explanation of the
  2096.           field.   This  reply  will  always  follow  an  IRCRPL_ACCESSSTART  or
  2097.           IRCRPL_ACCESSLIST reply.
  2098.  
  2099.  
  2100.           806 - IRCRPL_EVENTADD
  2101.  
  2102.                <event> <mask>
  2103.  
  2104.           The  acknowledgment  response  to  the EVENT ADD command.  The <event>
  2105.           contains the name of the event added.  The  <mask>  is  the  selection
  2106.           mask.   If  no mask is provided in the EVENT command, then the default
  2107.  
  2108.  
  2109.  
  2110.           Cedola, Dusseault & Pfenning                                 [Page 32]
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.           INTERNET-DRAFT                                          20 August 1997
  2117.  
  2118.  
  2119.           mask of *!*@*$* is used.
  2120.  
  2121.  
  2122.           807 - IRCRPL_EVENTDEL
  2123.  
  2124.                <event> <mask>
  2125.  
  2126.           The acknowledgment response to the EVENT  DEL  command.   The  <event>
  2127.           contains  the  name of the deleted event.  The <mask> is the selection
  2128.           mask.  If no mask is provided in the EVENT command, then  the  default
  2129.           mask of *!*@*$* is used.
  2130.  
  2131.  
  2132.           808 - IRCRPL_EVENTSTART
  2133.  
  2134.                :Start of events
  2135.  
  2136.           Response to the EVENT LIST <event> message that indicates the start of
  2137.           the event list.
  2138.  
  2139.  
  2140.           809 - IRCRPL_EVENTLIST
  2141.  
  2142.                <event> <mask>
  2143.  
  2144.           Response to the EVENT LIST <event> message that  displays  a  list  of
  2145.           current events that the client is interested in.
  2146.  
  2147.  
  2148.           810 - IRCRPL_EVENTEND
  2149.  
  2150.                :End of events
  2151.  
  2152.           Response  to  the EVENT LIST <event> message that indicates the end of
  2153.           the event list.
  2154.  
  2155.  
  2156.           811 - IRCRPL_LISTXSTART
  2157.  
  2158.                :Start of ListX
  2159.  
  2160.           First reply to a LISTX (extended list) command.  Will always  be  fol-
  2161.           lowed by a reply of type 812, 816 or 817.
  2162.  
  2163.  
  2164.           812 - IRCRPL_LISTXLIST
  2165.  
  2166.                <object> <channel> <modes> <members> <member limit> :<topic>
  2167.  
  2168.           Single list item in an extended list of channels.
  2169.  
  2170.  
  2171.           813 - IRCRPL_LISTXPICS
  2172.  
  2173.  
  2174.  
  2175.  
  2176.           Cedola, Dusseault & Pfenning                                 [Page 33]
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.           INTERNET-DRAFT                                          20 August 1997
  2183.  
  2184.  
  2185.                :<PICS-rating>
  2186.  
  2187.           PICS  rating  string  for the last channel listed (follows an 812 mes-
  2188.           sage).
  2189.  
  2190.  
  2191.           816 - IRCRPL_LISTXTRUNC
  2192.  
  2193.                :Truncation of ListX
  2194.  
  2195.           Last reply to a LISTX command, either because the  user  asked  for  a
  2196.           limited  list  of channels or because the server truncated the list to
  2197.           prevent output flooding.  Always follows a reply of type 811,  812  or
  2198.           813.
  2199.  
  2200.  
  2201.           817 - IRCRPL_LISTXEND
  2202.  
  2203.                :End of ListX
  2204.  
  2205.           Last  reply  to  a  LISTX command, indicating that the list has ended.
  2206.           Always follows a reply of type 811, 812 or 813.
  2207.  
  2208.  
  2209.           818 - IRCRPL_PROPLIST
  2210.  
  2211.                <object> <property> :<value>
  2212.  
  2213.           A value in a property list.
  2214.  
  2215.  
  2216.           819 - IRCRPL_PROPEND
  2217.  
  2218.                <object> :End of properties
  2219.  
  2220.           Last message in a property list.
  2221.  
  2222.  
  2223.           9.2.  IRCX Error Replies.
  2224.  
  2225.  
  2226.           900 - IRCERR_BADCOMMAND
  2227.  
  2228.                <command> :Bad command
  2229.  
  2230.           Response to an incorrectly formatted command.
  2231.  
  2232.  
  2233.           901 - IRCERR_TOOMANYARGUMENTS
  2234.  
  2235.                <command> :Too many arguments
  2236.  
  2237.           Response to too many arguments being provided for a command.
  2238.  
  2239.  
  2240.  
  2241.  
  2242.           Cedola, Dusseault & Pfenning                                 [Page 34]
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.           INTERNET-DRAFT                                          20 August 1997
  2249.  
  2250.  
  2251.           902 - IRCERR_BADFUNCTION
  2252.  
  2253.                <command> :Bad function
  2254.  
  2255.           Response to a command that supports functions, with  invalid  function
  2256.           sent  by the user.  For example, the EVENT command supports functions.
  2257.  
  2258.  
  2259.           903 - IRCERR_BADLEVEL
  2260.  
  2261.                <command> :Bad level
  2262.  
  2263.           Response to an ACCESS command with a bad  level  specified  (i.e.  not
  2264.           GRANT, DENY...)
  2265.  
  2266.  
  2267.           904 - IRCERR_BADTAG
  2268.  
  2269.                <command> :Bad message tag.
  2270.  
  2271.           The message tag format is incorrect.
  2272.  
  2273.  
  2274.           905 - IRCERR_BADPROPERTY
  2275.  
  2276.                <channel> :Bad property specified
  2277.  
  2278.           Response  to a channel property command with a bad property specified.
  2279.  
  2280.  
  2281.           906 - IRCERR_BADVALUE
  2282.  
  2283.                <channel> :Bad value specified
  2284.  
  2285.           Response to an attempt to set an integer property to  a  string  value
  2286.           (PROP command).
  2287.  
  2288.  
  2289.           907 - IRCERR_RESOURCE
  2290.  
  2291.                :Not enough resources
  2292.  
  2293.           Server does not have enough resources to perform command.
  2294.  
  2295.  
  2296.           908 - IRCERR_SECURITY
  2297.  
  2298.                :No permissions to perform command
  2299.  
  2300.           For  security reasons, the command/function/operation is not permitted
  2301.           for this level of client.
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.           Cedola, Dusseault & Pfenning                                 [Page 35]
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.           INTERNET-DRAFT                                          20 August 1997
  2315.  
  2316.  
  2317.           909 - IRCERR_ALREADYAUTHENTICATED
  2318.  
  2319.                <package> :Already authenticated
  2320.  
  2321.           The client is already authenticated with the server.
  2322.  
  2323.  
  2324.           910 - IRCERR_AUTHENTICATIONFAILED
  2325.  
  2326.                <package> :Authentication failed
  2327.  
  2328.           The authentication failed due to a bad userid/password or  server/net-
  2329.           work failure.
  2330.  
  2331.  
  2332.           911 - IRCERR_AUTHENTICATIONSUSPENDED
  2333.  
  2334.                <package> :Authentication suspended for this IP
  2335.  
  2336.           Authentication has been temporary disabled due to too many authentica-
  2337.           tion failures from this IP.
  2338.  
  2339.  
  2340.           912 - IRCERR_UNKNOWNPACKAGE
  2341.  
  2342.                <package> :Unsupported authentication package
  2343.  
  2344.           The authentication package specified  is  not  known  to  the  server.
  2345.           ISIRCX  command  will  return a list of supported authentication pack-
  2346.           ages.
  2347.  
  2348.  
  2349.           913 - IRCERR_NOACCESS
  2350.  
  2351.                <command> :No access
  2352.  
  2353.           Response to a user trying to change the ACCESS list for an object  the
  2354.           user does not have sufficient privileges to alter.
  2355.  
  2356.  
  2357.           914 - IRCERR_DUPACCESS
  2358.  
  2359.                :Duplicate access entry
  2360.  
  2361.           An access entry already exists for the specified user mask.
  2362.  
  2363.  
  2364.           915 - IRCERR_MISACCESS
  2365.  
  2366.                :Unknown access entry
  2367.  
  2368.           Response  to  ACCESS DELETE command when server does not recognize the
  2369.           entry to be removed.
  2370.  
  2371.  
  2372.  
  2373.  
  2374.           Cedola, Dusseault & Pfenning                                 [Page 36]
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.           INTERNET-DRAFT                                          20 August 1997
  2381.  
  2382.  
  2383.           916 - IRCERR_TOOMANYACCESSES
  2384.  
  2385.                :Too many access entries
  2386.  
  2387.           Response to ACCESS ADD command when maximum number of  access  entries
  2388.           has been reached.
  2389.  
  2390.  
  2391.           918 - IRCERR_EVENTDUP
  2392.  
  2393.                <event> <mask> :Duplicate event entry
  2394.  
  2395.           The user has asked for an event that is already being sent.
  2396.  
  2397.  
  2398.           919 - IRCERR_EVENTMIS
  2399.  
  2400.                <event> <mask> :Unknown event entry
  2401.  
  2402.           Response  to  event  remove command when user is not already receiving
  2403.           the event specified.
  2404.  
  2405.  
  2406.           920 - IRCERR_NOSUCHEVENT
  2407.  
  2408.                <event> :No such event type
  2409.  
  2410.           Response to event add command when server does not recognize the event
  2411.           specified.
  2412.  
  2413.  
  2414.           921 - IRCERR_TOOMANYEVENTS
  2415.  
  2416.                <event> :Too many events specifed
  2417.  
  2418.           Response  to  event add command when user may not add another event to
  2419.           monitor.
  2420.  
  2421.  
  2422.           923 - IRCERR_NOWHISPER
  2423.  
  2424.                <object> :Does not permit whispers
  2425.  
  2426.           Response to whisper command when channel does not permit whispers.
  2427.  
  2428.  
  2429.           924 - IRCERR_NOSUCHOBJECT
  2430.  
  2431.                <object> :No such object found
  2432.  
  2433.           Response to an attempt to define a property for an object which  can't
  2434.           be found (PROP command).
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.           Cedola, Dusseault & Pfenning                                 [Page 37]
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.           INTERNET-DRAFT                                          20 August 1997
  2447.  
  2448.  
  2449.           926 - IRCERR_CHANNELEXIST
  2450.  
  2451.                <channel> :Channel already exists.
  2452.  
  2453.           The channel name in the CREATE command already exist on the server and
  2454.           the +c mode was specified.
  2455.  
  2456.  
  2457.           927 - IRCERR_ALREADYONCHANNEL
  2458.  
  2459.                <channel> :Already in the channel.
  2460.  
  2461.           Response to join command when user is already in the channel.
  2462.  
  2463.  
  2464.  
  2465.           999 - IRCERR_UNKNOWNERROR
  2466.  
  2467.                :Unknown error code <error-code>
  2468.  
  2469.           The internal error generated doesn't map to a valid IRCX error  reply.
  2470.           The error code is implementation-dependent.
  2471.  
  2472.  
  2473.  
  2474.           10.  Security Considerations
  2475.  
  2476.           Security issues are discussed in the authentication section.
  2477.  
  2478.           The IRCX and ISIRCX commands return a set of authentication mechanisms
  2479.           supported by the server. This method is open to a  middle  man  attack
  2480.           whereby an attacker modifies the list of returned authentication meth-
  2481.           ods and only offers a cleartext  password  transaction.  In  order  to
  2482.           avoid  this  type  of attack, only authentication methods with a chal-
  2483.           lenge response mechanism should be used.
  2484.  
  2485.           Since all administration commands for RFC1459 and  IRCX  are  sent  in
  2486.           clear  text,  a stream layer encryption mechanism like SSL[5] or IPSEC
  2487.           is required to protect the integrity and confidentiality of the trans-
  2488.           actions.  The mechanisms for establishing these connection are outside
  2489.           the scope of this document.
  2490.  
  2491.           11.  References
  2492.  
  2493.           [1] "Internet Relay Chat Protocol", Network Working Group RFC 1459, J.
  2494.           Oikarinen, D. Reed, May 1993
  2495.  
  2496.           [2]  The Unicode Consortium, "The Unicode Standard Version 2.0", Addi-
  2497.           son Wesley Developers Press, July 1996
  2498.  
  2499.           [3] "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1", Network  Work-
  2500.           ing Group RFC 2060, M. Crispin, December 1996
  2501.  
  2502.           [4]  "Simple  Authentication  and  Security  Layer  (SASL)",  Work  in
  2503.  
  2504.  
  2505.  
  2506.           Cedola, Dusseault & Pfenning                                 [Page 38]
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.           INTERNET-DRAFT                                          20 August 1997
  2513.  
  2514.  
  2515.           Progress, draft-myers-auth-sasl-07.txt, J. Myers, December 1996
  2516.  
  2517.           [5] "The SSL Protocol Version 3.0", Work in Progress,  draft-ietf-tls-
  2518.           ssl-version3-00.txt,  Alan  O. Freier, Philip Karlton, Paul C. Kocher,
  2519.           November 1996
  2520.  
  2521.  
  2522.           12.  Authors' Addresses
  2523.  
  2524.           Kent Cedola
  2525.           Microsoft Corporation
  2526.           One Microsoft Way
  2527.           Redmond, WA 98052
  2528.  
  2529.           EMail: kentce@microsoft.com
  2530.  
  2531.           Lisa Dusseault
  2532.           Microsoft Corporation
  2533.           One Microsoft Way
  2534.           Redmond, WA 98052
  2535.  
  2536.           EMail: lisadu@microsoft.com
  2537.  
  2538.           Thomas Pfenning
  2539.           Microsoft Corporation
  2540.           One Microsoft Way
  2541.           Redmond, WA 98052
  2542.  
  2543.           EMail: thomaspf@microsoft.com
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.           Cedola, Dusseault & Pfenning                                 [Page 39]
  2573.  
  2574.  
  2575.