Internet-Draft Mandar Mirashi
draft-mirashi-url-irc-01.txt mandar@wildstar.net
Expires: February 28, 1997 August 29, 1996
"irc: URL scheme"
Status of This Memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its
areas, and its working groups. Note that other groups may also
distribute working 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 material 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 ftp.is.co.za (Africa),
nic.nordu.net (Europe), munnari.oz.au (Pacific Rim),
ds.internic.net (US East Coast), or ftp.isi.edu (US West Coast).
Abstract
A new URL scheme "irc:" is defined. The irc URL scheme is used to
refer to either IRC (Internet Relay Chat) servers or individual
entities (channels or people) on IRC servers.
Description
With the advent of "plugins", and realtime support via CGI and Java,
web developers have come up with different means to integrate IRC
support into their products. This document attempts to define a URL
scheme ("irc:") which would make this process easier.
An irc URL takes the form:
irc:[ //[ <host>[:<port>] ]/[<target>] [,needpass] ]
where,
<host>
The IRC server host to connect to. See RFC 1034 [Sec 3.5] and
RFC 1123 [Sec 2.1] for details on allowed Internet hostname
formats. If omitted, the client must connect to a prespecified
default IRC server. irc: URL scheme implementors are recommended
Expires February 28th, 1997 [Page 1]
Internet Draft irc: URL scheme August 29, 1996
to provide a preconfigured list of IRC servers/networks to choose
from, and must have the ability to let the user designate a
default IRC server host.
<port>
The port number to connect to. If :<port> is omitted, the
default IANA assigned IRC port 194 is used. Clients may use port
6667 as an alternate port in case connection to the default
port fails. Clients should also maintain a default port number,
as well as associations of port numbers with specific hosts.
<target>
If a target is referred to, it takes the form:
<target> ::= <chtarget> | <nickstring>
<chtarget> ::= <chstring> | <keychstring>
<keychstring> ::= <chstring> ',needkey'
The target can be either an IRC channel or a person on IRC
(identified by his/her nickname and other associated information)
RFC 1459 (sec 2.3) defines an IRC channel as:
<channel> ::= ('#' | '&' | '+') <chstring>
<chstring> ::= <any 8bit code except SPACE, BELL, NUL,
CR, LF and comma (',')>
In the irc: URL scheme, "unsafe" characters (RFC 1738, Sec 2.2) in
<chstring> or <nickstring> must be encoded by a character triplet
consisting of the character "%" followed by the two hexadecimal
digits (from "0123456789ABCDEF") which form the hexadecimal value
of the octet. (The characters "abcdef" may also be used in
hexadecimal encodings.)
Since most IRC channels begin with the '#' character which is
unsafe in a URL, it must be encoded. To avoid the cumbersome
% encoding for most references, this draft omits the specific
mention of a channel prefix in a <target> of type <chstring>.
irc: URL scheme implementors must maintain a prefix variable (by
default, '#', with '&' and '+' as other allowable values) to form
channel names in accordance with RFC 1459. Further, the characters
'!', ',', ':' and '@' are reserved in the irc: URL scheme and must
also be encoded.
[,needkey]
IRC channels can require a keyword (RFC 1459, Sec 4.2.1) before
entrance to the channel is granted. This parameter indicates to
the irc: URL scheme implementor that the user should be prompted
for the channel key, before an attempt to dereference the URL
is made. This parameter should be ignored for modeless + channels.
Expires February 28th, 1997 [Page 2]
Internet Draft irc: URL scheme August 29, 1996
<nickstring> is described by (also see RFC1459, Sec 2.3):
<nickstring> ::= <nicktypes> ',isnick'
<nicktypes> ::= <nick> | <nickinfo> | <userinfo>
<nickinfo> ::= <nick> '!' <user> '@' <hostmask>
<userinfo> ::= <user> '@' <servername>
<nick> ::= <letter> { <letter> | <number> | <special> }
<user> ::= <nonwhite> { <nonwhite> }
<letter> ::= 'a' ... 'z' | 'A' ... 'Z'
<number> ::= '0' ... '9'
<special> ::= '-' | '[' | ']' | '\' | '`' | '^' | '{' | '}'
<nonwhite> ::= <any 8bit code except SPACE (0x20), NUL (0x0),
CR (0xd), and LF (0xa)>
<servername> ::= <host>
<hostmask> ::= <chstring>
Characters deemed unsafe (RFC 1738, Sec. 2.2) in <nickstring> (and
thus in <special>) must be encoded as usual. The irc: URL scheme
implementor may choose to initiate a DCC (direct client to client)
chat connection to the user when <nickstring> is specified. Many
IRC clients currently support DCC functionality and a rough draft
appears at ftp://ftp.undernet.org/irc/docs/technical/DCC.doc.
Alternatively, they may choose to stick to exchanging messages
via IRC, or offer the user a choice between the two.
[,needpass]
IRC servers can require a password (RFC 1459, Sec 7) before a
connection to the server is granted. This parameter indicates to
the irc: URL scheme implementor that the user should be prompted
for the server password, before an attempt to dereference the URL
is made.
Client issues
irc: URL scheme implementors must have the following user
configurable fields or variables in their clients (also see RFC
1459):
* Default IRC server host to connect to (alternate servers if
the connection to the default server fails, may also be listed).
A list of IRC servers/networks to choose from is also suggested
for inclusion.
* Default port to connect on (alternate ports if the connection
to the default port fails may also be listed)
* Default channelname prefix (usually '#', but can also take the
values '&' and '+')
Expires February 28th, 1997 [Page 3]
Internet Draft irc: URL scheme August 29, 1996
* Default nickname to connect under (alternate nicknames should be
specified since the specified nickname may already be in use)
* Real name (also known as the IRCNAME variable) of the person.
The USER command passed to an IRC server requires a <username>
parameter. Since it is easy for a client to lie about its username
by relying solely on the USER message, the availability of this
as a user configurable field should be avoided. This field may
be automatically obtained on Unix systems via the getpwuid() (or
a similar) system call. On other systems, the identity section of
mail programs on the system frequently contains a "reply-to" or
an "e-mail" field, often in a user@host format. The user portion
of this may be used for the <username> parameter. Only if these
methods fail, should the user be prompted for a <username>.
As discussed earlier, the client must be able to prompt the user
for a channel key or server password, based on the irc: URL
specified. It may also offer the user a choice of a DCC chat
connection when a nickname is dereferenced.
Examples
The URL's:
irc: irc:// irc:///
reference the default/local IRC server. The URL:
irc:///,needpass
references the default IRC server and prompts the user for a
password, before connecting to it.
The URL
irc:///help
references IRC channel help (this could be #help, &help or +help,
depending on the channel prefix set) on the default IRC server.
The URL
irc:///Mmmm!mandar@*uoknor.edu,isnick
references a person with nickname Mmmm, and user@host matching
mandar@*uoknor.edu on the default IRC server.
The URL,
Expires February 28th, 1997 [Page 4]
Internet Draft irc: URL scheme August 29, 1996
irc://foobar.org/Mmmm,isnick,needpass
references a person with nickname Mmmm on server foobar.org. The
connection to foobar.org takes place over the default port, and the
user is prompted for a server password.
The URL
irc://foobar.org:6665/secret,needkey
references the IRC channel secret on server foobar.org. The
connection takes place over port 6665, and the user is prompted
for a channel key in order to reference the channel.
Current Implementations
Despite the lack of a common URL scheme, many integration efforts
between IRC and the world wide web have been successful. These
can be roughly categorised into:
IRC plugins:
These are IRC clients distributed separately and designed to work
in close conjunction with the browser. Current plugins include:
http://home.netscape.com/comprod/chat.html
(Netscape Chat - Netscape Corp)
http://www.globalchat.com
(Global Chat - Quarterdeck Corp)
http://www.ichat.com/client.htm
(iChat - iChat Inc)
They often include proprietary protocol implementations, in
addition to IRC support.
Java gateways:
These take the form of a Java capable Web browser that interacts
with an IRC server and updates "live content" web pages. The
foll. URL's which illustrate these, were functional at the time of
writing:
http://polaris.ibm.com/~gong/irc_room.html
http://www.blackdown.org/~kbs/irctst/demo.html
http://irc.webmaster.com
http://virtual.itribe.net/jirc/
http://www.dimensionx.com/products/cafe/index.html
http://www.hdmdigital.com/~cknight/dotcom/zirc/
These gateways take up resources on the machine hosting the web
server, and are also slower than IRC clients which open a direct
connection to the IRC server. A variation of the Java gateway is a
CGI gateway, which is based on CGI scripts instead of Java, but
quickly fading from existence due to CGI's limited realtime
functionality.
Expires February 28th, 1997 [Page 5]
Internet Draft irc: URL scheme August 29, 1996
IRC client - Web browser communication:
Recent IRC clients often communicate with the Web browser via
mechanisms such as API calls or DDE, and pass back a URL to be
opened via the browser. Some of these can also be set up as
"plugins" or "helper applications". Clients that implement this
include:
http://apollo3.com/~acable/virc.html (Visual IRC)
http://www.mirc.co.uk/ (mIRC)
http://www.bcpl.lib.md.us/~frappa/pirch.html (Pirch)
http://www.vapor.com/support/amirc/ (AmIRC)
http://catless.ncl.ac.uk/Programs/Zircon/ (Zircon)
http://xirc.bitgate.com/ (XIRC)
It is anticipated that the irc: URL scheme would allow Web
browsers to open a local dynamic "live content" page as
demonstrated by the gateways (thus eliminating the need to go via a
gateway). They may also choose to open a plugin IRC client. The
choice is left to the individual irc: URL scheme implementor.
History
IRC as a protocol first appeared in 1988 and thus predates the world
wide web by several years. A formal specification of the protocol
was drawn up in 1993 (RFC 1459). Today, there are thousands of
simultaneous users on various IRC networks. Integration efforts with
the World Wide Web continue (as outlined above). The irc: URL
scheme first appeared in the Rating Services and Rating Systems
document published by the PICS (Platform for Internet Content
Selection) technical subcommitee of the World Wide Web
Consortium:
http://www.w3.org/pub/WWW/PICS/services.html
However, the original definition lacked RFC 1459 conformance. This
draft attempts to add RFC 1459 conformance to the scheme, besides
other features previously lacking.
Security Considerations
Security issues are tackled in RFC 1738 and RFC 1459. Character
encoding rules must be followed for unsafe and reserved characters.
Clients should take care that attempts to connect to ports other
than 194 in the well known port range 1-1024, are disregarded. IRC
servers often use the non-registered port 6667 (or ports in the
range 6000-7000) for clients to connect to. Since the URL
dereference would always result in client to server messages
prefixed by NICK, or USER, or JOIN or MSG, chances of a dangerous
URL resolution are minimized.
Nicknames on IRC are not constant - different people may use the
Expires February 28th, 1997 [Page 6]
Internet Draft irc: URL scheme August 29, 1996
same nickname at different times (although not simultaneously on
the same IRC server or network). This feature/anomaly is inherent
to the definition of the current IRC protocol (RFC 1459). It is
highly recommended that irc: URL scheme implementors warn the
user when dereferencing a <nick> instead of <nickinfo>. A WHOIS
IRC lookup is also suggested.
Scheme summary
The irc: URL scheme is unique in its own way. It does borrow
concepts from other URL schemes (RFC 1738) however. Like the nntp:
URL scheme, it allows the specification of a <host> for a unique
resource location. However, many IRC servers often limit
connections from outside domains. Thus, like the news: and mailto:
URL schemes, it allows for the resolution of this information at
the client level, and like the file: URL scheme, allows <host>
to be an empty string. Like the telnet: URL scheme, it does not
designate a data object, but rather an interactive service.
The draft defines the irc: URL scheme and "must be configured"
fields. This scheme is extremely useful given the shortcomings of
current implementations. There's only one operation defined on this
UR*, and it is not very GET like (the IRC protocol is outlined in
RFC 1459). It can be proxied into HTTP/HTML, but this does have
severe limitations as mentioned earlier. Security considerations
have been outlined. It does not follow the relative URL (RFC 1808)
model.
References
[RFC1738] RFC 1738. Uniform Resource Locators (URL).
T. Berners-Lee, L. Masinter & M. McCahill.
December 1994.
[RFC 1459] RFC 1459. Internet Relay Chat (IRC) Protocol
J. Oikarinen, D. Reed. May 1993.
Acknowledgements
A sincere thanks to various IRC server and client coders, HTML/WWW
developers, the PICS technical subcommittee, W3 members, and former
URI working group members, who offered help, advice and suggestions
at all stages of the draft. People who offered help/advice/reviews/
new suggestions (in no particular order):
Dan Connolly, Harald T. Alvestran, Larry Masinter, Darren Reed,
Matthew Green, Bjorn Borud, Carl von Loesch, Dennis Holmes, Niels
Bakker, James Egelhof, Arthur Liu, Robert Ullman, Klaus Wissmann.
Expires February 28th, 1997 [Page 7]
Internet Draft irc: URL scheme August 29, 1996
Those of you whom I inadvertently missed, you know who you are.
Author's contact information:
Name: Mandar Mirashi
Address: 35B, Hudson Harbour Drive,
Poughkeepsie, NY 12601.
Phone#: 914-485-6264
Email: mandar@wildstar.net,
Mmmm@alias.undernet.org
IRC Nick: Mmmm
Expires February 28th, 1997 [Page 8]