Reference articles on history, science, culture and more
Encyclopedia

IRCX

Extension to the IRC protocol

IRCX (Internet Relay Chat eXtensions) is an extension to the Internet Relay Chat protocol, developed by Microsoft in the 1990s.

IRCX defines ways to use Simple Authentication and Security Layer authentication to authenticate securely to the server, channel properties/metadata, multilingual support that can be queried using the enhanced "LISTX" command, additional channel privilege levels, specific IRC operator levels, and support for Unicode in nicknames, channel names, and other user-visible strings. IRCX was designed to be backwards compatible with IRC; the specification states that existing IRC clients should continue to function against IRCX servers, while clients supporting the extensions can query the server for IRCX support.

IRCX was originally supported on Microsoft Exchange Server 5.5 (in place of the old Microsoft Chat protocol, which is a binary protocol) and a module was available for Microsoft Exchange 2000.

Microsoft published several Internet Draft revisions of IRCX through the Internet Engineering Task Force. The IETF Datatracker records revisions 00, 01, 02, and 04. The final revision is classified as an expired individual Internet-Draft; it has no RFC stream or intended RFC status and was not published as an RFC.

01Protocol

IRCX extends the client-to-server portion of IRC rather than defining a new server-to-server protocol. The specification adds commands and replies and modifies the behavior of some existing IRC commands.

Backwards compatibility

IRCX was designed so that an IRCX-capable server could continue to accept conventional IRC clients. Before registering, a client can use MODE ISIRCX to determine whether the server supports IRCX. An IRCX server then responds with an IRCX status reply, while a server without IRCX support is expected to return an error. A supporting client can then use the IRCX command to enable IRCX mode.

Some extended features can be represented in forms usable by conventional IRC clients. For example, the IRCX WHISPER command can be converted by the server into a conventional PRIVMSG for backwards compatibility; although the channel context associated with the whisper is thereafter unavailable to that client.

Authentication

IRCX adds the AUTH command for authenticating users. The client and server will then perform a multi-step authentication exchange and permit the server to advertise the authentication mechanisms it supports.

The final Internet-Draft describes authentication using mechanisms compatible with the Simple Authentication and Security Layer model and includes examples using Microsoft's NTLM authentication protocol.

IRCX introduces the ACCESS command for maintaining access-control entries associated with channels, users, and servers. An access entry can grant or deny access to an object, identify users via masks with wildcards, specify an optional timeout, and include a reason for the entry.

For channels, access entries can assign OWNER, HOST, or VOICE privileges, as well as GRANT and DENY access levels.

Channel roles

IRCX adds the channel-owner role above the conventional IRC channel-operator role. Channel ownership is represented by user mode +q. In an IRCX nickname list, owners will be identified with a period (.), whereas hosts are represented conventionally with the @ prefix.

The protocol also retains voice as a separate privilege; thus, owners, hosts, voiced members, and ordinary members may all have different capabilities.

Channel properties

IRCX adds code PROP command to read and modify string and numeric properties associated with channels. These properties are an addition to the conventional IRC topic and channel-mode mechanisms.

Defined properties include TOPIC, join/leave messages, and descriptive information such as language and subject.

Channel discovery

The LISTX command extends the standard LIST command with additional filtering and channel information. This permits clients to restrict the channels returned according to criteria supported by the server rather than always retrieving a complete channel list. The criteria includes channel characteristics and properties such as language.

Unicode support

The final IRCX revision defines a modified UTF-8 representation for Unicode characters in user visible strings. This encoding was designed around compatibility constraints imposed by the existing IRC protocol and permits Unicode characters to appear in identifiers such as nicknames and channel names.

The protocol also defines special representations for extended nicknames and channel names. When an IRCX nickname must be presented to a client that does not support IRCX, the server can use a hexadecimal representation prefixed with a caret (^) so the conventional client to refer to the IRCX user.

Earlier revisions of the IRCX specification use a modified UTF-7 encoding rather than the final modified UTF-8 encoding.

Additional commands

IRCX defines other commands not present in the original IRC protocol. These include CREATE for creating channels, WHISPER for priv messages associated with a specific channel, EVENT for listening to server events, and DATA, REQUEST, and REPLY for exchanging data with server extensions.

02Standardisation status

The first archived IRCX Internet-Draft, draft-pfenning-irc-extensions-00, is dated 31 January 1997. The IETF Datatracker records four published revisions, 00, 01, 02, and 04, with the final revision dating from 1998.

The final revision is currently classified by the IETF as an "Expired Internet-Draft (individual)" and "Expired & archived". The Datatracker states that the document is not endorsed by the IETF and has no formal standing in the IETF standards process. It lists no RFC stream nor an intended RFC status.

03Implementations

IRCX was implemented as part of Microsoft's Exchange Chat software, including Exchange Server 5.5 and Exchange 2000.

IRCX is still implemented by some third-party IRC software. The current OfficeIRC Server 3 manual states that the server implements IRCX alongside RFC 1459, RFC 2812, and IRCv3, and documents IRCX commands.

Watch videos about IRCXExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article IRCX, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.