INTERNET-DRAFT Kent Cedola File: Microsoft Corporation 13 February 1997 Thomas Pfenning Microsoft Corporation Extensions to the Internet Relay Chat Protocol (IRCX) 1. Status of this Memo This document is an Internet-Draft. Internet-Drafts are working docu- ments of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute work- ing documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference mate- rial or to cite them other than as ``work in progress.'' To learn the current status of any Internet-Draft, please check the ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow Directories on ds.internic.net (US East Coast), nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim). The distribution of this memo is unlimited. It is filed as , and expires July 13, 1997. Please send comments to the authors. 2. Abstract This document describes extensions to the Internet Relay Chat protocol defined in RFC 1459[1]. The added functionality includes optional user authentication for multiple security providers, support for UNICODE[2] characters, multilayer security, and a unified property mechanism. Chat server implementations can optionally support channel or server services with full control over all messages and events. These ser- vices communicate with the core server over an extended IRC connec- tion. All changes to the IRC protocol are designed in a way that existing clients will continue to work against servers implementing the exten- sions. Support for the extended protocol can be queried by clients to take advantage of the added functionality or to conform to the basic protocol as defined in RFC 1459. Cedola & Pfenning [Page 1] INTERNET-DRAFT 13 February 1997 3. Modified UTF7 Encoding of UNICODE characters Allowing UNICODE characters for all user visible strings introduces a set of compatibility problems if the protocol must be backwards com- patible. While UTF7 encoding[1] maintains readability for pure ASCII strings, the BASE64 encoding of extended characters can contain char- acters which have a special meaning to the parser. In order to provide backwards compatibility with exisiting IRC clients and to allow new client to use a subset of UNICODE features on existing IRC server we introduce an additional postprocessing step on the result of an UTF7 translation. The quoting character for the postprocessing step is ''. All mappings are listed in the table below. +------------------------------------+ |Table 1 - Character Quoting in UTF7 | +----------------+-------------------+ | \b | for " " blank | | \c | for "," | | \\ | for "\" | | \r | for CR | | \n | for LF | +----------------+-------------------+ This mechanism is a first proposal and subject to change if we dicover a more general solution to this problem. Since a similar problem was discovered in the context of the IMAP protocol[3] it might be worth- while to define a new safe encoding of UNICODE which translates to alphanumeric characters only. It seems, that every special character has a special meaning in one or the other protocol. 4. Terms and Definitions Throughout the document we will use certain terms which are defined in this section. Cedola & Pfenning [Page 2] INTERNET-DRAFT 13 February 1997 +------------------------------------------------------------------+ | Table 2 - Definition of Terms | +---------------+--------------------------------------------------+ | Chat Network | Chat Network is comprised of one or more | | | servers linked together. | | Server | A server is a single machine. | | Channel | A channel (sometimes called a room or confer- | | | ence) is conversation between one or more | | | users. | | Member | A member is a user that is part of a conversa- | | | tion in a channel. | | User | A user is a client that makes a connection to | | | the server. | | Objects | An object is a general term for channels, | | | users, members (users in a channel), and | | | servers. The type of object can be determined | | | from the first character of the object's name. | +---------------+--------------------------------------------------+ 4.1. User Access Levels Each client falls into one of eight level that define the ability to perform operations. Some levels are determined on the context of the operation to be performed. +------------------------------------------------------------------+ | Table 3 - Definition of Client Levels | +---------------------+--------------------------------------------+ | Chat Administrator | A Chat Administrator has full access to | | | all aspect of the server. | | Chat Service | A Chat Service is defined for external | | | application to provide extended services | | | to the chat network. Also refered to as | | | bots. | | A Chat Manager | A Chat Manager is a senior sysop access | | | level that is permitted a wider range of | | | opertions than a Chat Sysop. | | A Chat Sysop | A Chat Sysop is a user that is ability | | | to oversee and control the chat network. | | A Chat Owner | A Chat Owner is a owner of a channel | | | that has the ability to manage channel | | | hosts. | | A Chat Host | A Chat Host is a member of a channel | | | with the ability to manage a channel. | | | Also refered to as a channel operator. | | A Chat Member | An Chat Member is a member of a channel. | | A Chat User | An Chat User is a client connected to | | | the server. | +---------------------+--------------------------------------------+ Cedola & Pfenning [Page 3] INTERNET-DRAFT 13 February 1997 4.2. Prefixes Each object contains a unique prefix that identifies the type of object. By tagging UNICODE objects with a special prefix a client can easily decide whether to use standard ASCII or UNICODE when sending a message to a user or channel. +-----------------------------------------------------------------+ | Table 4 - Object identifiers | +---------+-------------------------------------------------------+ | # | The '#' prefix identifies an IRC2 global channel. | | & | The '&' prefix identifies an IRC2 local channel. | | + | The '+' prefix identifies an IRC2 modeless channel. | | %# | The "%#" prefix identifies an extended global chan- | | | nel name which consist of a modified UTF7 encoded | | | Unicode string. | | %& | The "%&" prefix identifies an extended local chan- | | | nel name which consist of a modified UTF7 encoded | | | Unicode string. | | %+ | The "%+" prefix identifies an extended modeless | | | channel name which consist of a modified UTF7 | | | encoded Unicode string. | | % | The '%' character identifies the last channel that | | | this client specified and is a member of. The '%' | | | character must be followed by a space or comma. It | | | is used to optimize server processing of multiple | | | messages from a client to a channel. | | A to } | The 'A' through '}' prefix identifies a standard | | | IRC2 nick name. | | ' | The ''' prefix identifies an extended IRCX nick | | | name which consist of a modified UTF7 encoded Uni- | | | code string. The ''' character followed by a space | | | or comma represents the local client connection. | | 0 | The '0' prefix identifies an internal object iden- | | | tifier (OID). The OID consists of the '0' prefix | | | and 8 hexadecimal characters. The use of OID is | | | implementation dependent. | | $ | The '$' prefix identifies a server on the network. | | | Just '$' represents the local server the client is | | | connected to. | +---------+-------------------------------------------------------+ 5. Channels Channels support four mutually exclusive states of visibility; public, private, hidden and secret. The visibility of a channel effects which modes and properties are available to a client. Each mode/property is followed by a table that consists of a matrix of the channel's visi- bility state and each type of client. R/W is for Read/Write access, WO for Write Only access, RO for Read Only access, "-" for no access (can't be queried) and N/A for does not apply. These access rights are listed for the different adminstrative levels. Cedola & Pfenning [Page 4] INTERNET-DRAFT 13 February 1997 5.1. Modes Each channel object contains a number of binary mode settings that can be queried and optionally updated via the IRC2 MODE and/or the IRCX MODEX command. The IRC2 mode, if available, is presented with the + format after the name of the mode. 5.1.1. PUBLIC (IRC2 default) The channel is public and all information about the channel (except for text messages) can be queried by non-members. The PUBLIC mode is mutually exclusive with the PRIVATE, HIDDEN and SECRET modes. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W R/W RO RO Private N/A N/A N/A N/A N/A N/A N/A N/A Hidden N/A N/A N/A N/A N/A N/A N/A N/A Secret N/A N/A N/A N/A N/A N/A N/A N/A 5.1.2. PRIVATE (IRC2 +P) The channel is private and only the name and number of members can be queried by non-members. The PRIVATE mode is mutually exclusive with the PUBLIC, HIDDEN and SECRET modes. Admin Service Manager Sysop Owner Host Member User Public N/A N/A N/A N/A N/A N/A N/A N/A Private R/W R/W RO RO R/W R/W RO RO Hidden N/A N/A N/A N/A N/A N/A N/A N/A Secret N/A N/A N/A N/A N/A N/A N/A N/A 5.1.3. HIDDEN (IRCX +Q) The channel is hidden and can not by located by enumeration queries. The HIDDEN mode is mutually exclusive with the PUBLIC, PRIVATE, and SECRET modes. The purpose of the new HIDDEN channel mode is to permit channels that can not be found using the standard LIST command, but properties can be queried if the exact name is known. Thus a HIDDEN channel is the same as a PUBLIC channel except that it can not be enu- merated by using the LIST command. Admin Service Manager Sysop Owner Host Member User Public N/A N/A N/A N/A N/A N/A N/A N/A Private N/A N/A N/A N/A N/A N/A N/A N/A Hidden R/W R/W RO RO R/W R/W RO RO Secret N/A N/A N/A N/A N/A N/A N/A N/A Cedola & Pfenning [Page 5] INTERNET-DRAFT 13 February 1997 5.1.4. SECRET (IRC2 +S) The channel is secret and can not by located by any query. The SECRET mode is mutually exclusive with the PUBLIC, PRIVATE, and HIDDEN modes. Admin Service Manager Sysop Owner Host Member User Public N/A N/A N/A N/A N/A N/A N/A N/A Private N/A N/A N/A N/A N/A N/A N/A N/A Hidden N/A N/A N/A N/A N/A N/A N/A N/A Secret R/W R/W RO RO R/W R/W RO RO 5.1.5. MODERATED (IRC2 +M) The MODERATED mode changes the default speaker setting for new members to off. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W R/W RO RO Private R/W R/W RO RO R/W R/W RO - Hidden R/W R/W RO RO R/W R/W RO RO Secret R/W R/W RO RO R/W R/W RO - 5.1.6. NOEXTERN (IRC2 +N) The NOEXTERN mode blocks messages from non-members to the channel. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W R/W RO RO Private R/W R/W RO RO R/W R/W RO - Hidden R/W R/W RO RO R/W R/W RO RO Secret R/W R/W RO RO R/W R/W RO - 5.1.7. TOPICOP (IRC2 +T) The TOPICOP mode only permits channel hosts the ability to change the channel topic property. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W R/W RO RO Private R/W R/W RO RO R/W R/W RO - Hidden R/W R/W RO RO R/W R/W RO RO Secret R/W R/W RO RO R/W R/W RO - 5.1.8. INVITE (IRC2 +I) The INVITE mode only permits invited users to enter the channel. Cedola & Pfenning [Page 6] INTERNET-DRAFT 13 February 1997 Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W R/W RO RO Private R/W R/W RO RO R/W R/W RO - Hidden R/W R/W RO RO R/W R/W RO RO Secret R/W R/W RO RO R/W R/W RO - 5.1.9. KNOCK (IRCX +J) The KNOCK extended mode causes a KNOCK message to be sent to all chan- nel hosts if an uninvited user attempts to join an invite only chan- nel. Useful for clients that wish to use custom access control of a channel and will automatically issue an invite to a select group of users. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W RO RO RO Private R/W R/W RO RO R/W RO RO - Hidden R/W R/W RO RO R/W RO RO RO Secret R/W R/W RO RO R/W RO RO - 5.1.10. NODATA (IRCX +D) The NODATA channel mode will disable CTCP messages from being sent to a channel. A CTCP message is defined as a message that contains Control-A as the first character of the message text. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W RO RO RO Private R/W R/W RO RO R/W RO RO - Hidden R/W R/W RO RO R/W RO RO RO Secret R/W R/W RO RO R/W RO RO - 5.1.11. NOFORMAT (IRCX +F) The NOFORMAT channel mode is an indication to the client application not to format text received from the chan- nel. Normally clients will prefix text messages with "x said y" or "x whispers to y and x", if the NOFORMAT mode is set then just the raw text should be displayed moving to the next line at the end of the message. The client should not echo text sent by the client. This is to permit custom applications to control the formatting to clients. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W RO RO RO Private R/W R/W RO RO R/W RO RO - Hidden R/W R/W RO RO R/W RO RO RO Secret R/W R/W RO RO R/W RO RO - Cedola & Pfenning [Page 7] INTERNET-DRAFT 13 February 1997 5.1.12. NOWHISPER (IRCX +W) The NOWHISPER channel mode will disable WHISPER messages from being sent to a channel. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W RO RO RO Private R/W R/W RO RO R/W RO RO - Hidden R/W R/W RO RO R/W RO RO RO Secret R/W R/W RO RO R/W RO RO - 5.1.13. BROADCAST (IRCX +E) The BROADCAST channel mode is a special mode used for channels that will send information one way from channel hosts to channel members. Each member in a channel will only see themself in the channel. Client applications should expect messages from host members that do not appear in the channel member list via the WHO or NAMES commands. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO RO RO RO RO Private R/W R/W RO RO RO RO RO - Hidden R/W R/W RO RO RO RO RO RO Secret R/W R/W RO RO RO RO RO - 5.1.14. EXTERNAL (IRCX +X) The EXTERNAL channel mode restricts the visibility and messaging within a channel. Members will only see themself and other hosts in the channel. Any message sent by a member will only be received by the host members. Hosts will see all members in the channel and mes- sages from a host are seen by all members. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W RO RO RO Private R/W R/W RO RO R/W RO RO - Hidden R/W R/W RO RO R/W RO RO RO Secret R/W R/W RO RO R/W RO RO - 5.1.15. REGISTERED (IRCX +R) The channel has been registered via a chat service. Cedola & Pfenning [Page 8] INTERNET-DRAFT 13 February 1997 Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO RO RO RO RO Private R/W R/W RO RO RO RO RO - Hidden R/W R/W RO RO RO RO RO RO Secret R/W R/W RO RO RO RO RO - 5.1.16. SERVICE (IRCX +Z) A service is monitoring/controlling the channel. This is an indica- tion to the client that message traffic sent to the channel is being monitored by a Chat Service which does not appear as a member in the channel. The SERVICE flag is only set by the Chat Server. Admin Service Manager Sysop Owner Host Member User Public RO RO RO RO RO RO RO RO Private RO RO RO RO RO RO RO - Hidden RO RO RO RO RO RO RO RO Secret RO RO RO RO RO RO RO - 5.1.17. AUTHONLY The AUTHONLY channel mode restricts access to the channel to only users that have been authenticated by the server. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W RO RO RO Private R/W R/W RO RO R/W RO RO - Hidden R/W R/W RO RO R/W RO RO RO Secret R/W R/W RO RO R/W RO RO - 5.1.18. CLONEABLE The CLONEABLE channel mode defines a channel that will create new clone channels if the parent channel is full. A clone channel is cre- ated with the same name as the parent cloneable channel with a numeric suffix starting at 1, ranging to 99. It is not valid to set the CLONEABLE channel mode of a channel that ends with a numeric charac- ter. When a clone channel is created, any channel that has the same name will be removed. This is to prevent channel take over of a clone channel. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO RO RO RO RO Private R/W R/W RO RO RO RO RO - Hidden R/W R/W RO RO RO RO RO RO Secret R/W R/W RO RO RO RO RO - Cedola & Pfenning [Page 9] INTERNET-DRAFT 13 February 1997 5.1.19. CLONE The CLONE channel mode defines a channel that was created by the server when a parent CLONEABLE channel was full. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO (1) RO RO RO Private R/W R/W RO RO (1) RO RO - Hidden R/W R/W RO RO (1) RO RO RO Secret R/W R/W RO RO (1) RO RO - 1. The CLONE channel mode can only be set on a channel that has the same base name as a CLONEABLE channel the user is also an owner of. This is to permit a channel owner to pre-create clone channels. 5.2. Properties Each channel object contains a number of properties that can be queried and optionally updated via the IRCX PROP command. 5.2.1. OID (R/O) The OID channel property is the internal object identifier for the channel. The OID can be optionally used in place of the full string name of a channel as a short cut. If the OID is "0", then this fea- ture is not supported on the server. Admin Service Manager Sysop Owner Host Member User Public RO RO RO RO RO RO RO RO Private RO RO RO RO RO RO RO - Hidden RO RO RO RO RO RO RO RO Secret RO RO RO RO RO RO RO - 5.2.2. NAME (R/O) The NAME channel property is the name of the channel. Admin Service Manager Sysop Owner Host Member User Public RO RO RO RO RO RO RO RO Private RO RO RO RO RO RO RO - Hidden RO RO RO RO RO RO RO RO Secret RO RO RO RO RO RO RO - 5.2.3. KEYWORD The KEYWORD channel property is the keyword required to enter the channel. Cedola & Pfenning [Page 10] INTERNET-DRAFT 13 February 1997 Admin Service Manager Sysop Owner Host Member User Public R/W R/W - - R/W R/W RO RO Private R/W R/W - - R/W R/W RO - Hidden R/W R/W - - R/W R/W RO RO Secret R/W R/W - - R/W R/W RO - 5.2.4. HOSTKEY The HOSTKEY channel property is the host keyword that will provide host (channel op) access when entering the channel. Admin Service Manager Sysop Owner Host Member User Public R/W R/W WO - R/W RO - - Private R/W R/W WO - R/W RO - - Hidden R/W R/W WO - R/W RO - - Secret R/W R/W WO - R/W RO - - 5.2.5. OWNERKEY The OWNERKEY channel property is the owner keyword that will provide owner access when entering the channel. Admin Service Manager Sysop Owner Host Member User Public R/W R/W - - R/W - - - Private R/W R/W - - R/W - - - Hidden R/W R/W - - R/W - - - Secret R/W R/W - - R/W - - - 5.2.6. TOPIC The TOPIC channel property is the current topic of the channel. Admin Service Manager Sysop Owner Host Member User Public R/W R/W RO RO R/W R/W (1) RO Private R/W R/W RO RO R/W R/W (1) - Hidden R/W R/W RO RO R/W R/W (1) RO Secret R/W R/W RO RO R/W R/W (1) - 1. The TOPIC property can only be set by members if the TOPICOP chan- nel mode is not set. 5.2.7. PICS The PICS channel property is the current PICS rating of the channel. Chat clients that are PICS enabled can use this property to determine if the channel is appropriate for the user. .LP Cedola & Pfenning [Page 11] INTERNET-DRAFT 13 February 1997 Admin Service Manager Sysop Owner Host Member User Public R/W R/W R/W RO RO RO RO RO Private R/W R/W R/W RO RO RO RO RO Hidden R/W R/W R/W RO RO RO RO RO Secret R/W R/W R/W RO RO RO RO - 6. IRCX Server Messages This section summarizes all extended messages which can be send unso- licited from the server. 6.1. CLONE (new IRCX message) Informs the hosts in a CLONEABLE channel of the creation of a new CLONE channel. Syntax: CLONE 6.1.1. Parameters The name of the created CLONE channel. The object identifier for this new CLONE channel. The value is implementation dependent and must be 0 if not supported. 6.1.2. Remarks The CLONE message can be sent at anytime to the hosts of a CLONEABLE channel of the creation of a CLONE channel. Normally used by custom application to automatically join the new CLONE channel. 6.1.3. Example Server: CLONE #MyChat1 034F8FF32 6.2. EVENT (new IRCX message) Notification to the client of an event. Syntax 1: EVENT CHANNEL CREATE Syntax 2: EVENT CHANNEL DELETE Syntax 3: EVENT CHANNEL KILL : Syntax 4: EVENT MEMBER JOIN Cedola & Pfenning [Page 12] INTERNET-DRAFT 13 February 1997 Syntax 5: EVENT MEMBER PART : Syntax 6: EVENT MEMBER KICK : Syntax 7: EVENT USER REGISTER Syntax 8: EVENT USER QUIT : Syntax 9: EVENT USER KILL : 6.2.1. Parameters The number of seconds elapsed since midnight (00:00:00), January 1, 1970, coordinated universal time when the event occured on the server. The user's nick, userid, host and server in nick!user@host$server format that triggered the event. {same as for REDIRECT} The local server IP address and port number of the . The remote client IP address and port number of the . 6.2.2. Remarks The EVENT command is to use to define the events that the client is interested in. 6.3. REDIRECT (new IRCX message) Informs the client to connect to another server. Syntax: REDIRECT : 6.3.1. Parameters The server list is a comma seperated list of host:port pairs. That can be specified either as a FQDN or by the IP address in quuad dotted notation. The redirect reason is an implementation dependent string which can optionally be displayed at the client. If the string starts with a '%' character is is handled as modified UTF7 according to sec- tion 4. Cedola & Pfenning [Page 13] INTERNET-DRAFT 13 February 1997 6.3.2. Remarks The REDIRECT message can be sent to the client at anytime to request the client to disconnect and reconnect to another server specified in the list. The REDIRECT message is generally sent when a server is to be shutdown. 6.3.3. Example Server: REDIRECT chat.corp.net:6667,134.9.3.3:6667 :Server full. 7. IRCX Client Messages All messages sent from the client to an IRCX server can optionally be tagged with a message prefix. This implies that the client has veri- fied, that the server it is talking to supports the extended IRC pro- tocol. A tag is a string enclosed in square brackets. Only the charac- ters [a-z,A-Z,0-9] are valid in a tag. The string can contain a mini- mum of 1 and a maxminum of 16 charcters. An empty string is not allowed. All replies from the server to a client message prefixed with a tag will have the same tag prepended. This feature allows the matching of replies to multiple outstandig messages and easy dispatch of messages to multithreaded clients. The tag will not be sent to other clients. Tagged data messages can be used for indicating a certain payload to other clients. Syntax [alphanumeric string] Parameters This argument is any valid client message according to the IRC or IRCX specification. 7.1. AUTH Command (new IRCX command) Authenticate the client using an SASL[4] authentication mechanism. The details of the authentication mechanisms is specified in a profile that should be registered with the IANA. Syntax 1: AUTH : [] Syntax 2 (from server to client only): AUTH OK Cedola & Pfenning [Page 14] INTERNET-DRAFT 13 February 1997 7.1.1. Parameters The name of the SASL mechanism to use for authentication. The specific SASL mechanisms supported are implementation dependent. The sequence is a value of 'I' or 'S'. The 'I' value is speci- fied for the initial AUTH message and 'S' for all subsequence AUTH messages. If the client specifies '*' for the sequence the server will abort the authentication sequence and return IRCERR_AUTHENTICA- TIONFAILED. This is optional data send as an argument with the AUTH messages. The content is depends on the autentication mechanism being used. The ident is the userid@domain of the authenticated client account. It is returned on the final response from the server (Syn- tax2) when authentication is successful. The uid is the internal object identifier assigned to the client connection. If not supported by the server then '0' must be returned. 7.1.2. Results: AUTH message IRCERR_ALREADYAUTHENTICATED IRCERR_ALREADYREGISTERED IRCERR_AUTHENTICATIONFAILED IRCERR_AUTHENTICATIONSUSPENDED IRCERR_BADCOMMAND IRCERR_BADPREFIX IRCERR_NEEDMOREPARAMS IRCERR_UNKNOWNPACKAGE 7.1.3. Remarks: If the server is known to support IRCX with specific SASL mechanism(s) then the first message must be the AUTH command (if authentication is to be used). If the server state is unknown, send the message "ISIRCX\r\nPING\r\n" and non IRCX servers will return the PONG reply without the IRCX message (or an error message and then the PONG), IRCX servers will return the IRCRPL_IRCX message (see IRCX command for more info) and then the PONG reply. The server will send the syntax 2 form when the authentication process is complete or a numeric error reply. 7.1.4. Example: Cedola & Pfenning [Page 15] INTERNET-DRAFT 13 February 1997 Client: AUTH NTLM I: <-quoted blob data> Server: AUTH NTLM S: <-quoted blob data> Client: AUTH NTLM S: <-quoted blob data> Server: AUTH NTLM OK userid@domain 03FA4534C 7.2. EVENT (new IRCX command) Add/Change/Delete event logging to the client connection. Syntax 1: EVENT [ADD | DEL] [] Syntax 2: EVENT LIST [] 7.2.1. Parameters Type of event, CHANNEL, MEMBER and USER. Option mask for apply a selection critical per event. 7.2.2. Results IRCRPL_EVENTADD IRCRPL_EVENTDELETE IRCRPL_EVENTLIST IRCRPL_EVENTEND IRCERR_NEEDMOREPARAMS IRCERR_BADFUNCTION IRCERR_EVENTDUP IRCERR_EVENTMIS IRCERR_NOSUCHEVENT IRCERR_TOOMANYEVENTS 7.2.3. Events See the EVENT section for IRCX Server Messages for more detail of gen- erated events. 7.2.4. Remarks The EVENT command is a sysop only function to select which events the client is interested in. 7.2.5. Examples Add channel events Cedola & Pfenning [Page 16] INTERNET-DRAFT 13 February 1997 Client: EVENT ADD CHANNEL Server: 801 CHANNEL *!*@*$* Add list event with no active events returned Client: EVENT LIST Server: 803 CHANNEL *!*@*$* 804 * :End of events. 7.3. IRCX (new IRCX command) Enables IRCX mode and displays IRCX status. Syntax: IRCX 7.3.1. Parameters None. 7.3.2. Results IRCRPL_IRCX 7.3.3. Remarks Before a client is registered with a non-IRCX server, sending the ISIRCX command will result in no response from the server. Recommend sending the ISIRCX command followed by the PING command, and if a PONG is just returned then the server doesn't support IRCX. 7.3.4. Example Client: IRCX Server: : 800 1 0 NTLM,DPA,ANON * ://http:chat.mysite.net 7.4. ISIRCX (new IRCX command) Queries if the server supports the Extended IRC2 protocol (RCX). Syntax: ISIRCX Cedola & Pfenning [Page 17] INTERNET-DRAFT 13 February 1997 7.4.1. Results IRCRPL_IRCX 7.4.2. Remarks Before a client is registered with a non-IRCX server, sending the ISIRCX command will result in no response from the server. Recommend sending the ISIRCX command followed by the PING command, and if a PONG is just returned then the server doesn't support IRCX. 7.4.3. Example Client: ISIRCX Server: : 800 1 0 NTLM,DPA,ANON * ://http:chat.mysite.net 7.5. LIST (extension to IRC2 command) List channels with extended filters. Syntax 1: LIST [channel-list] Syntax 2: LIST [query-list] [query-list ...] 7.5.1. Parameters One or more This parameter allows the specification of certain fil- ters for the search operation. +------------------------------------------------------------------+ | Table 5 - Search filters for LIST command | +---------+--------------------------------------------------------+ | <# | Select channels with less than # members | | ># | Select channels with more than # members | | C<# | Select channels created less than # minutes ago | | C># | Select channels created greater than # minutes ago | | T<# | Select channels with a topic changed less than # | | | minutes ago | | T># | Select channels with a topic changed greater than # | | | minutes ago | +---------+--------------------------------------------------------+ Cedola & Pfenning [Page 18] INTERNET-DRAFT 13 February 1997 7.5.2. Results Same as defined in RFC 1459. 7.5.3. Remarks The LIST extension was first implemented for the Undernet version of the standard IRC2 server. 7.6. MODE (extension to IRC2 command) Enumerates, adds or changes modes of a channel or user. Syntax 1: MODE Syntax 2: MODE {+ | - } { o } 7.6.1. Parameters The nick name of a user. 7.6.2. Results MODE message IRCERR_NOPRIVILEGES 7.6.3. Remarks Client that have authenticated as a sysop can enable or disable their sysop access via the +/- o mode parameter. 7.6.4. Example Client: MODE MyNick -o Server: MODE MyNick -o 7.7. MODEX (new IRCX command) Enumerates, adds or changes extended modes of a channel or user. Syntax 1: MODEX Syntax 2: MODEX {+ | -} [...] Cedola & Pfenning [Page 19] INTERNET-DRAFT 13 February 1997 7.7.1. Parameters The name of a user, channel, member or server. An extended mode (see MODEX under the specific object type). 7.7.2. Results MODEX message IRCRPL_MODELIST IRCRPL_MODELIST2 IRCRPL_MODEEND IRCRPL_BADMODE IRCERR_NOPRIVILEGES IRCERR_CHANOPRIVSNEEDED IRCERR_CHANOWNPRIVSNEEDED 7.7.3. Remarks The MODEX command is a replacement to the standard IRC2 MODE command, but unlike the single character letter used by MODE, MODEX supports named mode settings. The MODEX command only effects binary (on or off) modes of an object. To issue a MODEX command on a channel member, the field con- sists of the channel name, followed by a comma and then the nick of the member. For example, "MODEX #MyChannel,Nick" to list the modes of the user Nick member information in the channel #MyChannel. The IRCRPL_MODELIST (805) message contains the channel modes settable by client connections, the IRCRPL_MODELIST2 (806) message contains the channel flags that are only settable by the server or a chat service. If an error occurs, no modes are updated. 7.7.4. Examples Client: MODEX #MyChannel Server: 805 #MyChannel PUBLIC TOPICOP NOEXTERN 806 #MyChannel PERSISTENT 807 #MyChannel :End of modes Longer transaction with query and setting of particular modes. Cedola & Pfenning [Page 20] INTERNET-DRAFT 13 February 1997 Client: MODEX #MyChannel Server: 805 #MyChannel PUBLIC TOPICOP NOEXTERN 807 #MyChannel :End of modes Client: MODEX #MyChannel +PRIVATE -TOPICOP +NODATA +NOWHISPER Server: MODEX #MyChannel +PRIVATE +NOEXTERN +NODATA +NOWHISPER Client: MODEX #MyChannel Server: 805 #MyChannel PRIVATE NOEXTERN NODATA NOWHISPER 807 #MyChannel :End of modes 7.8. NOTICE (extension to IRC2 command) Send a notice to a channel or user. Syntax 1: NOTICE : Syntax 2: NOTICE : 7.8.1. Results Same as defined in RFC 1459. 7.9. PRIVMSG (extension to IRC2 command) Send a message to a channel or user. Syntax 1: PRIVMSG : Sybtax 2: PRIVMSG : 7.9.1. Results Same as defined in RFC 1459. 7.10. PROP (new IRCX command) Add/Changes/Deletes a channel data property. Syntax 1: PROP Syntax 2: PROP * Cedola & Pfenning [Page 21] INTERNET-DRAFT 13 February 1997 Syntax 3: PROP [,] Syntax 4: PROP : 7.10.1. Results PROP message IRCRPL_PROPLIST IRCRPL_PROPEND IRCRPL_PROPVALUE IRCERR_BADPROPERTY IRCERR_NOPRIVILEGES IRCERR_CHANOPRIVSNEEDED IRCERR_CHANOWNPRIVSNEEDED 7.10.2. Remarks The PROP command provides a new method for manipulating string and number properties of server, user, channel and member objects based of a label name. Members of channels are defined by specifying the name of the member's channel, a comma delimited, followed by the user's nick. 7.10.3. Examples Client: PROP #MyChannel Server: 808 #MyChannel TOPIC HOSTKEY PICS 809 #MyChannel :End of properties Client: PROP #MyChannel TOPIC Server: 810 #MyChannel TOPIC :This is the topic of my channel Client: PROP #MyChannel TOPIC :Change my channel topic to something Server: PROP #MyChannel TOPIC :Change my channel topic to something 7.11. WHISPER (new IRCX command) Whisper to member(s) in a channel. Syntax: WHISPER : 7.11.1. Results Cedola & Pfenning [Page 22] INTERNET-DRAFT 13 February 1997 WHISPER message IRCERR_NEEDMOREPARAMS IRCERR_NORECIPIENT IRCERR_NOTEXTTOSEND IRCERR_NOTONCHANNEL IRCERR_CANNOTSENDTOCHANNEL IRCERR_TOOMANYTARGETS IRCERR_NOSUCHNICK IRCERR_NOSUCHCHANNEL 7.11.2. Remarks The purpose of the WHISPER command is to whisper to one or more mem- bers in a channel within the context of that channel. IRCX clients must display the WHISPER message within the context (window) of the channel specified. 8. IRCX Command Responses The new extended IRCX numeric replies follow the same convention as with IRC with a specific range for command responses and another range for error results. The IRCX command responses are in the ranage of 800 to 899 and 900 to 999 for the error results. The prefix field is optional if the host generating the error is the same as the host the client is connected to. 8.1. Command Replies 800 - IRCRPL_IRCX : The response to the IRCX command. The indicates if the has IRCX mode enabled (0 for disabled, 1 for enabled). The is the version of the IRCX protocol starting at 0. The contains a list of authentication packages supported by the server. The package name of "ANON" is reserved to indicate anonymous connec- tions are permitted. The contains a list of options supported by the server; theses are implementation dependent. If no options are available, the '*' character should be used. The field contains an administrator defined URL. 801 - IRCRPL_EVENTADD The acknowledgment response to the EVENT ADD command. The contains the name of the event added. The is the selection Cedola & Pfenning [Page 23] INTERNET-DRAFT 13 February 1997 mask. If no mask was provided in the EVENT command, then the default mask of *!*@*$* is used. 802 - IRCRPL_EVENTDEL The acknowledgment response to the EVENT DEL command. The contains the name of the event deleted. The is the selection mask. If no mask was provided in the EVENT command, then the default mask of *!*@*$* is used. 803 - IRCRPL_EVENTLIST Response to the EVENT LIST message to display a list of cur- rent events the client is interested in. 804 - IRCRPL_EVENTEND :End of events Response to the EVENT LIST message to indicate the end of the event list. 805 - IRCRPL_MODELIST Response to the MODEX command of extended modes. 806 - IRCRPL_MODELIST2 Response to the MODEX command of extended flags that are only set by the server. 807 - IRCRPL_MODEEND :End of modes Last message in an extended mode list. 808 - IRCRPL_PROPLIST Cedola & Pfenning [Page 24] INTERNET-DRAFT 13 February 1997 Response to the PROP command to list properties of an object. Multi- ple IRCRPL_PROPLIST messages can be generated per list. 809 - IRCRPL_PROPEND :End of properties Last message in a property list. 810 - IRCRPL_PROPVALUE : Response to a PROP query of a specific property. 8.2. IRCX Error Replies. 900 - IRCERR_BADCOMMAND :Bad command In response to an incorrectly formatted command. 901 - IRCERR_BADPREFIX :Bad command prefix specified A message prefix is not supported for this command. 902 - IRCERR_BADTAG :Bad property specified The message tag is incorrect. 903 - IRCERR_ALREADYAUTHENTICATED :Already authentication The client has already authenticated with the server. 904 - IRCERR_AUTHENTICATIONFAILED Cedola & Pfenning [Page 25] INTERNET-DRAFT 13 February 1997 :Authentication failed The authentication failed due to a bad userid/password or server/net- work failure. 905 - IRCERR_AUTHENTICATIONSUSPENDED :Authentication suspended for this IP Authentication has been temporary disabled due to too many authentica- tion failures from this IP. 906 - IRCERR_UNKNOWNPACKAGE :Unsupported authentication package The authentication package specified is not known to the server. ISIRCX command will return a list of supported authentication pack- ages. 907 - IRCERR_EVENTDUP :Duplicate event entry 908 - IRCERR_EVENTMIS :Unknown event entry 909 - IRCERR_NOSUCHEVENT :No such event type 10 - IRCERR_TOOMANYEVENTS :Too many events specifed 911 - IRCERR_UNKNOWNFUNCTION :Unknown function A unknown command function was specified. 912 - IRCERR_UNKNOWNMODE :Unknown mode Cedola & Pfenning [Page 26] INTERNET-DRAFT 13 February 1997 913 - IRCERR_UNKNOWNPROPERTY :Unknown property 914 - IRCERR_NODATA :Does not permit data messages 915 - IRCERR_NOWHISPER :Does not permit whisper messages 916 - IRCERR_NOREMOTE :Does not remote clients to join this channel 917 - IRCERR_RESTRICTED :Restricted by the administrator The command/function/operation was not executed due to an administra- tor restriction on this client connection. 918 - IRCERR_SECURITY :Security failure The command/function/operation is not permited for this level of client due to security. 999 - IRCERR_INTERNALERROR :Internal error code Internal error generated that doesn't map to a valid IRCX error reply. The error code is implementation dependent. 9. Security Considerations Security issues are discussed in the authentication section. The IRCX command returns a set of authentication mechanisms supported by the server. This method is open to a middle man attack whereby an attacker modifies the list of returned authentication method and only offer a cleartext password transaction. In order to avoid this type of attack only authentication methods with a challenge response mechanism Cedola & Pfenning [Page 27] INTERNET-DRAFT 13 February 1997 should be used whenever security is a concern. Since all administration commands for IRC and IRCX are send in cleart- ext a stream layer encryption mechanism like SSL[5] or IPSEC is required to protect the integrity and confidentiality of the transac- tions. The mechanisms for establishing these connection are outside the scope of this document. 10. References [1] "Internet Relay Chat Protocol", Network Working Group RFC 1459, J. Oikarinen, D. Reed, May 1993 [2] The Unicode Consortium, "The Unicode Standard Version 2.0", Addi- son Wesley Developers Press, July 1996 [3] "INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev1", Network Work- ing Group RFC 2060, M. Crispin, December 1996 [4] "Simple Authentication and Security Layer (SASL)", Work in Progress, draft-myers-auth-sasl-07.txt, J. Myers, December 1996 [5] "The SSL Protocol Version 3.0", Work in Progress, draft-ietf-tls- ssl-version3-00.txt, Alan O. Freier, Philip Karlton, Paul C. Kocher, November 1996 11. Authors' Addresses Kent Cedola Microsoft Corporation One Microsoft Way Redmond, WA 98052 EMail: kentce@microsoft.com Thomas Pfenning Microsoft Corporation One Microsoft Way Redmond, WA 98052 EMail: thomaspf@microsoft.com Cedola & Pfenning [Page 28]