| 1 |
$Id$ |
| 2 |
|
| 3 |
Network Working Group C. Kalt |
| 4 |
Request for Comments: 2812 April 2000 |
| 5 |
Updates: 1459 |
| 6 |
Category: Informational |
| 7 |
|
| 8 |
Internet Relay Chat: Client Protocol |
| 9 |
|
| 10 |
Status of this Memo |
| 11 |
|
| 12 |
This memo provides information for the Internet community. It does |
| 13 |
not specify an Internet standard of any kind. Distribution of this |
| 14 |
memo is unlimited. |
| 15 |
|
| 16 |
Copyright Notice |
| 17 |
|
| 18 |
Copyright (C) The Internet Society (2000). All Rights Reserved. |
| 19 |
|
| 20 |
IESG NOTE: |
| 21 |
|
| 22 |
The IRC protocol itself enables several possibilities of transferring |
| 23 |
data between clients, and just like with other transfer mechanisms |
| 24 |
like email, the receiver of the data has to be careful about how the |
| 25 |
data is handled. For more information on security issues with the IRC |
| 26 |
protocol, see for example http://www.irchelp.org/irchelp/security/. |
| 27 |
|
| 28 |
Abstract |
| 29 |
|
| 30 |
The IRC (Internet Relay Chat) protocol is for use with text based |
| 31 |
conferencing; the simplest client being any socket program capable of |
| 32 |
connecting to the server. |
| 33 |
|
| 34 |
This document defines the Client Protocol, and assumes that the |
| 35 |
reader is familiar with the IRC Architecture [IRC-ARCH]. |
| 36 |
|
| 37 |
Table of Contents |
| 38 |
|
| 39 |
1. Labels ..................................................... 3 |
| 40 |
1.1 Servers ................................................ 3 |
| 41 |
1.2 Clients ................................................ 3 |
| 42 |
1.2.1 Users ............................................. 4 |
| 43 |
1.2.1.1 Operators .................................... 4 |
| 44 |
1.2.2 Services .......................................... 4 |
| 45 |
1.3 Channels ............................................... 4 |
| 46 |
2. The IRC Client Specification ............................... 5 |
| 47 |
2.1 Overview ............................................... 5 |
| 48 |
2.2 Character codes ........................................ 5 |
| 49 |
2.3 Messages ............................................... 5 |
| 50 |
|
| 51 |
2.3.1 Message format in Augmented BNF ................... 6 |
| 52 |
2.4 Numeric replies ........................................ 8 |
| 53 |
2.5 Wildcard expressions ................................... 9 |
| 54 |
3. Message Details ............................................ 9 |
| 55 |
3.1 Connection Registration ................................ 10 |
| 56 |
3.1.1 Password message .................................. 10 |
| 57 |
3.1.2 Nick message ...................................... 10 |
| 58 |
3.1.3 User message ...................................... 11 |
| 59 |
3.1.4 Oper message ...................................... 12 |
| 60 |
3.1.5 User mode message ................................. 12 |
| 61 |
3.1.6 Service message ................................... 13 |
| 62 |
3.1.7 Quit .............................................. 14 |
| 63 |
3.1.8 Squit ............................................. 15 |
| 64 |
3.2 Channel operations ..................................... 15 |
| 65 |
3.2.1 Join message ...................................... 16 |
| 66 |
3.2.2 Part message ...................................... 17 |
| 67 |
3.2.3 Channel mode message .............................. 18 |
| 68 |
3.2.4 Topic message ..................................... 19 |
| 69 |
3.2.5 Names message ..................................... 20 |
| 70 |
3.2.6 List message ...................................... 21 |
| 71 |
3.2.7 Invite message .................................... 21 |
| 72 |
3.2.8 Kick command ...................................... 22 |
| 73 |
3.3 Sending messages ....................................... 23 |
| 74 |
3.3.1 Private messages .................................. 23 |
| 75 |
3.3.2 Notice ............................................ 24 |
| 76 |
3.4 Server queries and commands ............................ 25 |
| 77 |
3.4.1 Motd message ...................................... 25 |
| 78 |
3.4.2 Lusers message .................................... 25 |
| 79 |
3.4.3 Version message ................................... 26 |
| 80 |
3.4.4 Stats message ..................................... 26 |
| 81 |
3.4.5 Links message ..................................... 27 |
| 82 |
3.4.6 Time message ...................................... 28 |
| 83 |
3.4.7 Connect message ................................... 28 |
| 84 |
3.4.8 Trace message ..................................... 29 |
| 85 |
3.4.9 Admin command ..................................... 30 |
| 86 |
3.4.10 Info command ...................................... 31 |
| 87 |
3.5 Service Query and Commands ............................. 31 |
| 88 |
3.5.1 Servlist message .................................. 31 |
| 89 |
3.5.2 Squery ............................................ 32 |
| 90 |
3.6 User based queries ..................................... 32 |
| 91 |
3.6.1 Who query ......................................... 32 |
| 92 |
3.6.2 Whois query ....................................... 33 |
| 93 |
3.6.3 Whowas ............................................ 34 |
| 94 |
3.7 Miscellaneous messages ................................. 34 |
| 95 |
3.7.1 Kill message ...................................... 35 |
| 96 |
3.7.2 Ping message ...................................... 36 |
| 97 |
3.7.3 Pong message ...................................... 37 |
| 98 |
3.7.4 Error ............................................. 37 |
| 99 |
|
| 100 |
4. Optional features .......................................... 38 |
| 101 |
4.1 Away ................................................... 38 |
| 102 |
4.2 Rehash message ......................................... 39 |
| 103 |
4.3 Die message ............................................ 39 |
| 104 |
4.4 Restart message ........................................ 40 |
| 105 |
4.5 Summon message ......................................... 40 |
| 106 |
4.6 Users .................................................. 41 |
| 107 |
4.7 Operwall message ....................................... 41 |
| 108 |
4.8 Userhost message ....................................... 42 |
| 109 |
4.9 Ison message ........................................... 42 |
| 110 |
5. Replies .................................................... 43 |
| 111 |
5.1 Command responses ...................................... 43 |
| 112 |
5.2 Error Replies .......................................... 53 |
| 113 |
5.3 Reserved numerics ...................................... 59 |
| 114 |
6. Current implementations .................................... 60 |
| 115 |
7. Current problems ........................................... 60 |
| 116 |
7.1 Nicknames .............................................. 60 |
| 117 |
7.2 Limitation of wildcards ................................ 61 |
| 118 |
7.3 Security considerations ................................ 61 |
| 119 |
8. Current support and availability ........................... 61 |
| 120 |
9. Acknowledgements ........................................... 61 |
| 121 |
10. References ................................................ 62 |
| 122 |
11. Author's Address .......................................... 62 |
| 123 |
12. Full Copyright Statement .................................. 63 |
| 124 |
|
| 125 |
1. Labels |
| 126 |
|
| 127 |
This section defines the identifiers used for the various components |
| 128 |
of the IRC protocol. |
| 129 |
|
| 130 |
1.1 Servers |
| 131 |
|
| 132 |
Servers are uniquely identified by their name, which has a maximum |
| 133 |
length of sixty three (63) characters. See the protocol grammar |
| 134 |
rules (section 2.3.1) for what may and may not be used in a server |
| 135 |
name. |
| 136 |
|
| 137 |
1.2 Clients |
| 138 |
|
| 139 |
For each client all servers MUST have the following information: a |
| 140 |
netwide unique identifier (whose format depends on the type of |
| 141 |
client) and the server which introduced the client. |
| 142 |
|
| 143 |
1.2.1 Users |
| 144 |
|
| 145 |
Each user is distinguished from other users by a unique nickname |
| 146 |
having a maximum length of nine (9) characters. See the protocol |
| 147 |
grammar rules (section 2.3.1) for what may and may not be used in a |
| 148 |
nickname. |
| 149 |
|
| 150 |
While the maximum length is limited to nine characters, clients |
| 151 |
SHOULD accept longer strings as they may become used in future |
| 152 |
evolutions of the protocol. |
| 153 |
|
| 154 |
1.2.1.1 Operators |
| 155 |
|
| 156 |
To allow a reasonable amount of order to be kept within the IRC |
| 157 |
network, a special class of users (operators) is allowed to perform |
| 158 |
general maintenance functions on the network. Although the powers |
| 159 |
granted to an operator can be considered as 'dangerous', they are |
| 160 |
nonetheless often necessary. Operators SHOULD be able to perform |
| 161 |
basic network tasks such as disconnecting and reconnecting servers as |
| 162 |
needed. In recognition of this need, the protocol discussed herein |
| 163 |
provides for operators only to be able to perform such functions. |
| 164 |
See sections 3.1.8 (SQUIT) and 3.4.7 (CONNECT). |
| 165 |
|
| 166 |
A more controversial power of operators is the ability to remove a |
| 167 |
user from the connected network by 'force', i.e., operators are able |
| 168 |
to close the connection between any client and server. The |
| 169 |
justification for this is very delicate since its abuse is both |
| 170 |
destructive and annoying, and its benefits close to inexistent. For |
| 171 |
further details on this type of action, see section 3.7.1 (KILL). |
| 172 |
|
| 173 |
1.2.2 Services |
| 174 |
|
| 175 |
Each service is distinguished from other services by a service name |
| 176 |
composed of a nickname and a server name. As for users, the nickname |
| 177 |
has a maximum length of nine (9) characters. See the protocol |
| 178 |
grammar rules (section 2.3.1) for what may and may not be used in a |
| 179 |
nickname. |
| 180 |
|
| 181 |
1.3 Channels |
| 182 |
|
| 183 |
Channels names are strings (beginning with a '&', '#', '+' or '!' |
| 184 |
character) of length up to fifty (50) characters. Apart from the |
| 185 |
requirement that the first character is either '&', '#', '+' or '!', |
| 186 |
the only restriction on a channel name is that it SHALL NOT contain |
| 187 |
any spaces (' '), a control G (^G or ASCII 7), a comma (','). Space |
| 188 |
is used as parameter separator and command is used as a list item |
| 189 |
separator by the protocol). A colon (':') can also be used as a |
| 190 |
delimiter for the channel mask. Channel names are case insensitive. |
| 191 |
|
| 192 |
See the protocol grammar rules (section 2.3.1) for the exact syntax |
| 193 |
of a channel name. |
| 194 |
|
| 195 |
Each prefix characterizes a different channel type. The definition |
| 196 |
of the channel types is not relevant to the client-server protocol |
| 197 |
and thus it is beyond the scope of this document. More details can |
| 198 |
be found in "Internet Relay Chat: Channel Management" [IRC-CHAN]. |
| 199 |
|
| 200 |
2. The IRC Client Specification |
| 201 |
|
| 202 |
2.1 Overview |
| 203 |
|
| 204 |
The protocol as described herein is for use only with client to |
| 205 |
server connections when the client registers as a user. |
| 206 |
|
| 207 |
2.2 Character codes |
| 208 |
|
| 209 |
No specific character set is specified. The protocol is based on a |
| 210 |
set of codes which are composed of eight (8) bits, making up an |
| 211 |
octet. Each message may be composed of any number of these octets; |
| 212 |
however, some octet values are used for control codes, which act as |
| 213 |
message delimiters. |
| 214 |
|
| 215 |
Regardless of being an 8-bit protocol, the delimiters and keywords |
| 216 |
are such that protocol is mostly usable from US-ASCII terminal and a |
| 217 |
telnet connection. |
| 218 |
|
| 219 |
Because of IRC's Scandinavian origin, the characters {}|^ are |
| 220 |
considered to be the lower case equivalents of the characters []\~, |
| 221 |
respectively. This is a critical issue when determining the |
| 222 |
equivalence of two nicknames or channel names. |
| 223 |
|
| 224 |
2.3 Messages |
| 225 |
|
| 226 |
Servers and clients send each other messages, which may or may not |
| 227 |
generate a reply. If the message contains a valid command, as |
| 228 |
described in later sections, the client should expect a reply as |
| 229 |
specified but it is not advised to wait forever for the reply; client |
| 230 |
to server and server to server communication is essentially |
| 231 |
asynchronous by nature. |
| 232 |
|
| 233 |
Each IRC message may consist of up to three main parts: the prefix |
| 234 |
(OPTIONAL), the command, and the command parameters (maximum of |
| 235 |
fifteen (15)). The prefix, command, and all parameters are separated |
| 236 |
by one ASCII space character (0x20) each. |
| 237 |
|
| 238 |
The presence of a prefix is indicated with a single leading ASCII |
| 239 |
colon character (':', 0x3b), which MUST be the first character of the |
| 240 |
message itself. There MUST be NO gap (whitespace) between the colon |
| 241 |
and the prefix. The prefix is used by servers to indicate the true |
| 242 |
origin of the message. If the prefix is missing from the message, it |
| 243 |
is assumed to have originated from the connection from which it was |
| 244 |
received from. Clients SHOULD NOT use a prefix when sending a |
| 245 |
message; if they use one, the only valid prefix is the registered |
| 246 |
nickname associated with the client. |
| 247 |
|
| 248 |
The command MUST either be a valid IRC command or a three (3) digit |
| 249 |
number represented in ASCII text. |
| 250 |
|
| 251 |
IRC messages are always lines of characters terminated with a CR-LF |
| 252 |
(Carriage Return - Line Feed) pair, and these messages SHALL NOT |
| 253 |
exceed 512 characters in length, counting all characters including |
| 254 |
the trailing CR-LF. Thus, there are 510 characters maximum allowed |
| 255 |
for the command and its parameters. There is no provision for |
| 256 |
continuation of message lines. See section 6 for more details about |
| 257 |
current implementations. |
| 258 |
|
| 259 |
2.3.1 Message format in Augmented BNF |
| 260 |
|
| 261 |
The protocol messages must be extracted from the contiguous stream of |
| 262 |
octets. The current solution is to designate two characters, CR and |
| 263 |
LF, as message separators. Empty messages are silently ignored, |
| 264 |
which permits use of the sequence CR-LF between messages without |
| 265 |
extra problems. |
| 266 |
|
| 267 |
The extracted message is parsed into the components <prefix>, |
| 268 |
<command> and list of parameters (<params>). |
| 269 |
|
| 270 |
The Augmented BNF representation for this is: |
| 271 |
|
| 272 |
message = [ ":" prefix SPACE ] command [ params ] crlf |
| 273 |
prefix = servername / ( nickname [ [ "!" user ] "@" host ] ) |
| 274 |
command = 1*letter / 3digit |
| 275 |
params = *14( SPACE middle ) [ SPACE ":" trailing ] |
| 276 |
=/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ] |
| 277 |
|
| 278 |
nospcrlfcl = %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF |
| 279 |
; any octet except NUL, CR, LF, " " and ":" |
| 280 |
middle = nospcrlfcl *( ":" / nospcrlfcl ) |
| 281 |
trailing = *( ":" / " " / nospcrlfcl ) |
| 282 |
|
| 283 |
SPACE = %x20 ; space character |
| 284 |
crlf = %x0D %x0A ; "carriage return" "linefeed" |
| 285 |
|
| 286 |
NOTES: |
| 287 |
1) After extracting the parameter list, all parameters are equal |
| 288 |
whether matched by <middle> or <trailing>. <trailing> is just a |
| 289 |
syntactic trick to allow SPACE within the parameter. |
| 290 |
|
| 291 |
2) The NUL (%x00) character is not special in message framing, and |
| 292 |
basically could end up inside a parameter, but it would cause |
| 293 |
extra complexities in normal C string handling. Therefore, NUL |
| 294 |
is not allowed within messages. |
| 295 |
|
| 296 |
Most protocol messages specify additional semantics and syntax for |
| 297 |
the extracted parameter strings dictated by their position in the |
| 298 |
list. For example, many server commands will assume that the first |
| 299 |
parameter after the command is the list of targets, which can be |
| 300 |
described with: |
| 301 |
|
| 302 |
target = nickname / server |
| 303 |
msgtarget = msgto *( "," msgto ) |
| 304 |
msgto = channel / ( user [ "%" host ] "@" servername ) |
| 305 |
msgto =/ ( user "%" host ) / targetmask |
| 306 |
msgto =/ nickname / ( nickname "!" user "@" host ) |
| 307 |
channel = ( "#" / "+" / ( "!" channelid ) / "&" ) chanstring |
| 308 |
[ ":" chanstring ] |
| 309 |
servername = hostname |
| 310 |
host = hostname / hostaddr |
| 311 |
hostname = shortname *( "." shortname ) |
| 312 |
shortname = ( letter / digit ) *( letter / digit / "-" ) |
| 313 |
*( letter / digit ) |
| 314 |
; as specified in RFC 1123 [HNAME] |
| 315 |
hostaddr = ip4addr / ip6addr |
| 316 |
ip4addr = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit |
| 317 |
ip6addr = 1*hexdigit 7( ":" 1*hexdigit ) |
| 318 |
ip6addr =/ "0:0:0:0:0:" ( "0" / "FFFF" ) ":" ip4addr |
| 319 |
nickname = ( letter / special ) *8( letter / digit / special / "-" ) |
| 320 |
targetmask = ( "$" / "#" ) mask |
| 321 |
; see details on allowed masks in section 3.3.1 |
| 322 |
chanstring = %x01-07 / %x08-09 / %x0B-0C / %x0E-1F / %x21-2B |
| 323 |
chanstring =/ %x2D-39 / %x3B-FF |
| 324 |
; any octet except NUL, BELL, CR, LF, " ", "," and ":" |
| 325 |
channelid = 5( %x41-5A / digit ) ; 5( A-Z / 0-9 ) |
| 326 |
|
| 327 |
Other parameter syntaxes are: |
| 328 |
|
| 329 |
user = 1*( %x01-09 / %x0B-0C / %x0E-1F / %x21-3F / %x41-FF ) |
| 330 |
; any octet except NUL, CR, LF, " " and "@" |
| 331 |
key = 1*23( %x01-05 / %x07-08 / %x0C / %x0E-1F / %x21-7F ) |
| 332 |
; any 7-bit US_ASCII character, |
| 333 |
; except NUL, CR, LF, FF, h/v TABs, and " " |
| 334 |
letter = %x41-5A / %x61-7A ; A-Z / a-z |
| 335 |
digit = %x30-39 ; 0-9 |
| 336 |
hexdigit = digit / "A" / "B" / "C" / "D" / "E" / "F" |
| 337 |
special = %x5B-60 / %x7B-7D |
| 338 |
; "[", "]", "\", "`", "_", "^", "{", "|", "}" |
| 339 |
|
| 340 |
NOTES: |
| 341 |
1) The <hostaddr> syntax is given here for the sole purpose of |
| 342 |
indicating the format to follow for IP addresses. This |
| 343 |
reflects the fact that the only available implementations of |
| 344 |
this protocol uses TCP/IP as underlying network protocol but is |
| 345 |
not meant to prevent other protocols to be used. |
| 346 |
|
| 347 |
2) <hostname> has a maximum length of 63 characters. This is a |
| 348 |
limitation of the protocol as internet hostnames (in |
| 349 |
particular) can be longer. Such restriction is necessary |
| 350 |
because IRC messages are limited to 512 characters in length. |
| 351 |
Clients connecting from a host which name is longer than 63 |
| 352 |
characters are registered using the host (numeric) address |
| 353 |
instead of the host name. |
| 354 |
|
| 355 |
3) Some parameters used in the following sections of this |
| 356 |
documents are not defined here as there is nothing specific |
| 357 |
about them besides the name that is used for convenience. |
| 358 |
These parameters follow the general syntax defined for |
| 359 |
<params>. |
| 360 |
|
| 361 |
2.4 Numeric replies |
| 362 |
|
| 363 |
Most of the messages sent to the server generate a reply of some |
| 364 |
sort. The most common reply is the numeric reply, used for both |
| 365 |
errors and normal replies. The numeric reply MUST be sent as one |
| 366 |
message consisting of the sender prefix, the three-digit numeric, and |
| 367 |
the target of the reply. A numeric reply is not allowed to originate |
| 368 |
from a client. In all other respects, a numeric reply is just like a |
| 369 |
normal message, except that the keyword is made up of 3 numeric |
| 370 |
digits rather than a string of letters. A list of different replies |
| 371 |
is supplied in section 5 (Replies). |
| 372 |
|
| 373 |
2.5 Wildcard expressions |
| 374 |
|
| 375 |
When wildcards are allowed in a string, it is referred as a "mask". |
| 376 |
|
| 377 |
For string matching purposes, the protocol allows the use of two |
| 378 |
special characters: '?' (%x3F) to match one and only one character, |
| 379 |
and '*' (%x2A) to match any number of any characters. These two |
| 380 |
characters can be escaped using the character '\' (%x5C). |
| 381 |
|
| 382 |
The Augmented BNF syntax for this is: |
| 383 |
|
| 384 |
mask = *( nowild / noesc wildone / noesc wildmany ) |
| 385 |
wildone = %x3F |
| 386 |
wildmany = %x2A |
| 387 |
nowild = %x01-29 / %x2B-3E / %x40-FF |
| 388 |
; any octet except NUL, "*", "?" |
| 389 |
noesc = %x01-5B / %x5D-FF |
| 390 |
; any octet except NUL and "\" |
| 391 |
matchone = %x01-FF |
| 392 |
; matches wildone |
| 393 |
matchmany = *matchone |
| 394 |
; matches wildmany |
| 395 |
|
| 396 |
Examples: |
| 397 |
|
| 398 |
a?c ; Matches any string of 3 characters in length starting |
| 399 |
with "a" and ending with "c" |
| 400 |
|
| 401 |
a*c ; Matches any string of at least 2 characters in length |
| 402 |
starting with "a" and ending with "c" |
| 403 |
|
| 404 |
3. Message Details |
| 405 |
|
| 406 |
On the following pages there are descriptions of each message |
| 407 |
recognized by the IRC server and client. All commands described in |
| 408 |
this section MUST be implemented by any server for this protocol. |
| 409 |
|
| 410 |
Where the reply ERR_NOSUCHSERVER is returned, it means that the |
| 411 |
target of the message could not be found. The server MUST NOT send |
| 412 |
any other replies after this error for that command. |
| 413 |
|
| 414 |
The server to which a client is connected is required to parse the |
| 415 |
complete message, and return any appropriate errors. |
| 416 |
|
| 417 |
If multiple parameters is presented, then each MUST be checked for |
| 418 |
validity and appropriate responses MUST be sent back to the client. |
| 419 |
In the case of incorrect messages which use parameter lists with |
| 420 |
comma as an item separator, a reply MUST be sent for each item. |
| 421 |
|
| 422 |
3.1 Connection Registration |
| 423 |
|
| 424 |
The commands described here are used to register a connection with an |
| 425 |
IRC server as a user as well as to correctly disconnect. |
| 426 |
|
| 427 |
A "PASS" command is not required for a client connection to be |
| 428 |
registered, but it MUST precede the latter of the NICK/USER |
| 429 |
combination (for a user connection) or the SERVICE command (for a |
| 430 |
service connection). The RECOMMENDED order for a client to register |
| 431 |
is as follows: |
| 432 |
|
| 433 |
1. Pass message |
| 434 |
2. Nick message 2. Service message |
| 435 |
3. User message |
| 436 |
|
| 437 |
Upon success, the client will receive an RPL_WELCOME (for users) or |
| 438 |
RPL_YOURESERVICE (for services) message indicating that the |
| 439 |
connection is now registered and known the to the entire IRC network. |
| 440 |
The reply message MUST contain the full client identifier upon which |
| 441 |
it was registered. |
| 442 |
|
| 443 |
3.1.1 Password message |
| 444 |
|
| 445 |
Command: PASS |
| 446 |
Parameters: <password> |
| 447 |
|
| 448 |
The PASS command is used to set a 'connection password'. The |
| 449 |
optional password can and MUST be set before any attempt to register |
| 450 |
the connection is made. Currently this requires that user send a |
| 451 |
PASS command before sending the NICK/USER combination. |
| 452 |
|
| 453 |
Numeric Replies: |
| 454 |
|
| 455 |
ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED |
| 456 |
|
| 457 |
Example: |
| 458 |
|
| 459 |
PASS secretpasswordhere |
| 460 |
|
| 461 |
3.1.2 Nick message |
| 462 |
|
| 463 |
Command: NICK |
| 464 |
Parameters: <nickname> |
| 465 |
|
| 466 |
NICK command is used to give user a nickname or change the existing |
| 467 |
one. |
| 468 |
|
| 469 |
Numeric Replies: |
| 470 |
|
| 471 |
ERR_NONICKNAMEGIVEN ERR_ERRONEUSNICKNAME |
| 472 |
ERR_NICKNAMEINUSE ERR_NICKCOLLISION |
| 473 |
ERR_UNAVAILRESOURCE ERR_RESTRICTED |
| 474 |
|
| 475 |
Examples: |
| 476 |
|
| 477 |
NICK Wiz ; Introducing new nick "Wiz" if session is |
| 478 |
still unregistered, or user changing his |
| 479 |
nickname to "Wiz" |
| 480 |
|
| 481 |
:WiZ!jto@tolsun.oulu.fi NICK Kilroy |
| 482 |
; Server telling that WiZ changed his |
| 483 |
nickname to Kilroy. |
| 484 |
|
| 485 |
3.1.3 User message |
| 486 |
|
| 487 |
Command: USER |
| 488 |
Parameters: <user> <mode> <unused> <realname> |
| 489 |
|
| 490 |
The USER command is used at the beginning of connection to specify |
| 491 |
the username, hostname and realname of a new user. |
| 492 |
|
| 493 |
The <mode> parameter should be a numeric, and can be used to |
| 494 |
automatically set user modes when registering with the server. This |
| 495 |
parameter is a bitmask, with only 2 bits having any signification: if |
| 496 |
the bit 2 is set, the user mode 'w' will be set and if the bit 3 is |
| 497 |
set, the user mode 'i' will be set. (See Section 3.1.5 "User |
| 498 |
Modes"). |
| 499 |
|
| 500 |
The <realname> may contain space characters. |
| 501 |
|
| 502 |
Numeric Replies: |
| 503 |
|
| 504 |
ERR_NEEDMOREPARAMS ERR_ALREADYREGISTRED |
| 505 |
|
| 506 |
Example: |
| 507 |
|
| 508 |
USER guest 0 * :Ronnie Reagan ; User registering themselves with a |
| 509 |
username of "guest" and real name |
| 510 |
"Ronnie Reagan". |
| 511 |
|
| 512 |
USER guest 8 * :Ronnie Reagan ; User registering themselves with a |
| 513 |
username of "guest" and real name |
| 514 |
"Ronnie Reagan", and asking to be set |
| 515 |
invisible. |
| 516 |
|
| 517 |
3.1.4 Oper message |
| 518 |
|
| 519 |
Command: OPER |
| 520 |
Parameters: <name> <password> |
| 521 |
|
| 522 |
A normal user uses the OPER command to obtain operator privileges. |
| 523 |
The combination of <name> and <password> are REQUIRED to gain |
| 524 |
Operator privileges. Upon success, the user will receive a MODE |
| 525 |
message (see section 3.1.5) indicating the new user modes. |
| 526 |
|
| 527 |
Numeric Replies: |
| 528 |
|
| 529 |
ERR_NEEDMOREPARAMS RPL_YOUREOPER |
| 530 |
ERR_NOOPERHOST ERR_PASSWDMISMATCH |
| 531 |
|
| 532 |
Example: |
| 533 |
|
| 534 |
OPER foo bar ; Attempt to register as an operator |
| 535 |
using a username of "foo" and "bar" |
| 536 |
as the password. |
| 537 |
|
| 538 |
3.1.5 User mode message |
| 539 |
|
| 540 |
Command: MODE |
| 541 |
Parameters: <nickname> |
| 542 |
*( ( "+" / "-" ) *( "i" / "w" / "o" / "O" / "r" ) ) |
| 543 |
|
| 544 |
The user MODE's are typically changes which affect either how the |
| 545 |
client is seen by others or what 'extra' messages the client is sent. |
| 546 |
|
| 547 |
A user MODE command MUST only be accepted if both the sender of the |
| 548 |
message and the nickname given as a parameter are both the same. If |
| 549 |
no other parameter is given, then the server will return the current |
| 550 |
settings for the nick. |
| 551 |
|
| 552 |
The available modes are as follows: |
| 553 |
|
| 554 |
a - user is flagged as away; |
| 555 |
i - marks a users as invisible; |
| 556 |
w - user receives wallops; |
| 557 |
r - restricted user connection; |
| 558 |
o - operator flag; |
| 559 |
O - local operator flag; |
| 560 |
s - marks a user for receipt of server notices. |
| 561 |
|
| 562 |
Additional modes may be available later on. |
| 563 |
|
| 564 |
The flag 'a' SHALL NOT be toggled by the user using the MODE command, |
| 565 |
instead use of the AWAY command is REQUIRED. |
| 566 |
|
| 567 |
If a user attempts to make themselves an operator using the "+o" or |
| 568 |
"+O" flag, the attempt SHOULD be ignored as users could bypass the |
| 569 |
authentication mechanisms of the OPER command. There is no |
| 570 |
restriction, however, on anyone `deopping' themselves (using "-o" or |
| 571 |
"-O"). |
| 572 |
|
| 573 |
On the other hand, if a user attempts to make themselves unrestricted |
| 574 |
using the "-r" flag, the attempt SHOULD be ignored. There is no |
| 575 |
restriction, however, on anyone `deopping' themselves (using "+r"). |
| 576 |
This flag is typically set by the server upon connection for |
| 577 |
administrative reasons. While the restrictions imposed are left up |
| 578 |
to the implementation, it is typical that a restricted user not be |
| 579 |
allowed to change nicknames, nor make use of the channel operator |
| 580 |
status on channels. |
| 581 |
|
| 582 |
The flag 's' is obsolete but MAY still be used. |
| 583 |
|
| 584 |
Numeric Replies: |
| 585 |
|
| 586 |
ERR_NEEDMOREPARAMS ERR_USERSDONTMATCH |
| 587 |
ERR_UMODEUNKNOWNFLAG RPL_UMODEIS |
| 588 |
|
| 589 |
Examples: |
| 590 |
|
| 591 |
MODE WiZ -w ; Command by WiZ to turn off |
| 592 |
reception of WALLOPS messages. |
| 593 |
|
| 594 |
MODE Angel +i ; Command from Angel to make herself |
| 595 |
invisible. |
| 596 |
|
| 597 |
MODE WiZ -o ; WiZ 'deopping' (removing operator |
| 598 |
status). |
| 599 |
|
| 600 |
3.1.6 Service message |
| 601 |
|
| 602 |
Command: SERVICE |
| 603 |
Parameters: <nickname> <reserved> <distribution> <type> |
| 604 |
<reserved> <info> |
| 605 |
|
| 606 |
The SERVICE command to register a new service. Command parameters |
| 607 |
specify the service nickname, distribution, type and info of a new |
| 608 |
service. |
| 609 |
|
| 610 |
The <distribution> parameter is used to specify the visibility of a |
| 611 |
service. The service may only be known to servers which have a name |
| 612 |
matching the distribution. For a matching server to have knowledge |
| 613 |
of the service, the network path between that server and the server |
| 614 |
on which the service is connected MUST be composed of servers which |
| 615 |
names all match the mask. |
| 616 |
|
| 617 |
The <type> parameter is currently reserved for future usage. |
| 618 |
|
| 619 |
Numeric Replies: |
| 620 |
|
| 621 |
ERR_ALREADYREGISTRED ERR_NEEDMOREPARAMS |
| 622 |
ERR_ERRONEUSNICKNAME |
| 623 |
RPL_YOURESERVICE RPL_YOURHOST |
| 624 |
RPL_MYINFO |
| 625 |
|
| 626 |
Example: |
| 627 |
|
| 628 |
SERVICE dict * *.fr 0 0 :French Dictionary ; Service registering |
| 629 |
itself with a name of "dict". This |
| 630 |
service will only be available on |
| 631 |
servers which name matches "*.fr". |
| 632 |
|
| 633 |
3.1.7 Quit |
| 634 |
|
| 635 |
Command: QUIT |
| 636 |
Parameters: [ <Quit Message> ] |
| 637 |
|
| 638 |
A client session is terminated with a quit message. The server |
| 639 |
acknowledges this by sending an ERROR message to the client. |
| 640 |
|
| 641 |
Numeric Replies: |
| 642 |
|
| 643 |
None. |
| 644 |
|
| 645 |
Example: |
| 646 |
|
| 647 |
QUIT :Gone to have lunch ; Preferred message format. |
| 648 |
|
| 649 |
:syrk!kalt@millennium.stealth.net QUIT :Gone to have lunch ; User |
| 650 |
syrk has quit IRC to have lunch. |
| 651 |
|
| 652 |
3.1.8 Squit |
| 653 |
|
| 654 |
Command: SQUIT |
| 655 |
Parameters: <server> <comment> |
| 656 |
|
| 657 |
The SQUIT command is available only to operators. It is used to |
| 658 |
disconnect server links. Also servers can generate SQUIT messages on |
| 659 |
error conditions. A SQUIT message may also target a remote server |
| 660 |
connection. In this case, the SQUIT message will simply be sent to |
| 661 |
the remote server without affecting the servers in between the |
| 662 |
operator and the remote server. |
| 663 |
|
| 664 |
The <comment> SHOULD be supplied by all operators who execute a SQUIT |
| 665 |
for a remote server. The server ordered to disconnect its peer |
| 666 |
generates a WALLOPS message with <comment> included, so that other |
| 667 |
users may be aware of the reason of this action. |
| 668 |
|
| 669 |
Numeric replies: |
| 670 |
|
| 671 |
ERR_NOPRIVILEGES ERR_NOSUCHSERVER |
| 672 |
ERR_NEEDMOREPARAMS |
| 673 |
|
| 674 |
Examples: |
| 675 |
|
| 676 |
SQUIT tolsun.oulu.fi :Bad Link ? ; Command to uplink of the server |
| 677 |
tolson.oulu.fi to terminate its |
| 678 |
connection with comment "Bad Link". |
| 679 |
|
| 680 |
:Trillian SQUIT cm22.eng.umd.edu :Server out of control ; Command |
| 681 |
from Trillian from to disconnect |
| 682 |
"cm22.eng.umd.edu" from the net with |
| 683 |
comment "Server out of control". |
| 684 |
|
| 685 |
3.2 Channel operations |
| 686 |
|
| 687 |
This group of messages is concerned with manipulating channels, their |
| 688 |
properties (channel modes), and their contents (typically users). |
| 689 |
For this reason, these messages SHALL NOT be made available to |
| 690 |
services. |
| 691 |
|
| 692 |
All of these messages are requests which will or will not be granted |
| 693 |
by the server. The server MUST send a reply informing the user |
| 694 |
whether the request was granted, denied or generated an error. When |
| 695 |
the server grants the request, the message is typically sent back |
| 696 |
(eventually reformatted) to the user with the prefix set to the user |
| 697 |
itself. |
| 698 |
|
| 699 |
The rules governing how channels are managed are enforced by the |
| 700 |
servers. These rules are beyond the scope of this document. More |
| 701 |
details are found in "Internet Relay Chat: Channel Management" [IRC- |
| 702 |
CHAN]. |
| 703 |
|
| 704 |
3.2.1 Join message |
| 705 |
|
| 706 |
Command: JOIN |
| 707 |
Parameters: ( <channel> *( "," <channel> ) [ <key> *( "," <key> ) ] ) |
| 708 |
/ "0" |
| 709 |
|
| 710 |
The JOIN command is used by a user to request to start listening to |
| 711 |
the specific channel. Servers MUST be able to parse arguments in the |
| 712 |
form of a list of target, but SHOULD NOT use lists when sending JOIN |
| 713 |
messages to clients. |
| 714 |
|
| 715 |
Once a user has joined a channel, he receives information about |
| 716 |
all commands his server receives affecting the channel. This |
| 717 |
includes JOIN, MODE, KICK, PART, QUIT and of course PRIVMSG/NOTICE. |
| 718 |
This allows channel members to keep track of the other channel |
| 719 |
members, as well as channel modes. |
| 720 |
|
| 721 |
If a JOIN is successful, the user receives a JOIN message as |
| 722 |
confirmation and is then sent the channel's topic (using RPL_TOPIC) and |
| 723 |
the list of users who are on the channel (using RPL_NAMREPLY), which |
| 724 |
MUST include the user joining. |
| 725 |
|
| 726 |
Note that this message accepts a special argument ("0"), which is |
| 727 |
a special request to leave all channels the user is currently a member |
| 728 |
of. The server will process this message as if the user had sent |
| 729 |
a PART command (See Section 3.2.2) for each channel he is a member |
| 730 |
of. |
| 731 |
|
| 732 |
Numeric Replies: |
| 733 |
|
| 734 |
ERR_NEEDMOREPARAMS ERR_BANNEDFROMCHAN |
| 735 |
ERR_INVITEONLYCHAN ERR_BADCHANNELKEY |
| 736 |
ERR_CHANNELISFULL ERR_BADCHANMASK |
| 737 |
ERR_NOSUCHCHANNEL ERR_TOOMANYCHANNELS |
| 738 |
ERR_TOOMANYTARGETS ERR_UNAVAILRESOURCE |
| 739 |
RPL_TOPIC |
| 740 |
|
| 741 |
Examples: |
| 742 |
|
| 743 |
JOIN #foobar ; Command to join channel #foobar. |
| 744 |
|
| 745 |
JOIN &foo fubar ; Command to join channel &foo using |
| 746 |
key "fubar". |
| 747 |
|
| 748 |
JOIN #foo,&bar fubar ; Command to join channel #foo using |
| 749 |
key "fubar" and &bar using no key. |
| 750 |
|
| 751 |
JOIN #foo,#bar fubar,foobar ; Command to join channel #foo using |
| 752 |
key "fubar", and channel #bar using |
| 753 |
key "foobar". |
| 754 |
|
| 755 |
JOIN #foo,#bar ; Command to join channels #foo and |
| 756 |
#bar. |
| 757 |
|
| 758 |
JOIN 0 ; Leave all currently joined |
| 759 |
channels. |
| 760 |
|
| 761 |
:WiZ!jto@tolsun.oulu.fi JOIN #Twilight_zone ; JOIN message from WiZ |
| 762 |
on channel #Twilight_zone |
| 763 |
|
| 764 |
3.2.2 Part message |
| 765 |
|
| 766 |
Command: PART |
| 767 |
Parameters: <channel> *( "," <channel> ) [ <Part Message> ] |
| 768 |
|
| 769 |
The PART command causes the user sending the message to be removed |
| 770 |
from the list of active members for all given channels listed in the |
| 771 |
parameter string. If a "Part Message" is given, this will be sent |
| 772 |
instead of the default message, the nickname. This request is always |
| 773 |
granted by the server. |
| 774 |
|
| 775 |
Servers MUST be able to parse arguments in the form of a list of |
| 776 |
target, but SHOULD NOT use lists when sending PART messages to |
| 777 |
clients. |
| 778 |
|
| 779 |
Numeric Replies: |
| 780 |
|
| 781 |
ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL |
| 782 |
ERR_NOTONCHANNEL |
| 783 |
|
| 784 |
Examples: |
| 785 |
|
| 786 |
PART #twilight_zone ; Command to leave channel |
| 787 |
"#twilight_zone" |
| 788 |
|
| 789 |
PART #oz-ops,&group5 ; Command to leave both channels |
| 790 |
"&group5" and "#oz-ops". |
| 791 |
|
| 792 |
:WiZ!jto@tolsun.oulu.fi PART #playzone :I lost |
| 793 |
; User WiZ leaving channel |
| 794 |
"#playzone" with the message "I |
| 795 |
lost". |
| 796 |
|
| 797 |
3.2.3 Channel mode message |
| 798 |
|
| 799 |
Command: MODE |
| 800 |
Parameters: <channel> *( ( "-" / "+" ) *<modes> *<modeparams> ) |
| 801 |
|
| 802 |
The MODE command is provided so that users may query and change the |
| 803 |
characteristics of a channel. For more details on available modes |
| 804 |
and their uses, see "Internet Relay Chat: Channel Management" [IRC- |
| 805 |
CHAN]. Note that there is a maximum limit of three (3) changes per |
| 806 |
command for modes that take a parameter. |
| 807 |
|
| 808 |
Numeric Replies: |
| 809 |
|
| 810 |
ERR_NEEDMOREPARAMS ERR_KEYSET |
| 811 |
ERR_NOCHANMODES ERR_CHANOPRIVSNEEDED |
| 812 |
ERR_USERNOTINCHANNEL ERR_UNKNOWNMODE |
| 813 |
RPL_CHANNELMODEIS |
| 814 |
RPL_BANLIST RPL_ENDOFBANLIST |
| 815 |
RPL_EXCEPTLIST RPL_ENDOFEXCEPTLIST |
| 816 |
RPL_INVITELIST RPL_ENDOFINVITELIST |
| 817 |
RPL_UNIQOPIS |
| 818 |
|
| 819 |
The following examples are given to help understanding the syntax of |
| 820 |
the MODE command, but refer to modes defined in "Internet Relay Chat: |
| 821 |
Channel Management" [IRC-CHAN]. |
| 822 |
|
| 823 |
Examples: |
| 824 |
|
| 825 |
MODE #Finnish +imI *!*@*.fi ; Command to make #Finnish channel |
| 826 |
moderated and 'invite-only' with user |
| 827 |
with a hostname matching *.fi |
| 828 |
automatically invited. |
| 829 |
|
| 830 |
MODE #Finnish +o Kilroy ; Command to give 'chanop' privileges |
| 831 |
to Kilroy on channel #Finnish. |
| 832 |
|
| 833 |
MODE #Finnish +v Wiz ; Command to allow WiZ to speak on |
| 834 |
#Finnish. |
| 835 |
|
| 836 |
MODE #Fins -s ; Command to remove 'secret' flag |
| 837 |
from channel #Fins. |
| 838 |
|
| 839 |
MODE #42 +k oulu ; Command to set the channel key to |
| 840 |
"oulu". |
| 841 |
|
| 842 |
MODE #42 -k oulu ; Command to remove the "oulu" |
| 843 |
channel key on channel "#42". |
| 844 |
|
| 845 |
MODE #eu-opers +l 10 ; Command to set the limit for the |
| 846 |
number of users on channel |
| 847 |
"#eu-opers" to 10. |
| 848 |
|
| 849 |
:WiZ!jto@tolsun.oulu.fi MODE #eu-opers -l |
| 850 |
; User "WiZ" removing the limit for |
| 851 |
the number of users on channel "#eu- |
| 852 |
opers". |
| 853 |
|
| 854 |
MODE &oulu +b ; Command to list ban masks set for |
| 855 |
the channel "&oulu". |
| 856 |
|
| 857 |
MODE &oulu +b *!*@* ; Command to prevent all users from |
| 858 |
joining. |
| 859 |
|
| 860 |
MODE &oulu +b *!*@*.edu +e *!*@*.bu.edu |
| 861 |
; Command to prevent any user from a |
| 862 |
hostname matching *.edu from joining, |
| 863 |
except if matching *.bu.edu |
| 864 |
|
| 865 |
MODE #bu +be *!*@*.edu *!*@*.bu.edu |
| 866 |
; Comment to prevent any user from a |
| 867 |
hostname matching *.edu from joining, |
| 868 |
except if matching *.bu.edu |
| 869 |
|
| 870 |
MODE #meditation e ; Command to list exception masks set |
| 871 |
for the channel "#meditation". |
| 872 |
|
| 873 |
MODE #meditation I ; Command to list invitations masks |
| 874 |
set for the channel "#meditation". |
| 875 |
|
| 876 |
MODE !12345ircd O ; Command to ask who the channel |
| 877 |
creator for "!12345ircd" is |
| 878 |
|
| 879 |
3.2.4 Topic message |
| 880 |
|
| 881 |
Command: TOPIC |
| 882 |
Parameters: <channel> [ <topic> ] |
| 883 |
|
| 884 |
The TOPIC command is used to change or view the topic of a channel. |
| 885 |
The topic for channel <channel> is returned if there is no <topic> |
| 886 |
given. If the <topic> parameter is present, the topic for that |
| 887 |
channel will be changed, if this action is allowed for the user |
| 888 |
requesting it. If the <topic> parameter is an empty string, the |
| 889 |
topic for that channel will be removed. |
| 890 |
|
| 891 |
Numeric Replies: |
| 892 |
|
| 893 |
ERR_NEEDMOREPARAMS ERR_NOTONCHANNEL |
| 894 |
RPL_NOTOPIC RPL_TOPIC |
| 895 |
ERR_CHANOPRIVSNEEDED ERR_NOCHANMODES |
| 896 |
|
| 897 |
Examples: |
| 898 |
|
| 899 |
:WiZ!jto@tolsun.oulu.fi TOPIC #test :New topic ; User Wiz setting the |
| 900 |
topic. |
| 901 |
|
| 902 |
TOPIC #test :another topic ; Command to set the topic on #test |
| 903 |
to "another topic". |
| 904 |
|
| 905 |
TOPIC #test : ; Command to clear the topic on |
| 906 |
#test. |
| 907 |
|
| 908 |
TOPIC #test ; Command to check the topic for |
| 909 |
#test. |
| 910 |
|
| 911 |
3.2.5 Names message |
| 912 |
|
| 913 |
Command: NAMES |
| 914 |
Parameters: [ <channel> *( "," <channel> ) [ <target> ] ] |
| 915 |
|
| 916 |
By using the NAMES command, a user can list all nicknames that are |
| 917 |
visible to him. For more details on what is visible and what is not, |
| 918 |
see "Internet Relay Chat: Channel Management" [IRC-CHAN]. The |
| 919 |
<channel> parameter specifies which channel(s) to return information |
| 920 |
about. There is no error reply for bad channel names. |
| 921 |
|
| 922 |
If no <channel> parameter is given, a list of all channels and their |
| 923 |
occupants is returned. At the end of this list, a list of users who |
| 924 |
are visible but either not on any channel or not on a visible channel |
| 925 |
are listed as being on `channel' "*". |
| 926 |
|
| 927 |
If the <target> parameter is specified, the request is forwarded to |
| 928 |
that server which will generate the reply. |
| 929 |
|
| 930 |
Wildcards are allowed in the <target> parameter. |
| 931 |
|
| 932 |
Numerics: |
| 933 |
|
| 934 |
ERR_TOOMANYMATCHES ERR_NOSUCHSERVER |
| 935 |
RPL_NAMREPLY RPL_ENDOFNAMES |
| 936 |
|
| 937 |
Examples: |
| 938 |
|
| 939 |
NAMES #twilight_zone,#42 ; Command to list visible users on |
| 940 |
#twilight_zone and #42 |
| 941 |
|
| 942 |
NAMES ; Command to list all visible |
| 943 |
channels and users |
| 944 |
|
| 945 |
3.2.6 List message |
| 946 |
|
| 947 |
Command: LIST |
| 948 |
Parameters: [ <channel> *( "," <channel> ) [ <target> ] ] |
| 949 |
|
| 950 |
The list command is used to list channels and their topics. If the |
| 951 |
<channel> parameter is used, only the status of that channel is |
| 952 |
displayed. |
| 953 |
|
| 954 |
If the <target> parameter is specified, the request is forwarded to |
| 955 |
that server which will generate the reply. |
| 956 |
|
| 957 |
Wildcards are allowed in the <target> parameter. |
| 958 |
|
| 959 |
Numeric Replies: |
| 960 |
|
| 961 |
ERR_TOOMANYMATCHES ERR_NOSUCHSERVER |
| 962 |
RPL_LIST RPL_LISTEND |
| 963 |
|
| 964 |
Examples: |
| 965 |
|
| 966 |
LIST ; Command to list all channels. |
| 967 |
|
| 968 |
LIST #twilight_zone,#42 ; Command to list channels |
| 969 |
#twilight_zone and #42 |
| 970 |
|
| 971 |
3.2.7 Invite message |
| 972 |
|
| 973 |
Command: INVITE |
| 974 |
Parameters: <nickname> <channel> |
| 975 |
|
| 976 |
The INVITE command is used to invite a user to a channel. The |
| 977 |
parameter <nickname> is the nickname of the person to be invited to |
| 978 |
the target channel <channel>. There is no requirement that the |
| 979 |
channel the target user is being invited to must exist or be a valid |
| 980 |
channel. However, if the channel exists, only members of the channel |
| 981 |
are allowed to invite other users. When the channel has invite-only |
| 982 |
flag set, only channel operators may issue INVITE command. |
| 983 |
|
| 984 |
Only the user inviting and the user being invited will receive |
| 985 |
notification of the invitation. Other channel members are not |
| 986 |
notified. (This is unlike the MODE changes, and is occasionally the |
| 987 |
source of trouble for users.) |
| 988 |
|
| 989 |
Numeric Replies: |
| 990 |
|
| 991 |
ERR_NEEDMOREPARAMS ERR_NOSUCHNICK |
| 992 |
ERR_NOTONCHANNEL ERR_USERONCHANNEL |
| 993 |
ERR_CHANOPRIVSNEEDED |
| 994 |
RPL_INVITING RPL_AWAY |
| 995 |
|
| 996 |
Examples: |
| 997 |
|
| 998 |
:Angel!wings@irc.org INVITE Wiz #Dust |
| 999 |
|
| 1000 |
; Message to WiZ when he has been |
| 1001 |
invited by user Angel to channel |
| 1002 |
#Dust |
| 1003 |
|
| 1004 |
INVITE Wiz #Twilight_Zone ; Command to invite WiZ to |
| 1005 |
#Twilight_zone |
| 1006 |
|
| 1007 |
3.2.8 Kick command |
| 1008 |
|
| 1009 |
Command: KICK |
| 1010 |
Parameters: <channel> *( "," <channel> ) <user> *( "," <user> ) |
| 1011 |
[<comment>] |
| 1012 |
|
| 1013 |
The KICK command can be used to request the forced removal of a user |
| 1014 |
from a channel. It causes the <user> to PART from the <channel> by |
| 1015 |
force. For the message to be syntactically correct, there MUST be |
| 1016 |
either one channel parameter and multiple user parameter, or as many |
| 1017 |
channel parameters as there are user parameters. If a "comment" is |
| 1018 |
given, this will be sent instead of the default message, the nickname |
| 1019 |
of the user issuing the KICK. |
| 1020 |
|
| 1021 |
The server MUST NOT send KICK messages with multiple channels or |
| 1022 |
users to clients. This is necessarily to maintain backward |
| 1023 |
compatibility with old client software. |
| 1024 |
|
| 1025 |
Numeric Replies: |
| 1026 |
|
| 1027 |
ERR_NEEDMOREPARAMS ERR_NOSUCHCHANNEL |
| 1028 |
ERR_BADCHANMASK ERR_CHANOPRIVSNEEDED |
| 1029 |
ERR_USERNOTINCHANNEL ERR_NOTONCHANNEL |
| 1030 |
|
| 1031 |
Examples: |
| 1032 |
|
| 1033 |
KICK &Melbourne Matthew ; Command to kick Matthew from |
| 1034 |
&Melbourne |
| 1035 |
|
| 1036 |
KICK #Finnish John :Speaking English |
| 1037 |
; Command to kick John from #Finnish |
| 1038 |
using "Speaking English" as the |
| 1039 |
reason (comment). |
| 1040 |
|
| 1041 |
:WiZ!jto@tolsun.oulu.fi KICK #Finnish John |
| 1042 |
; KICK message on channel #Finnish |
| 1043 |
from WiZ to remove John from channel |
| 1044 |
|
| 1045 |
3.3 Sending messages |
| 1046 |
|
| 1047 |
The main purpose of the IRC protocol is to provide a base for clients |
| 1048 |
to communicate with each other. PRIVMSG, NOTICE and SQUERY |
| 1049 |
(described in Section 3.5 on Service Query and Commands) are the only |
| 1050 |
messages available which actually perform delivery of a text message |
| 1051 |
from one client to another - the rest just make it possible and try |
| 1052 |
to ensure it happens in a reliable and structured manner. |
| 1053 |
|
| 1054 |
3.3.1 Private messages |
| 1055 |
|
| 1056 |
Command: PRIVMSG |
| 1057 |
Parameters: <msgtarget> <text to be sent> |
| 1058 |
|
| 1059 |
PRIVMSG is used to send private messages between users, as well as to |
| 1060 |
send messages to channels. <msgtarget> is usually the nickname of |
| 1061 |
the recipient of the message, or a channel name. |
| 1062 |
|
| 1063 |
The <msgtarget> parameter may also be a host mask (#<mask>) or server |
| 1064 |
mask ($<mask>). In both cases the server will only send the PRIVMSG |
| 1065 |
to those who have a server or host matching the mask. The mask MUST |
| 1066 |
have at least 1 (one) "." in it and no wildcards following the last |
| 1067 |
".". This requirement exists to prevent people sending messages to |
| 1068 |
"#*" or "$*", which would broadcast to all users. Wildcards are the |
| 1069 |
'*' and '?' characters. This extension to the PRIVMSG command is |
| 1070 |
only available to operators. |
| 1071 |
|
| 1072 |
Numeric Replies: |
| 1073 |
|
| 1074 |
ERR_NORECIPIENT ERR_NOTEXTTOSEND |
| 1075 |
ERR_CANNOTSENDTOCHAN ERR_NOTOPLEVEL |
| 1076 |
ERR_WILDTOPLEVEL ERR_TOOMANYTARGETS |
| 1077 |
ERR_NOSUCHNICK |
| 1078 |
RPL_AWAY |
| 1079 |
|
| 1080 |
Examples: |
| 1081 |
|
| 1082 |
:Angel!wings@irc.org PRIVMSG Wiz :Are you receiving this message ? |
| 1083 |
; Message from Angel to Wiz. |
| 1084 |
|
| 1085 |
PRIVMSG Angel :yes I'm receiving it ! |
| 1086 |
; Command to send a message to Angel. |
| 1087 |
|
| 1088 |
PRIVMSG jto@tolsun.oulu.fi :Hello ! |
| 1089 |
; Command to send a message to a user |
| 1090 |
on server tolsun.oulu.fi with |
| 1091 |
username of "jto". |
| 1092 |
|
| 1093 |
PRIVMSG kalt%millennium.stealth.net@irc.stealth.net :Are you a frog? |
| 1094 |
; Message to a user on server |
| 1095 |
irc.stealth.net with username of |
| 1096 |
"kalt", and connected from the host |
| 1097 |
millennium.stealth.net. |
| 1098 |
|
| 1099 |
PRIVMSG kalt%millennium.stealth.net :Do you like cheese? |
| 1100 |
; Message to a user on the local |
| 1101 |
server with username of "kalt", and |
| 1102 |
connected from the host |
| 1103 |
millennium.stealth.net. |
| 1104 |
|
| 1105 |
PRIVMSG Wiz!jto@tolsun.oulu.fi :Hello ! |
| 1106 |
; Message to the user with nickname |
| 1107 |
Wiz who is connected from the host |
| 1108 |
tolsun.oulu.fi and has the username |
| 1109 |
"jto". |
| 1110 |
|
| 1111 |
PRIVMSG $*.fi :Server tolsun.oulu.fi rebooting. |
| 1112 |
; Message to everyone on a server |
| 1113 |
which has a name matching *.fi. |
| 1114 |
|
| 1115 |
PRIVMSG #*.edu :NSFNet is undergoing work, expect interruptions |
| 1116 |
; Message to all users who come from |
| 1117 |
a host which has a name matching |
| 1118 |
*.edu. |
| 1119 |
|
| 1120 |
3.3.2 Notice |
| 1121 |
|
| 1122 |
Command: NOTICE |
| 1123 |
Parameters: <msgtarget> <text> |
| 1124 |
|
| 1125 |
The NOTICE command is used similarly to PRIVMSG. The difference |
| 1126 |
between NOTICE and PRIVMSG is that automatic replies MUST NEVER be |
| 1127 |
sent in response to a NOTICE message. This rule applies to servers |
| 1128 |
|
| 1129 |
too - they MUST NOT send any error reply back to the client on |
| 1130 |
receipt of a notice. The object of this rule is to avoid loops |
| 1131 |
between clients automatically sending something in response to |
| 1132 |
something it received. |
| 1133 |
|
| 1134 |
This command is available to services as well as users. |
| 1135 |
|
| 1136 |
This is typically used by services, and automatons (clients with |
| 1137 |
either an AI or other interactive program controlling their actions). |
| 1138 |
|
| 1139 |
See PRIVMSG for more details on replies and examples. |
| 1140 |
|
| 1141 |
3.4 Server queries and commands |
| 1142 |
|
| 1143 |
The server query group of commands has been designed to return |
| 1144 |
information about any server which is connected to the network. |
| 1145 |
|
| 1146 |
In these queries, where a parameter appears as <target>, wildcard |
| 1147 |
masks are usually valid. For each parameter, however, only one query |
| 1148 |
and set of replies is to be generated. In most cases, if a nickname |
| 1149 |
is given, it will mean the server to which the user is connected. |
| 1150 |
|
| 1151 |
These messages typically have little value for services, it is |
| 1152 |
therefore RECOMMENDED to forbid services from using them. |
| 1153 |
|
| 1154 |
3.4.1 Motd message |
| 1155 |
|
| 1156 |
Command: MOTD |
| 1157 |
Parameters: [ <target> ] |
| 1158 |
|
| 1159 |
The MOTD command is used to get the "Message Of The Day" of the given |
| 1160 |
server, or current server if <target> is omitted. |
| 1161 |
|
| 1162 |
Wildcards are allowed in the <target> parameter. |
| 1163 |
|
| 1164 |
Numeric Replies: |
| 1165 |
RPL_MOTDSTART RPL_MOTD |
| 1166 |
RPL_ENDOFMOTD ERR_NOMOTD |
| 1167 |
|
| 1168 |
3.4.2 Lusers message |
| 1169 |
|
| 1170 |
Command: LUSERS |
| 1171 |
Parameters: [ <mask> [ <target> ] ] |
| 1172 |
|
| 1173 |
The LUSERS command is used to get statistics about the size of the |
| 1174 |
IRC network. If no parameter is given, the reply will be about the |
| 1175 |
whole net. If a <mask> is specified, then the reply will only |
| 1176 |
|
| 1177 |
concern the part of the network formed by the servers matching the |
| 1178 |
mask. Finally, if the <target> parameter is specified, the request |
| 1179 |
is forwarded to that server which will generate the reply. |
| 1180 |
|
| 1181 |
Wildcards are allowed in the <target> parameter. |
| 1182 |
|
| 1183 |
Numeric Replies: |
| 1184 |
|
| 1185 |
RPL_LUSERCLIENT RPL_LUSEROP |
| 1186 |
RPL_LUSERUNKOWN RPL_LUSERCHANNELS |
| 1187 |
RPL_LUSERME ERR_NOSUCHSERVER |
| 1188 |
|
| 1189 |
3.4.3 Version message |
| 1190 |
|
| 1191 |
Command: VERSION |
| 1192 |
Parameters: [ <target> ] |
| 1193 |
|
| 1194 |
The VERSION command is used to query the version of the server |
| 1195 |
program. An optional parameter <target> is used to query the version |
| 1196 |
of the server program which a client is not directly connected to. |
| 1197 |
|
| 1198 |
Wildcards are allowed in the <target> parameter. |
| 1199 |
|
| 1200 |
Numeric Replies: |
| 1201 |
|
| 1202 |
ERR_NOSUCHSERVER RPL_VERSION |
| 1203 |
|
| 1204 |
Examples: |
| 1205 |
|
| 1206 |
VERSION tolsun.oulu.fi ; Command to check the version of |
| 1207 |
server "tolsun.oulu.fi". |
| 1208 |
|
| 1209 |
3.4.4 Stats message |
| 1210 |
|
| 1211 |
Command: STATS |
| 1212 |
Parameters: [ <query> [ <target> ] ] |
| 1213 |
|
| 1214 |
The stats command is used to query statistics of certain server. If |
| 1215 |
<query> parameter is omitted, only the end of stats reply is sent |
| 1216 |
back. |
| 1217 |
|
| 1218 |
A query may be given for any single letter which is only checked by |
| 1219 |
the destination server and is otherwise passed on by intermediate |
| 1220 |
servers, ignored and unaltered. |
| 1221 |
|
| 1222 |
Wildcards are allowed in the <target> parameter. |
| 1223 |
|
| 1224 |
Except for the ones below, the list of valid queries is |
| 1225 |
implementation dependent. The standard queries below SHOULD be |
| 1226 |
supported by the server: |
| 1227 |
|
| 1228 |
l - returns a list of the server's connections, showing how |
| 1229 |
long each connection has been established and the |
| 1230 |
traffic over that connection in Kbytes and messages for |
| 1231 |
each direction; |
| 1232 |
m - returns the usage count for each of commands supported |
| 1233 |
by the server; commands for which the usage count is |
| 1234 |
zero MAY be omitted; |
| 1235 |
o - returns a list of configured privileged users, |
| 1236 |
operators; |
| 1237 |
u - returns a string showing how long the server has been |
| 1238 |
up. |
| 1239 |
|
| 1240 |
It is also RECOMMENDED that client and server access configuration be |
| 1241 |
published this way. |
| 1242 |
|
| 1243 |
Numeric Replies: |
| 1244 |
|
| 1245 |
ERR_NOSUCHSERVER |
| 1246 |
RPL_STATSLINKINFO RPL_STATSUPTIME |
| 1247 |
RPL_STATSCOMMANDS RPL_STATSOLINE |
| 1248 |
RPL_ENDOFSTATS |
| 1249 |
|
| 1250 |
Examples: |
| 1251 |
|
| 1252 |
STATS m ; Command to check the command usage |
| 1253 |
for the server you are connected to |
| 1254 |
|
| 1255 |
3.4.5 Links message |
| 1256 |
|
| 1257 |
Command: LINKS |
| 1258 |
Parameters: [ [ <remote server> ] <server mask> ] |
| 1259 |
|
| 1260 |
With LINKS, a user can list all servernames, which are known by the |
| 1261 |
server answering the query. The returned list of servers MUST match |
| 1262 |
the mask, or if no mask is given, the full list is returned. |
| 1263 |
|
| 1264 |
If <remote server> is given in addition to <server mask>, the LINKS |
| 1265 |
command is forwarded to the first server found that matches that name |
| 1266 |
(if any), and that server is then required to answer the query. |
| 1267 |
|
| 1268 |
Numeric Replies: |
| 1269 |
|
| 1270 |
ERR_NOSUCHSERVER |
| 1271 |
RPL_LINKS RPL_ENDOFLINKS |
| 1272 |
|
| 1273 |
Examples: |
| 1274 |
|
| 1275 |
LINKS *.au ; Command to list all servers which |
| 1276 |
have a name that matches *.au; |
| 1277 |
|
| 1278 |
LINKS *.edu *.bu.edu ; Command to list servers matching |
| 1279 |
*.bu.edu as seen by the first server |
| 1280 |
matching *.edu. |
| 1281 |
|
| 1282 |
3.4.6 Time message |
| 1283 |
|
| 1284 |
Command: TIME |
| 1285 |
Parameters: [ <target> ] |
| 1286 |
|
| 1287 |
The time command is used to query local time from the specified |
| 1288 |
server. If the <target> parameter is not given, the server receiving |
| 1289 |
the command must reply to the query. |
| 1290 |
|
| 1291 |
Wildcards are allowed in the <target> parameter. |
| 1292 |
|
| 1293 |
Numeric Replies: |
| 1294 |
|
| 1295 |
ERR_NOSUCHSERVER RPL_TIME |
| 1296 |
|
| 1297 |
Examples: |
| 1298 |
TIME tolsun.oulu.fi ; check the time on the server |
| 1299 |
"tolson.oulu.fi" |
| 1300 |
|
| 1301 |
3.4.7 Connect message |
| 1302 |
|
| 1303 |
Command: CONNECT |
| 1304 |
Parameters: <target server> <port> [ <remote server> ] |
| 1305 |
|
| 1306 |
The CONNECT command can be used to request a server to try to |
| 1307 |
establish a new connection to another server immediately. CONNECT is |
| 1308 |
a privileged command and SHOULD be available only to IRC Operators. |
| 1309 |
If a <remote server> is given and its mask doesn't match name of the |
| 1310 |
parsing server, the CONNECT attempt is sent to the first match of |
| 1311 |
remote server. Otherwise the CONNECT attempt is made by the server |
| 1312 |
processing the request. |
| 1313 |
|
| 1314 |
The server receiving a remote CONNECT command SHOULD generate a |
| 1315 |
WALLOPS message describing the source and target of the request. |
| 1316 |
|
| 1317 |
Numeric Replies: |
| 1318 |
|
| 1319 |
ERR_NOSUCHSERVER ERR_NOPRIVILEGES |
| 1320 |
ERR_NEEDMOREPARAMS |
| 1321 |
|
| 1322 |
Examples: |
| 1323 |
|
| 1324 |
CONNECT tolsun.oulu.fi 6667 ; Command to attempt to connect local |
| 1325 |
server to tolsun.oulu.fi on port 6667 |
| 1326 |
|
| 1327 |
3.4.8 Trace message |
| 1328 |
|
| 1329 |
Command: TRACE |
| 1330 |
Parameters: [ <target> ] |
| 1331 |
|
| 1332 |
TRACE command is used to find the route to specific server and |
| 1333 |
information about its peers. Each server that processes this command |
| 1334 |
MUST report to the sender about it. The replies from pass-through |
| 1335 |
links form a chain, which shows route to destination. After sending |
| 1336 |
this reply back, the query MUST be sent to the next server until |
| 1337 |
given <target> server is reached. |
| 1338 |
|
| 1339 |
TRACE command is used to find the route to specific server. Each |
| 1340 |
server that processes this message MUST tell the sender about it by |
| 1341 |
sending a reply indicating it is a pass-through link, forming a chain |
| 1342 |
of replies. After sending this reply back, it MUST then send the |
| 1343 |
TRACE message to the next server until given server is reached. If |
| 1344 |
the <target> parameter is omitted, it is RECOMMENDED that TRACE |
| 1345 |
command sends a message to the sender telling which servers the local |
| 1346 |
server has direct connection to. |
| 1347 |
|
| 1348 |
If the destination given by <target> is an actual server, the |
| 1349 |
destination server is REQUIRED to report all servers, services and |
| 1350 |
operators which are connected to it; if the command was issued by an |
| 1351 |
operator, the server MAY also report all users which are connected to |
| 1352 |
it. If the destination given by <target> is a nickname, then only a |
| 1353 |
reply for that nickname is given. If the <target> parameter is |
| 1354 |
omitted, it is RECOMMENDED that the TRACE command is parsed as |
| 1355 |
targeted to the processing server. |
| 1356 |
|
| 1357 |
Wildcards are allowed in the <target> parameter. |
| 1358 |
|
| 1359 |
Numeric Replies: |
| 1360 |
|
| 1361 |
ERR_NOSUCHSERVER |
| 1362 |
|
| 1363 |
If the TRACE message is destined for another server, all |
| 1364 |
intermediate servers must return a RPL_TRACELINK reply to indicate |
| 1365 |
that the TRACE passed through it and where it is going next. |
| 1366 |
|
| 1367 |
RPL_TRACELINK |
| 1368 |
|
| 1369 |
A TRACE reply may be composed of any number of the following |
| 1370 |
numeric replies. |
| 1371 |
|
| 1372 |
RPL_TRACECONNECTING RPL_TRACEHANDSHAKE |
| 1373 |
RPL_TRACEUNKNOWN RPL_TRACEOPERATOR |
| 1374 |
RPL_TRACEUSER RPL_TRACESERVER |
| 1375 |
RPL_TRACESERVICE RPL_TRACENEWTYPE |
| 1376 |
RPL_TRACECLASS RPL_TRACELOG |
| 1377 |
RPL_TRACEEND |
| 1378 |
|
| 1379 |
Examples: |
| 1380 |
|
| 1381 |
TRACE *.oulu.fi ; TRACE to a server matching |
| 1382 |
*.oulu.fi |
| 1383 |
|
| 1384 |
3.4.9 Admin command |
| 1385 |
|
| 1386 |
Command: ADMIN |
| 1387 |
Parameters: [ <target> ] |
| 1388 |
|
| 1389 |
The admin command is used to find information about the administrator |
| 1390 |
of the given server, or current server if <target> parameter is |
| 1391 |
omitted. Each server MUST have the ability to forward ADMIN messages |
| 1392 |
to other servers. |
| 1393 |
|
| 1394 |
Wildcards are allowed in the <target> parameter. |
| 1395 |
|
| 1396 |
Numeric Replies: |
| 1397 |
|
| 1398 |
ERR_NOSUCHSERVER |
| 1399 |
RPL_ADMINME RPL_ADMINLOC1 |
| 1400 |
RPL_ADMINLOC2 RPL_ADMINEMAIL |
| 1401 |
|
| 1402 |
Examples: |
| 1403 |
|
| 1404 |
ADMIN tolsun.oulu.fi ; request an ADMIN reply from |
| 1405 |
tolsun.oulu.fi |
| 1406 |
|
| 1407 |
ADMIN syrk ; ADMIN request for the server to |
| 1408 |
which the user syrk is connected |
| 1409 |
|
| 1410 |
3.4.10 Info command |
| 1411 |
|
| 1412 |
Command: INFO |
| 1413 |
Parameters: [ <target> ] |
| 1414 |
|
| 1415 |
The INFO command is REQUIRED to return information describing the |
| 1416 |
server: its version, when it was compiled, the patchlevel, when it |
| 1417 |
was started, and any other miscellaneous information which may be |
| 1418 |
considered to be relevant. |
| 1419 |
|
| 1420 |
Wildcards are allowed in the <target> parameter. |
| 1421 |
|
| 1422 |
Numeric Replies: |
| 1423 |
|
| 1424 |
ERR_NOSUCHSERVER |
| 1425 |
RPL_INFO RPL_ENDOFINFO |
| 1426 |
|
| 1427 |
Examples: |
| 1428 |
|
| 1429 |
INFO csd.bu.edu ; request an INFO reply from |
| 1430 |
csd.bu.edu |
| 1431 |
|
| 1432 |
INFO Angel ; request info from the server that |
| 1433 |
Angel is connected to. |
| 1434 |
|
| 1435 |
3.5 Service Query and Commands |
| 1436 |
|
| 1437 |
The service query group of commands has been designed to return |
| 1438 |
information about any service which is connected to the network. |
| 1439 |
|
| 1440 |
3.5.1 Servlist message |
| 1441 |
|
| 1442 |
Command: SERVLIST |
| 1443 |
Parameters: [ <mask> [ <type> ] ] |
| 1444 |
|
| 1445 |
The SERVLIST command is used to list services currently connected to |
| 1446 |
the network and visible to the user issuing the command. The |
| 1447 |
optional parameters may be used to restrict the result of the query |
| 1448 |
(to matching services names, and services type). |
| 1449 |
|
| 1450 |
Numeric Replies: |
| 1451 |
|
| 1452 |
RPL_SERVLIST RPL_SERVLISTEND |
| 1453 |
|
| 1454 |
3.5.2 Squery |
| 1455 |
|
| 1456 |
Command: SQUERY |
| 1457 |
Parameters: <servicename> <text> |
| 1458 |
|
| 1459 |
The SQUERY command is used similarly to PRIVMSG. The only difference |
| 1460 |
is that the recipient MUST be a service. This is the only way for a |
| 1461 |
text message to be delivered to a service. |
| 1462 |
|
| 1463 |
See PRIVMSG for more details on replies and example. |
| 1464 |
|
| 1465 |
Examples: |
| 1466 |
|
| 1467 |
SQUERY irchelp :HELP privmsg |
| 1468 |
; Message to the service with |
| 1469 |
nickname irchelp. |
| 1470 |
|
| 1471 |
SQUERY dict@irc.fr :fr2en blaireau |
| 1472 |
; Message to the service with name |
| 1473 |
dict@irc.fr. |
| 1474 |
|
| 1475 |
3.6 User based queries |
| 1476 |
|
| 1477 |
User queries are a group of commands which are primarily concerned |
| 1478 |
with finding details on a particular user or group users. When using |
| 1479 |
wildcards with any of these commands, if they match, they will only |
| 1480 |
return information on users who are 'visible' to you. The visibility |
| 1481 |
of a user is determined as a combination of the user's mode and the |
| 1482 |
common set of channels you are both on. |
| 1483 |
|
| 1484 |
Although services SHOULD NOT be using this class of message, they are |
| 1485 |
allowed to. |
| 1486 |
|
| 1487 |
3.6.1 Who query |
| 1488 |
|
| 1489 |
Command: WHO |
| 1490 |
Parameters: [ <mask> [ "o" ] ] |
| 1491 |
|
| 1492 |
The WHO command is used by a client to generate a query which returns |
| 1493 |
a list of information which 'matches' the <mask> parameter given by |
| 1494 |
the client. In the absence of the <mask> parameter, all visible |
| 1495 |
(users who aren't invisible (user mode +i) and who don't have a |
| 1496 |
common channel with the requesting client) are listed. The same |
| 1497 |
result can be achieved by using a <mask> of "0" or any wildcard which |
| 1498 |
will end up matching every visible user. |
| 1499 |
|
| 1500 |
The <mask> passed to WHO is matched against users' host, server, real |
| 1501 |
name and nickname if the channel <mask> cannot be found. |
| 1502 |
|
| 1503 |
If the "o" parameter is passed only operators are returned according |
| 1504 |
to the <mask> supplied. |
| 1505 |
|
| 1506 |
Numeric Replies: |
| 1507 |
|
| 1508 |
ERR_NOSUCHSERVER |
| 1509 |
RPL_WHOREPLY RPL_ENDOFWHO |
| 1510 |
|
| 1511 |
Examples: |
| 1512 |
|
| 1513 |
WHO *.fi ; Command to list all users who match |
| 1514 |
against "*.fi". |
| 1515 |
|
| 1516 |
WHO jto* o ; Command to list all users with a |
| 1517 |
match against "jto*" if they are an |
| 1518 |
operator. |
| 1519 |
|
| 1520 |
3.6.2 Whois query |
| 1521 |
|
| 1522 |
Command: WHOIS |
| 1523 |
Parameters: [ <target> ] <mask> *( "," <mask> ) |
| 1524 |
|
| 1525 |
This command is used to query information about particular user. |
| 1526 |
The server will answer this command with several numeric messages |
| 1527 |
indicating different statuses of each user which matches the mask (if |
| 1528 |
you are entitled to see them). If no wildcard is present in the |
| 1529 |
<mask>, any information about that nick which you are allowed to see |
| 1530 |
is presented. |
| 1531 |
|
| 1532 |
If the <target> parameter is specified, it sends the query to a |
| 1533 |
specific server. It is useful if you want to know how long the user |
| 1534 |
in question has been idle as only local server (i.e., the server the |
| 1535 |
user is directly connected to) knows that information, while |
| 1536 |
everything else is globally known. |
| 1537 |
|
| 1538 |
Wildcards are allowed in the <target> parameter. |
| 1539 |
|
| 1540 |
Numeric Replies: |
| 1541 |
|
| 1542 |
ERR_NOSUCHSERVER ERR_NONICKNAMEGIVEN |
| 1543 |
RPL_WHOISUSER RPL_WHOISCHANNELS |
| 1544 |
RPL_WHOISCHANNELS RPL_WHOISSERVER |
| 1545 |
RPL_AWAY RPL_WHOISOPERATOR |
| 1546 |
RPL_WHOISIDLE ERR_NOSUCHNICK |
| 1547 |
RPL_ENDOFWHOIS |
| 1548 |
|
| 1549 |
Examples: |
| 1550 |
|
| 1551 |
WHOIS wiz ; return available user information |
| 1552 |
about nick WiZ |
| 1553 |
|
| 1554 |
WHOIS eff.org trillian ; ask server eff.org for user |
| 1555 |
information about trillian |
| 1556 |
|
| 1557 |
3.6.3 Whowas |
| 1558 |
|
| 1559 |
Command: WHOWAS |
| 1560 |
Parameters: <nickname> *( "," <nickname> ) [ <count> [ <target> ] ] |
| 1561 |
|
| 1562 |
Whowas asks for information about a nickname which no longer exists. |
| 1563 |
This may either be due to a nickname change or the user leaving IRC. |
| 1564 |
In response to this query, the server searches through its nickname |
| 1565 |
history, looking for any nicks which are lexically the same (no wild |
| 1566 |
card matching here). The history is searched backward, returning the |
| 1567 |
most recent entry first. If there are multiple entries, up to |
| 1568 |
<count> replies will be returned (or all of them if no <count> |
| 1569 |
parameter is given). If a non-positive number is passed as being |
| 1570 |
<count>, then a full search is done. |
| 1571 |
|
| 1572 |
Wildcards are allowed in the <target> parameter. |
| 1573 |
|
| 1574 |
Numeric Replies: |
| 1575 |
|
| 1576 |
ERR_NONICKNAMEGIVEN ERR_WASNOSUCHNICK |
| 1577 |
RPL_WHOWASUSER RPL_WHOISSERVER |
| 1578 |
RPL_ENDOFWHOWAS |
| 1579 |
|
| 1580 |
Examples: |
| 1581 |
|
| 1582 |
WHOWAS Wiz ; return all information in the nick |
| 1583 |
history about nick "WiZ"; |
| 1584 |
|
| 1585 |
WHOWAS Mermaid 9 ; return at most, the 9 most recent |
| 1586 |
entries in the nick history for |
| 1587 |
"Mermaid"; |
| 1588 |
|
| 1589 |
WHOWAS Trillian 1 *.edu ; return the most recent history for |
| 1590 |
"Trillian" from the first server |
| 1591 |
found to match "*.edu". |
| 1592 |
|
| 1593 |
3.7 Miscellaneous messages |
| 1594 |
|
| 1595 |
Messages in this category do not fit into any of the above categories |
| 1596 |
but are nonetheless still a part of and REQUIRED by the protocol. |
| 1597 |
|
| 1598 |
3.7.1 Kill message |
| 1599 |
|
| 1600 |
Command: KILL |
| 1601 |
Parameters: <nickname> <comment> |
| 1602 |
|
| 1603 |
The KILL command is used to cause a client-server connection to be |
| 1604 |
closed by the server which has the actual connection. Servers |
| 1605 |
generate KILL messages on nickname collisions. It MAY also be |
| 1606 |
available available to users who have the operator status. |
| 1607 |
|
| 1608 |
Clients which have automatic reconnect algorithms effectively make |
| 1609 |
this command useless since the disconnection is only brief. It does |
| 1610 |
however break the flow of data and can be used to stop large amounts |
| 1611 |
of 'flooding' from abusive users or accidents. Abusive users usually |
| 1612 |
don't care as they will reconnect promptly and resume their abusive |
| 1613 |
behaviour. To prevent this command from being abused, any user may |
| 1614 |
elect to receive KILL messages generated for others to keep an 'eye' |
| 1615 |
on would be trouble spots. |
| 1616 |
|
| 1617 |
In an arena where nicknames are REQUIRED to be globally unique at all |
| 1618 |
times, KILL messages are sent whenever 'duplicates' are detected |
| 1619 |
(that is an attempt to register two users with the same nickname) in |
| 1620 |
the hope that both of them will disappear and only 1 reappear. |
| 1621 |
|
| 1622 |
When a client is removed as the result of a KILL message, the server |
| 1623 |
SHOULD add the nickname to the list of unavailable nicknames in an |
| 1624 |
attempt to avoid clients to reuse this name immediately which is |
| 1625 |
usually the pattern of abusive behaviour often leading to useless |
| 1626 |
"KILL loops". See the "IRC Server Protocol" document [IRC-SERVER] |
| 1627 |
for more information on this procedure. |
| 1628 |
|
| 1629 |
The comment given MUST reflect the actual reason for the KILL. For |
| 1630 |
server-generated KILLs it usually is made up of details concerning |
| 1631 |
the origins of the two conflicting nicknames. For users it is left |
| 1632 |
up to them to provide an adequate reason to satisfy others who see |
| 1633 |
it. To prevent/discourage fake KILLs from being generated to hide |
| 1634 |
the identify of the KILLer, the comment also shows a 'kill-path' |
| 1635 |
which is updated by each server it passes through, each prepending |
| 1636 |
its name to the path. |
| 1637 |
|
| 1638 |
Numeric Replies: |
| 1639 |
|
| 1640 |
ERR_NOPRIVILEGES ERR_NEEDMOREPARAMS |
| 1641 |
ERR_NOSUCHNICK ERR_CANTKILLSERVER |
| 1642 |
|
| 1643 |
NOTE: |
| 1644 |
It is RECOMMENDED that only Operators be allowed to kill other users |
| 1645 |
with KILL command. This command has been the subject of many |
| 1646 |
controversies over the years, and along with the above |
| 1647 |
recommendation, it is also widely recognized that not even operators |
| 1648 |
should be allowed to kill users on remote servers. |
| 1649 |
|
| 1650 |
3.7.2 Ping message |
| 1651 |
|
| 1652 |
Command: PING |
| 1653 |
Parameters: <server1> [ <server2> ] |
| 1654 |
|
| 1655 |
The PING command is used to test the presence of an active client or |
| 1656 |
server at the other end of the connection. Servers send a PING |
| 1657 |
message at regular intervals if no other activity detected coming |
| 1658 |
from a connection. If a connection fails to respond to a PING |
| 1659 |
message within a set amount of time, that connection is closed. A |
| 1660 |
PING message MAY be sent even if the connection is active. |
| 1661 |
|
| 1662 |
When a PING message is received, the appropriate PONG message MUST be |
| 1663 |
sent as reply to <server1> (server which sent the PING message out) |
| 1664 |
as soon as possible. If the <server2> parameter is specified, it |
| 1665 |
represents the target of the ping, and the message gets forwarded |
| 1666 |
there. |
| 1667 |
|
| 1668 |
Numeric Replies: |
| 1669 |
|
| 1670 |
ERR_NOORIGIN ERR_NOSUCHSERVER |
| 1671 |
|
| 1672 |
Examples: |
| 1673 |
|
| 1674 |
PING tolsun.oulu.fi ; Command to send a PING message to |
| 1675 |
server |
| 1676 |
|
| 1677 |
PING WiZ tolsun.oulu.fi ; Command from WiZ to send a PING |
| 1678 |
message to server "tolsun.oulu.fi" |
| 1679 |
|
| 1680 |
PING :irc.funet.fi ; Ping message sent by server |
| 1681 |
"irc.funet.fi" |
| 1682 |
|
| 1683 |
3.7.3 Pong message |
| 1684 |
|
| 1685 |
Command: PONG |
| 1686 |
Parameters: <server> [ <server2> ] |
| 1687 |
|
| 1688 |
PONG message is a reply to ping message. If parameter <server2> is |
| 1689 |
given, this message MUST be forwarded to given target. The <server> |
| 1690 |
parameter is the name of the entity who has responded to PING message |
| 1691 |
and generated this message. |
| 1692 |
|
| 1693 |
Numeric Replies: |
| 1694 |
|
| 1695 |
ERR_NOORIGIN ERR_NOSUCHSERVER |
| 1696 |
|
| 1697 |
Example: |
| 1698 |
|
| 1699 |
PONG csd.bu.edu tolsun.oulu.fi ; PONG message from csd.bu.edu to |
| 1700 |
tolsun.oulu.fi |
| 1701 |
|
| 1702 |
3.7.4 Error |
| 1703 |
|
| 1704 |
Command: ERROR |
| 1705 |
Parameters: <error message> |
| 1706 |
|
| 1707 |
The ERROR command is for use by servers when reporting a serious or |
| 1708 |
fatal error to its peers. It may also be sent from one server to |
| 1709 |
another but MUST NOT be accepted from any normal unknown clients. |
| 1710 |
|
| 1711 |
Only an ERROR message SHOULD be used for reporting errors which occur |
| 1712 |
with a server-to-server link. An ERROR message is sent to the server |
| 1713 |
at the other end (which reports it to appropriate local users and |
| 1714 |
logs) and to appropriate local users and logs. It is not to be |
| 1715 |
passed onto any other servers by a server if it is received from a |
| 1716 |
server. |
| 1717 |
|
| 1718 |
The ERROR message is also used before terminating a client |
| 1719 |
connection. |
| 1720 |
|
| 1721 |
When a server sends a received ERROR message to its operators, the |
| 1722 |
message SHOULD be encapsulated inside a NOTICE message, indicating |
| 1723 |
that the client was not responsible for the error. |
| 1724 |
|
| 1725 |
Numerics: |
| 1726 |
|
| 1727 |
None. |
| 1728 |
|
| 1729 |
Examples: |
| 1730 |
|
| 1731 |
ERROR :Server *.fi already exists ; ERROR message to the other server |
| 1732 |
which caused this error. |
| 1733 |
|
| 1734 |
NOTICE WiZ :ERROR from csd.bu.edu -- Server *.fi already exists |
| 1735 |
; Same ERROR message as above but |
| 1736 |
sent to user WiZ on the other server. |
| 1737 |
|
| 1738 |
4. Optional features |
| 1739 |
|
| 1740 |
This section describes OPTIONAL messages. They are not required in a |
| 1741 |
working server implementation of the protocol described herein. In |
| 1742 |
the absence of the feature, an error reply message MUST be generated |
| 1743 |
or an unknown command error. If the message is destined for another |
| 1744 |
server to answer then it MUST be passed on (elementary parsing |
| 1745 |
REQUIRED) The allocated numerics for this are listed with the |
| 1746 |
messages below. |
| 1747 |
|
| 1748 |
From this section, only the USERHOST and ISON messages are available |
| 1749 |
to services. |
| 1750 |
|
| 1751 |
4.1 Away |
| 1752 |
|
| 1753 |
Command: AWAY |
| 1754 |
Parameters: [ <text> ] |
| 1755 |
|
| 1756 |
With the AWAY command, clients can set an automatic reply string for |
| 1757 |
any PRIVMSG commands directed at them (not to a channel they are on). |
| 1758 |
The server sends an automatic reply to the client sending the PRIVMSG |
| 1759 |
command. The only replying server is the one to which the sending |
| 1760 |
client is connected to. |
| 1761 |
|
| 1762 |
The AWAY command is used either with one parameter, to set an AWAY |
| 1763 |
message, or with no parameters, to remove the AWAY message. |
| 1764 |
|
| 1765 |
Because of its high cost (memory and bandwidth wise), the AWAY |
| 1766 |
message SHOULD only be used for client-server communication. A |
| 1767 |
server MAY choose to silently ignore AWAY messages received from |
| 1768 |
other servers. To update the away status of a client across servers, |
| 1769 |
the user mode 'a' SHOULD be used instead. (See Section 3.1.5) |
| 1770 |
|
| 1771 |
Numeric Replies: |
| 1772 |
|
| 1773 |
RPL_UNAWAY RPL_NOWAWAY |
| 1774 |
|
| 1775 |
Example: |
| 1776 |
|
| 1777 |
AWAY :Gone to lunch. Back in 5 ; Command to set away message to |
| 1778 |
"Gone to lunch. Back in 5". |
| 1779 |
|
| 1780 |
4.2 Rehash message |
| 1781 |
|
| 1782 |
Command: REHASH |
| 1783 |
Parameters: None |
| 1784 |
|
| 1785 |
The rehash command is an administrative command which can be used by |
| 1786 |
an operator to force the server to re-read and process its |
| 1787 |
configuration file. |
| 1788 |
|
| 1789 |
Numeric Replies: |
| 1790 |
|
| 1791 |
RPL_REHASHING ERR_NOPRIVILEGES |
| 1792 |
|
| 1793 |
Example: |
| 1794 |
|
| 1795 |
REHASH ; message from user with operator |
| 1796 |
status to server asking it to reread |
| 1797 |
its configuration file. |
| 1798 |
|
| 1799 |
4.3 Die message |
| 1800 |
|
| 1801 |
Command: DIE |
| 1802 |
Parameters: None |
| 1803 |
|
| 1804 |
An operator can use the DIE command to shutdown the server. This |
| 1805 |
message is optional since it may be viewed as a risk to allow |
| 1806 |
arbitrary people to connect to a server as an operator and execute |
| 1807 |
this command. |
| 1808 |
|
| 1809 |
The DIE command MUST always be fully processed by the server to which |
| 1810 |
the sending client is connected and MUST NOT be passed onto other |
| 1811 |
connected servers. |
| 1812 |
|
| 1813 |
Numeric Replies: |
| 1814 |
|
| 1815 |
ERR_NOPRIVILEGES |
| 1816 |
|
| 1817 |
Example: |
| 1818 |
|
| 1819 |
DIE ; no parameters required. |
| 1820 |
|
| 1821 |
4.4 Restart message |
| 1822 |
|
| 1823 |
Command: RESTART |
| 1824 |
Parameters: None |
| 1825 |
|
| 1826 |
An operator can use the restart command to force the server to |
| 1827 |
restart itself. This message is optional since it may be viewed as a |
| 1828 |
risk to allow arbitrary people to connect to a server as an operator |
| 1829 |
and execute this command, causing (at least) a disruption to service. |
| 1830 |
|
| 1831 |
The RESTART command MUST always be fully processed by the server to |
| 1832 |
which the sending client is connected and MUST NOT be passed onto |
| 1833 |
other connected servers. |
| 1834 |
|
| 1835 |
Numeric Replies: |
| 1836 |
|
| 1837 |
ERR_NOPRIVILEGES |
| 1838 |
|
| 1839 |
Example: |
| 1840 |
|
| 1841 |
RESTART ; no parameters required. |
| 1842 |
|
| 1843 |
4.5 Summon message |
| 1844 |
|
| 1845 |
Command: SUMMON |
| 1846 |
Parameters: <user> [ <target> [ <channel> ] ] |
| 1847 |
|
| 1848 |
The SUMMON command can be used to give users who are on a host |
| 1849 |
running an IRC server a message asking them to please join IRC. This |
| 1850 |
message is only sent if the target server (a) has SUMMON enabled, (b) |
| 1851 |
the user is logged in and (c) the server process can write to the |
| 1852 |
user's tty (or similar). |
| 1853 |
|
| 1854 |
If no <server> parameter is given it tries to summon <user> from the |
| 1855 |
server the client is connected to is assumed as the target. |
| 1856 |
|
| 1857 |
If summon is not enabled in a server, it MUST return the |
| 1858 |
ERR_SUMMONDISABLED numeric. |
| 1859 |
|
| 1860 |
Numeric Replies: |
| 1861 |
|
| 1862 |
ERR_NORECIPIENT ERR_FILEERROR |
| 1863 |
ERR_NOLOGIN ERR_NOSUCHSERVER |
| 1864 |
ERR_SUMMONDISABLED RPL_SUMMONING |
| 1865 |
|
| 1866 |
Examples: |
| 1867 |
|
| 1868 |
SUMMON jto ; summon user jto on the server's |
| 1869 |
host |
| 1870 |
|
| 1871 |
SUMMON jto tolsun.oulu.fi ; summon user jto on the host which a |
| 1872 |
server named "tolsun.oulu.fi" is |
| 1873 |
running. |
| 1874 |
|
| 1875 |
4.6 Users |
| 1876 |
|
| 1877 |
Command: USERS |
| 1878 |
Parameters: [ <target> ] |
| 1879 |
|
| 1880 |
The USERS command returns a list of users logged into the server in a |
| 1881 |
format similar to the UNIX commands who(1), rusers(1) and finger(1). |
| 1882 |
If disabled, the correct numeric MUST be returned to indicate this. |
| 1883 |
|
| 1884 |
Because of the security implications of such a command, it SHOULD be |
| 1885 |
disabled by default in server implementations. Enabling it SHOULD |
| 1886 |
require recompiling the server or some equivalent change rather than |
| 1887 |
simply toggling an option and restarting the server. The procedure |
| 1888 |
to enable this command SHOULD also include suitable large comments. |
| 1889 |
|
| 1890 |
Numeric Replies: |
| 1891 |
|
| 1892 |
ERR_NOSUCHSERVER ERR_FILEERROR |
| 1893 |
RPL_USERSSTART RPL_USERS |
| 1894 |
RPL_NOUSERS RPL_ENDOFUSERS |
| 1895 |
ERR_USERSDISABLED |
| 1896 |
|
| 1897 |
Disabled Reply: |
| 1898 |
|
| 1899 |
ERR_USERSDISABLED |
| 1900 |
|
| 1901 |
Example: |
| 1902 |
|
| 1903 |
USERS eff.org ; request a list of users logged in |
| 1904 |
on server eff.org |
| 1905 |
|
| 1906 |
4.7 Operwall message |
| 1907 |
|
| 1908 |
Command: WALLOPS |
| 1909 |
Parameters: <Text to be sent> |
| 1910 |
|
| 1911 |
The WALLOPS command is used to send a message to all currently |
| 1912 |
connected users who have set the 'w' user mode for themselves. (See |
| 1913 |
Section 3.1.5 "User modes"). |
| 1914 |
|
| 1915 |
After implementing WALLOPS as a user command it was found that it was |
| 1916 |
often and commonly abused as a means of sending a message to a lot of |
| 1917 |
people. Due to this, it is RECOMMENDED that the implementation of |
| 1918 |
WALLOPS allows and recognizes only servers as the originators of |
| 1919 |
WALLOPS. |
| 1920 |
|
| 1921 |
Numeric Replies: |
| 1922 |
|
| 1923 |
ERR_NEEDMOREPARAMS |
| 1924 |
|
| 1925 |
Example: |
| 1926 |
|
| 1927 |
:csd.bu.edu WALLOPS :Connect '*.uiuc.edu 6667' from Joshua ; WALLOPS |
| 1928 |
message from csd.bu.edu announcing a |
| 1929 |
CONNECT message it received from |
| 1930 |
Joshua and acted upon. |
| 1931 |
|
| 1932 |
4.8 Userhost message |
| 1933 |
|
| 1934 |
Command: USERHOST |
| 1935 |
Parameters: <nickname> *( SPACE <nickname> ) |
| 1936 |
|
| 1937 |
The USERHOST command takes a list of up to 5 nicknames, each |
| 1938 |
separated by a space character and returns a list of information |
| 1939 |
about each nickname that it found. The returned list has each reply |
| 1940 |
separated by a space. |
| 1941 |
|
| 1942 |
Numeric Replies: |
| 1943 |
|
| 1944 |
RPL_USERHOST ERR_NEEDMOREPARAMS |
| 1945 |
|
| 1946 |
Example: |
| 1947 |
|
| 1948 |
USERHOST Wiz Michael syrk ; USERHOST request for information on |
| 1949 |
nicks "Wiz", "Michael", and "syrk" |
| 1950 |
|
| 1951 |
:ircd.stealth.net 302 yournick :syrk=+syrk@millennium.stealth.net |
| 1952 |
; Reply for user syrk |
| 1953 |
|
| 1954 |
4.9 Ison message |
| 1955 |
|
| 1956 |
Command: ISON |
| 1957 |
Parameters: <nickname> *( SPACE <nickname> ) |
| 1958 |
|
| 1959 |
The ISON command was implemented to provide a quick and efficient |
| 1960 |
means to get a response about whether a given nickname was currently |
| 1961 |
on IRC. ISON only takes one (1) type of parameter: a space-separated |
| 1962 |
list of nicks. For each nickname in the list that is present, the |
| 1963 |
|
| 1964 |
server adds that to its reply string. Thus the reply string may |
| 1965 |
return empty (none of the given nicks are present), an exact copy of |
| 1966 |
the parameter string (all of them present) or any other subset of the |
| 1967 |
set of nicks given in the parameter. The only limit on the number of |
| 1968 |
nicks that may be checked is that the combined length MUST NOT be too |
| 1969 |
large as to cause the server to chop it off so it fits in 512 |
| 1970 |
characters. |
| 1971 |
|
| 1972 |
ISON is only processed by the server local to the client sending the |
| 1973 |
command and thus not passed onto other servers for further |
| 1974 |
processing. |
| 1975 |
|
| 1976 |
Numeric Replies: |
| 1977 |
|
| 1978 |
RPL_ISON ERR_NEEDMOREPARAMS |
| 1979 |
|
| 1980 |
Example: |
| 1981 |
|
| 1982 |
ISON phone trillian WiZ jarlek Avalon Angel Monstah syrk |
| 1983 |
; Sample ISON request for 7 nicks. |
| 1984 |
|
| 1985 |
5. Replies |
| 1986 |
|
| 1987 |
The following is a list of numeric replies which are generated in |
| 1988 |
response to the commands given above. Each numeric is given with its |
| 1989 |
number, name and reply string. |
| 1990 |
|
| 1991 |
5.1 Command responses |
| 1992 |
|
| 1993 |
Numerics in the range from 001 to 099 are used for client-server |
| 1994 |
connections only and should never travel between servers. Replies |
| 1995 |
generated in the response to commands are found in the range from 200 |
| 1996 |
to 399. |
| 1997 |
|
| 1998 |
001 RPL_WELCOME |
| 1999 |
"Welcome to the Internet Relay Network |
| 2000 |
<nick>!<user>@<host>" |
| 2001 |
002 RPL_YOURHOST |
| 2002 |
"Your host is <servername>, running version <ver>" |
| 2003 |
003 RPL_CREATED |
| 2004 |
"This server was created <date>" |
| 2005 |
004 RPL_MYINFO |
| 2006 |
"<servername> <version> <available user modes> |
| 2007 |
<available channel modes>" |
| 2008 |
|
| 2009 |
- The server sends Replies 001 to 004 to a user upon |
| 2010 |
successful registration. |
| 2011 |
|
| 2012 |
005 RPL_BOUNCE |
| 2013 |
"Try server <server name>, port <port number>" |
| 2014 |
|
| 2015 |
- Sent by the server to a user to suggest an alternative |
| 2016 |
server. This is often used when the connection is |
| 2017 |
refused because the server is already full. |
| 2018 |
|
| 2019 |
302 RPL_USERHOST |
| 2020 |
":*1<reply> *( " " <reply> )" |
| 2021 |
|
| 2022 |
- Reply format used by USERHOST to list replies to |
| 2023 |
the query list. The reply string is composed as |
| 2024 |
follows: |
| 2025 |
|
| 2026 |
reply = nickname [ "*" ] "=" ( "+" / "-" ) hostname |
| 2027 |
|
| 2028 |
The '*' indicates whether the client has registered |
| 2029 |
as an Operator. The '-' or '+' characters represent |
| 2030 |
whether the client has set an AWAY message or not |
| 2031 |
respectively. |
| 2032 |
|
| 2033 |
303 RPL_ISON |
| 2034 |
":*1<nick> *( " " <nick> )" |
| 2035 |
|
| 2036 |
- Reply format used by ISON to list replies to the |
| 2037 |
query list. |
| 2038 |
|
| 2039 |
301 RPL_AWAY |
| 2040 |
"<nick> :<away message>" |
| 2041 |
305 RPL_UNAWAY |
| 2042 |
":You are no longer marked as being away" |
| 2043 |
306 RPL_NOWAWAY |
| 2044 |
":You have been marked as being away" |
| 2045 |
|
| 2046 |
- These replies are used with the AWAY command (if |
| 2047 |
allowed). RPL_AWAY is sent to any client sending a |
| 2048 |
PRIVMSG to a client which is away. RPL_AWAY is only |
| 2049 |
sent by the server to which the client is connected. |
| 2050 |
Replies RPL_UNAWAY and RPL_NOWAWAY are sent when the |
| 2051 |
client removes and sets an AWAY message. |
| 2052 |
|
| 2053 |
311 RPL_WHOISUSER |
| 2054 |
"<nick> <user> <host> * :<real name>" |
| 2055 |
312 RPL_WHOISSERVER |
| 2056 |
"<nick> <server> :<server info>" |
| 2057 |
313 RPL_WHOISOPERATOR |
| 2058 |
"<nick> :is an IRC operator" |
| 2059 |
|
| 2060 |
317 RPL_WHOISIDLE |
| 2061 |
"<nick> <integer> :seconds idle" |
| 2062 |
318 RPL_ENDOFWHOIS |
| 2063 |
"<nick> :End of WHOIS list" |
| 2064 |
319 RPL_WHOISCHANNELS |
| 2065 |
"<nick> :*( ( "@" / "+" ) <channel> " " )" |
| 2066 |
|
| 2067 |
- Replies 311 - 313, 317 - 319 are all replies |
| 2068 |
generated in response to a WHOIS message. Given that |
| 2069 |
there are enough parameters present, the answering |
| 2070 |
server MUST either formulate a reply out of the above |
| 2071 |
numerics (if the query nick is found) or return an |
| 2072 |
error reply. The '*' in RPL_WHOISUSER is there as |
| 2073 |
the literal character and not as a wild card. For |
| 2074 |
each reply set, only RPL_WHOISCHANNELS may appear |
| 2075 |
more than once (for long lists of channel names). |
| 2076 |
The '@' and '+' characters next to the channel name |
| 2077 |
indicate whether a client is a channel operator or |
| 2078 |
has been granted permission to speak on a moderated |
| 2079 |
channel. The RPL_ENDOFWHOIS reply is used to mark |
| 2080 |
the end of processing a WHOIS message. |
| 2081 |
|
| 2082 |
314 RPL_WHOWASUSER |
| 2083 |
"<nick> <user> <host> * :<real name>" |
| 2084 |
369 RPL_ENDOFWHOWAS |
| 2085 |
"<nick> :End of WHOWAS" |
| 2086 |
|
| 2087 |
- When replying to a WHOWAS message, a server MUST use |
| 2088 |
the replies RPL_WHOWASUSER, RPL_WHOISSERVER or |
| 2089 |
ERR_WASNOSUCHNICK for each nickname in the presented |
| 2090 |
list. At the end of all reply batches, there MUST |
| 2091 |
be RPL_ENDOFWHOWAS (even if there was only one reply |
| 2092 |
and it was an error). |
| 2093 |
|
| 2094 |
321 RPL_LISTSTART |
| 2095 |
Obsolete. Not used. |
| 2096 |
|
| 2097 |
322 RPL_LIST |
| 2098 |
"<channel> <# visible> :<topic>" |
| 2099 |
323 RPL_LISTEND |
| 2100 |
":End of LIST" |
| 2101 |
|
| 2102 |
- Replies RPL_LIST, RPL_LISTEND mark the actual replies |
| 2103 |
with data and end of the server's response to a LIST |
| 2104 |
command. If there are no channels available to return, |
| 2105 |
only the end reply MUST be sent. |
| 2106 |
|
| 2107 |
325 RPL_UNIQOPIS |
| 2108 |
"<channel> <nickname>" |
| 2109 |
|
| 2110 |
324 RPL_CHANNELMODEIS |
| 2111 |
"<channel> <mode> <mode params>" |
| 2112 |
|
| 2113 |
331 RPL_NOTOPIC |
| 2114 |
"<channel> :No topic is set" |
| 2115 |
332 RPL_TOPIC |
| 2116 |
"<channel> :<topic>" |
| 2117 |
|
| 2118 |
- When sending a TOPIC message to determine the |
| 2119 |
channel topic, one of two replies is sent. If |
| 2120 |
the topic is set, RPL_TOPIC is sent back else |
| 2121 |
RPL_NOTOPIC. |
| 2122 |
|
| 2123 |
341 RPL_INVITING |
| 2124 |
"<channel> <nick>" |
| 2125 |
|
| 2126 |
- Returned by the server to indicate that the |
| 2127 |
attempted INVITE message was successful and is |
| 2128 |
being passed onto the end client. |
| 2129 |
|
| 2130 |
342 RPL_SUMMONING |
| 2131 |
"<user> :Summoning user to IRC" |
| 2132 |
|
| 2133 |
- Returned by a server answering a SUMMON message to |
| 2134 |
indicate that it is summoning that user. |
| 2135 |
|
| 2136 |
346 RPL_INVITELIST |
| 2137 |
"<channel> <invitemask>" |
| 2138 |
347 RPL_ENDOFINVITELIST |
| 2139 |
"<channel> :End of channel invite list" |
| 2140 |
|
| 2141 |
- When listing the 'invitations masks' for a given channel, |
| 2142 |
a server is required to send the list back using the |
| 2143 |
RPL_INVITELIST and RPL_ENDOFINVITELIST messages. A |
| 2144 |
separate RPL_INVITELIST is sent for each active mask. |
| 2145 |
After the masks have been listed (or if none present) a |
| 2146 |
RPL_ENDOFINVITELIST MUST be sent. |
| 2147 |
|
| 2148 |
348 RPL_EXCEPTLIST |
| 2149 |
"<channel> <exceptionmask>" |
| 2150 |
349 RPL_ENDOFEXCEPTLIST |
| 2151 |
"<channel> :End of channel exception list" |
| 2152 |
|
| 2153 |
- When listing the 'exception masks' for a given channel, |
| 2154 |
a server is required to send the list back using the |
| 2155 |
RPL_EXCEPTLIST and RPL_ENDOFEXCEPTLIST messages. A |
| 2156 |
separate RPL_EXCEPTLIST is sent for each active mask. |
| 2157 |
After the masks have been listed (or if none present) |
| 2158 |
a RPL_ENDOFEXCEPTLIST MUST be sent. |
| 2159 |
|
| 2160 |
351 RPL_VERSION |
| 2161 |
"<version>.<debuglevel> <server> :<comments>" |
| 2162 |
|
| 2163 |
- Reply by the server showing its version details. |
| 2164 |
The <version> is the version of the software being |
| 2165 |
used (including any patchlevel revisions) and the |
| 2166 |
<debuglevel> is used to indicate if the server is |
| 2167 |
running in "debug mode". |
| 2168 |
|
| 2169 |
The "comments" field may contain any comments about |
| 2170 |
the version or further version details. |
| 2171 |
|
| 2172 |
352 RPL_WHOREPLY |
| 2173 |
"<channel> <user> <host> <server> <nick> |
| 2174 |
( "H" / "G" > ["*"] [ ( "@" / "+" ) ] |
| 2175 |
:<hopcount> <real name>" |
| 2176 |
|
| 2177 |
315 RPL_ENDOFWHO |
| 2178 |
"<name> :End of WHO list" |
| 2179 |
|
| 2180 |
- The RPL_WHOREPLY and RPL_ENDOFWHO pair are used |
| 2181 |
to answer a WHO message. The RPL_WHOREPLY is only |
| 2182 |
sent if there is an appropriate match to the WHO |
| 2183 |
query. If there is a list of parameters supplied |
| 2184 |
with a WHO message, a RPL_ENDOFWHO MUST be sent |
| 2185 |
after processing each list item with <name> being |
| 2186 |
the item. |
| 2187 |
|
| 2188 |
353 RPL_NAMREPLY |
| 2189 |
"( "=" / "*" / "@" ) <channel> |
| 2190 |
:[ "@" / "+" ] <nick> *( " " [ "@" / "+" ] <nick> ) |
| 2191 |
- "@" is used for secret channels, "*" for private |
| 2192 |
channels, and "=" for others (public channels). |
| 2193 |
|
| 2194 |
366 RPL_ENDOFNAMES |
| 2195 |
"<channel> :End of NAMES list" |
| 2196 |
|
| 2197 |
- To reply to a NAMES message, a reply pair consisting |
| 2198 |
of RPL_NAMREPLY and RPL_ENDOFNAMES is sent by the |
| 2199 |
server back to the client. If there is no channel |
| 2200 |
found as in the query, then only RPL_ENDOFNAMES is |
| 2201 |
|
| 2202 |
returned. The exception to this is when a NAMES |
| 2203 |
message is sent with no parameters and all visible |
| 2204 |
channels and contents are sent back in a series of |
| 2205 |
RPL_NAMEREPLY messages with a RPL_ENDOFNAMES to mark |
| 2206 |
the end. |
| 2207 |
|
| 2208 |
364 RPL_LINKS |
| 2209 |
"<mask> <server> :<hopcount> <server info>" |
| 2210 |
365 RPL_ENDOFLINKS |
| 2211 |
"<mask> :End of LINKS list" |
| 2212 |
|
| 2213 |
- In replying to the LINKS message, a server MUST send |
| 2214 |
replies back using the RPL_LINKS numeric and mark the |
| 2215 |
end of the list using an RPL_ENDOFLINKS reply. |
| 2216 |
|
| 2217 |
367 RPL_BANLIST |
| 2218 |
"<channel> <banmask>" |
| 2219 |
368 RPL_ENDOFBANLIST |
| 2220 |
"<channel> :End of channel ban list" |
| 2221 |
|
| 2222 |
- When listing the active 'bans' for a given channel, |
| 2223 |
a server is required to send the list back using the |
| 2224 |
RPL_BANLIST and RPL_ENDOFBANLIST messages. A separate |
| 2225 |
RPL_BANLIST is sent for each active banmask. After the |
| 2226 |
banmasks have been listed (or if none present) a |
| 2227 |
RPL_ENDOFBANLIST MUST be sent. |
| 2228 |
|
| 2229 |
371 RPL_INFO |
| 2230 |
":<string>" |
| 2231 |
374 RPL_ENDOFINFO |
| 2232 |
":End of INFO list" |
| 2233 |
|
| 2234 |
- A server responding to an INFO message is required to |
| 2235 |
send all its 'info' in a series of RPL_INFO messages |
| 2236 |
with a RPL_ENDOFINFO reply to indicate the end of the |
| 2237 |
replies. |
| 2238 |
|
| 2239 |
375 RPL_MOTDSTART |
| 2240 |
":- <server> Message of the day - " |
| 2241 |
372 RPL_MOTD |
| 2242 |
":- <text>" |
| 2243 |
376 RPL_ENDOFMOTD |
| 2244 |
":End of MOTD command" |
| 2245 |
|
| 2246 |
- When responding to the MOTD message and the MOTD file |
| 2247 |
is found, the file is displayed line by line, with |
| 2248 |
each line no longer than 80 characters, using |
| 2249 |
|
| 2250 |
RPL_MOTD format replies. These MUST be surrounded |
| 2251 |
by a RPL_MOTDSTART (before the RPL_MOTDs) and an |
| 2252 |
RPL_ENDOFMOTD (after). |
| 2253 |
|
| 2254 |
381 RPL_YOUREOPER |
| 2255 |
":You are now an IRC operator" |
| 2256 |
|
| 2257 |
- RPL_YOUREOPER is sent back to a client which has |
| 2258 |
just successfully issued an OPER message and gained |
| 2259 |
operator status. |
| 2260 |
|
| 2261 |
382 RPL_REHASHING |
| 2262 |
"<config file> :Rehashing" |
| 2263 |
|
| 2264 |
- If the REHASH option is used and an operator sends |
| 2265 |
a REHASH message, an RPL_REHASHING is sent back to |
| 2266 |
the operator. |
| 2267 |
|
| 2268 |
383 RPL_YOURESERVICE |
| 2269 |
"You are service <servicename>" |
| 2270 |
|
| 2271 |
- Sent by the server to a service upon successful |
| 2272 |
registration. |
| 2273 |
|
| 2274 |
391 RPL_TIME |
| 2275 |
"<server> :<string showing server's local time>" |
| 2276 |
|
| 2277 |
- When replying to the TIME message, a server MUST send |
| 2278 |
the reply using the RPL_TIME format above. The string |
| 2279 |
showing the time need only contain the correct day and |
| 2280 |
time there. There is no further requirement for the |
| 2281 |
time string. |
| 2282 |
|
| 2283 |
392 RPL_USERSSTART |
| 2284 |
":UserID Terminal Host" |
| 2285 |
393 RPL_USERS |
| 2286 |
":<username> <ttyline> <hostname>" |
| 2287 |
394 RPL_ENDOFUSERS |
| 2288 |
":End of users" |
| 2289 |
395 RPL_NOUSERS |
| 2290 |
":Nobody logged in" |
| 2291 |
|
| 2292 |
- If the USERS message is handled by a server, the |
| 2293 |
replies RPL_USERSTART, RPL_USERS, RPL_ENDOFUSERS and |
| 2294 |
RPL_NOUSERS are used. RPL_USERSSTART MUST be sent |
| 2295 |
first, following by either a sequence of RPL_USERS |
| 2296 |
or a single RPL_NOUSER. Following this is |
| 2297 |
RPL_ENDOFUSERS. |
| 2298 |
|
| 2299 |
200 RPL_TRACELINK |
| 2300 |
"Link <version & debug level> <destination> |
| 2301 |
<next server> V<protocol version> |
| 2302 |
<link uptime in seconds> <backstream sendq> |
| 2303 |
<upstream sendq>" |
| 2304 |
201 RPL_TRACECONNECTING |
| 2305 |
"Try. <class> <server>" |
| 2306 |
202 RPL_TRACEHANDSHAKE |
| 2307 |
"H.S. <class> <server>" |
| 2308 |
203 RPL_TRACEUNKNOWN |
| 2309 |
"???? <class> [<client IP address in dot form>]" |
| 2310 |
204 RPL_TRACEOPERATOR |
| 2311 |
"Oper <class> <nick>" |
| 2312 |
205 RPL_TRACEUSER |
| 2313 |
"User <class> <nick>" |
| 2314 |
206 RPL_TRACESERVER |
| 2315 |
"Serv <class> <int>S <int>C <server> |
| 2316 |
<nick!user|*!*>@<host|server> V<protocol version>" |
| 2317 |
207 RPL_TRACESERVICE |
| 2318 |
"Service <class> <name> <type> <active type>" |
| 2319 |
208 RPL_TRACENEWTYPE |
| 2320 |
"<newtype> 0 <client name>" |
| 2321 |
209 RPL_TRACECLASS |
| 2322 |
"Class <class> <count>" |
| 2323 |
210 RPL_TRACERECONNECT |
| 2324 |
Unused. |
| 2325 |
261 RPL_TRACELOG |
| 2326 |
"File <logfile> <debug level>" |
| 2327 |
262 RPL_TRACEEND |
| 2328 |
"<server name> <version & debug level> :End of TRACE" |
| 2329 |
|
| 2330 |
- The RPL_TRACE* are all returned by the server in |
| 2331 |
response to the TRACE message. How many are |
| 2332 |
returned is dependent on the TRACE message and |
| 2333 |
whether it was sent by an operator or not. There |
| 2334 |
is no predefined order for which occurs first. |
| 2335 |
Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and |
| 2336 |
RPL_TRACEHANDSHAKE are all used for connections |
| 2337 |
which have not been fully established and are either |
| 2338 |
unknown, still attempting to connect or in the |
| 2339 |
process of completing the 'server handshake'. |
| 2340 |
RPL_TRACELINK is sent by any server which handles |
| 2341 |
a TRACE message and has to pass it on to another |
| 2342 |
server. The list of RPL_TRACELINKs sent in |
| 2343 |
response to a TRACE command traversing the IRC |
| 2344 |
network should reflect the actual connectivity of |
| 2345 |
the servers themselves along that path. |
| 2346 |
|
| 2347 |
RPL_TRACENEWTYPE is to be used for any connection |
| 2348 |
which does not fit in the other categories but is |
| 2349 |
being displayed anyway. |
| 2350 |
RPL_TRACEEND is sent to indicate the end of the list. |
| 2351 |
|
| 2352 |
211 RPL_STATSLINKINFO |
| 2353 |
"<linkname> <sendq> <sent messages> |
| 2354 |
<sent Kbytes> <received messages> |
| 2355 |
<received Kbytes> <time open>" |
| 2356 |
|
| 2357 |
- reports statistics on a connection. <linkname> |
| 2358 |
identifies the particular connection, <sendq> is |
| 2359 |
the amount of data that is queued and waiting to be |
| 2360 |
sent <sent messages> the number of messages sent, |
| 2361 |
and <sent Kbytes> the amount of data sent, in |
| 2362 |
Kbytes. <received messages> and <received Kbytes> |
| 2363 |
are the equivalent of <sent messages> and <sent |
| 2364 |
Kbytes> for received data, respectively. <time |
| 2365 |
open> indicates how long ago the connection was |
| 2366 |
opened, in seconds. |
| 2367 |
|
| 2368 |
212 RPL_STATSCOMMANDS |
| 2369 |
"<command> <count> <byte count> <remote count>" |
| 2370 |
|
| 2371 |
- reports statistics on commands usage. |
| 2372 |
|
| 2373 |
219 RPL_ENDOFSTATS |
| 2374 |
"<stats letter> :End of STATS report" |
| 2375 |
|
| 2376 |
242 RPL_STATSUPTIME |
| 2377 |
":Server Up %d days %d:%02d:%02d" |
| 2378 |
|
| 2379 |
- reports the server uptime. |
| 2380 |
|
| 2381 |
243 RPL_STATSOLINE |
| 2382 |
"O <hostmask> * <name>" |
| 2383 |
|
| 2384 |
- reports the allowed hosts from where user may become IRC |
| 2385 |
operators. |
| 2386 |
|
| 2387 |
221 RPL_UMODEIS |
| 2388 |
"<user mode string>" |
| 2389 |
|
| 2390 |
- To answer a query about a client's own mode, |
| 2391 |
RPL_UMODEIS is sent back. |
| 2392 |
|
| 2393 |
234 RPL_SERVLIST |
| 2394 |
"<name> <server> <mask> <type> <hopcount> <info>" |
| 2395 |
|
| 2396 |
235 RPL_SERVLISTEND |
| 2397 |
"<mask> <type> :End of service listing" |
| 2398 |
|
| 2399 |
- When listing services in reply to a SERVLIST message, |
| 2400 |
a server is required to send the list back using the |
| 2401 |
RPL_SERVLIST and RPL_SERVLISTEND messages. A separate |
| 2402 |
RPL_SERVLIST is sent for each service. After the |
| 2403 |
services have been listed (or if none present) a |
| 2404 |
RPL_SERVLISTEND MUST be sent. |
| 2405 |
|
| 2406 |
251 RPL_LUSERCLIENT |
| 2407 |
":There are <integer> users and <integer> |
| 2408 |
services on <integer> servers" |
| 2409 |
252 RPL_LUSEROP |
| 2410 |
"<integer> :operator(s) online" |
| 2411 |
253 RPL_LUSERUNKNOWN |
| 2412 |
"<integer> :unknown connection(s)" |
| 2413 |
254 RPL_LUSERCHANNELS |
| 2414 |
"<integer> :channels formed" |
| 2415 |
255 RPL_LUSERME |
| 2416 |
":I have <integer> clients and <integer> |
| 2417 |
servers" |
| 2418 |
|
| 2419 |
- In processing an LUSERS message, the server |
| 2420 |
sends a set of replies from RPL_LUSERCLIENT, |
| 2421 |
RPL_LUSEROP, RPL_USERUNKNOWN, |
| 2422 |
RPL_LUSERCHANNELS and RPL_LUSERME. When |
| 2423 |
replying, a server MUST send back |
| 2424 |
RPL_LUSERCLIENT and RPL_LUSERME. The other |
| 2425 |
replies are only sent back if a non-zero count |
| 2426 |
is found for them. |
| 2427 |
|
| 2428 |
256 RPL_ADMINME |
| 2429 |
"<server> :Administrative info" |
| 2430 |
257 RPL_ADMINLOC1 |
| 2431 |
":<admin info>" |
| 2432 |
258 RPL_ADMINLOC2 |
| 2433 |
":<admin info>" |
| 2434 |
259 RPL_ADMINEMAIL |
| 2435 |
":<admin info>" |
| 2436 |
|
| 2437 |
- When replying to an ADMIN message, a server |
| 2438 |
is expected to use replies RPL_ADMINME |
| 2439 |
through to RPL_ADMINEMAIL and provide a text |
| 2440 |
message with each. For RPL_ADMINLOC1 a |
| 2441 |
description of what city, state and country |
| 2442 |
the server is in is expected, followed by |
| 2443 |
details of the institution (RPL_ADMINLOC2) |
| 2444 |
|
| 2445 |
and finally the administrative contact for the |
| 2446 |
server (an email address here is REQUIRED) |
| 2447 |
in RPL_ADMINEMAIL. |
| 2448 |
|
| 2449 |
263 RPL_TRYAGAIN |
| 2450 |
"<command> :Please wait a while and try again." |
| 2451 |
|
| 2452 |
- When a server drops a command without processing it, |
| 2453 |
it MUST use the reply RPL_TRYAGAIN to inform the |
| 2454 |
originating client. |
| 2455 |
|
| 2456 |
5.2 Error Replies |
| 2457 |
|
| 2458 |
Error replies are found in the range from 400 to 599. |
| 2459 |
|
| 2460 |
401 ERR_NOSUCHNICK |
| 2461 |
"<nickname> :No such nick/channel" |
| 2462 |
|
| 2463 |
- Used to indicate the nickname parameter supplied to a |
| 2464 |
command is currently unused. |
| 2465 |
|
| 2466 |
402 ERR_NOSUCHSERVER |
| 2467 |
"<server name> :No such server" |
| 2468 |
|
| 2469 |
- Used to indicate the server name given currently |
| 2470 |
does not exist. |
| 2471 |
|
| 2472 |
403 ERR_NOSUCHCHANNEL |
| 2473 |
"<channel name> :No such channel" |
| 2474 |
|
| 2475 |
- Used to indicate the given channel name is invalid. |
| 2476 |
|
| 2477 |
404 ERR_CANNOTSENDTOCHAN |
| 2478 |
"<channel name> :Cannot send to channel" |
| 2479 |
|
| 2480 |
- Sent to a user who is either (a) not on a channel |
| 2481 |
which is mode +n or (b) not a chanop (or mode +v) on |
| 2482 |
a channel which has mode +m set or where the user is |
| 2483 |
banned and is trying to send a PRIVMSG message to |
| 2484 |
that channel. |
| 2485 |
|
| 2486 |
405 ERR_TOOMANYCHANNELS |
| 2487 |
"<channel name> :You have joined too many channels" |
| 2488 |
|
| 2489 |
- Sent to a user when they have joined the maximum |
| 2490 |
number of allowed channels and they try to join |
| 2491 |
another channel. |
| 2492 |
|
| 2493 |
406 ERR_WASNOSUCHNICK |
| 2494 |
"<nickname> :There was no such nickname" |
| 2495 |
|
| 2496 |
- Returned by WHOWAS to indicate there is no history |
| 2497 |
information for that nickname. |
| 2498 |
|
| 2499 |
407 ERR_TOOMANYTARGETS |
| 2500 |
"<target> :<error code> recipients. <abort message>" |
| 2501 |
|
| 2502 |
- Returned to a client which is attempting to send a |
| 2503 |
PRIVMSG/NOTICE using the user@host destination format |
| 2504 |
and for a user@host which has several occurrences. |
| 2505 |
|
| 2506 |
- Returned to a client which trying to send a |
| 2507 |
PRIVMSG/NOTICE to too many recipients. |
| 2508 |
|
| 2509 |
- Returned to a client which is attempting to JOIN a safe |
| 2510 |
channel using the shortname when there are more than one |
| 2511 |
such channel. |
| 2512 |
|
| 2513 |
408 ERR_NOSUCHSERVICE |
| 2514 |
"<service name> :No such service" |
| 2515 |
|
| 2516 |
- Returned to a client which is attempting to send a SQUERY |
| 2517 |
to a service which does not exist. |
| 2518 |
|
| 2519 |
409 ERR_NOORIGIN |
| 2520 |
":No origin specified" |
| 2521 |
|
| 2522 |
- PING or PONG message missing the originator parameter. |
| 2523 |
|
| 2524 |
411 ERR_NORECIPIENT |
| 2525 |
":No recipient given (<command>)" |
| 2526 |
412 ERR_NOTEXTTOSEND |
| 2527 |
":No text to send" |
| 2528 |
413 ERR_NOTOPLEVEL |
| 2529 |
"<mask> :No toplevel domain specified" |
| 2530 |
414 ERR_WILDTOPLEVEL |
| 2531 |
"<mask> :Wildcard in toplevel domain" |
| 2532 |
415 ERR_BADMASK |
| 2533 |
"<mask> :Bad Server/host mask" |
| 2534 |
|
| 2535 |
- 412 - 415 are returned by PRIVMSG to indicate that |
| 2536 |
the message wasn't delivered for some reason. |
| 2537 |
ERR_NOTOPLEVEL and ERR_WILDTOPLEVEL are errors that |
| 2538 |
are returned when an invalid use of |
| 2539 |
"PRIVMSG $<server>" or "PRIVMSG #<host>" is attempted. |
| 2540 |
|
| 2541 |
421 ERR_UNKNOWNCOMMAND |
| 2542 |
"<command> :Unknown command" |
| 2543 |
|
| 2544 |
- Returned to a registered client to indicate that the |
| 2545 |
command sent is unknown by the server. |
| 2546 |
|
| 2547 |
422 ERR_NOMOTD |
| 2548 |
":MOTD File is missing" |
| 2549 |
|
| 2550 |
- Server's MOTD file could not be opened by the server. |
| 2551 |
|
| 2552 |
423 ERR_NOADMININFO |
| 2553 |
"<server> :No administrative info available" |
| 2554 |
|
| 2555 |
- Returned by a server in response to an ADMIN message |
| 2556 |
when there is an error in finding the appropriate |
| 2557 |
information. |
| 2558 |
|
| 2559 |
424 ERR_FILEERROR |
| 2560 |
":File error doing <file op> on <file>" |
| 2561 |
|
| 2562 |
- Generic error message used to report a failed file |
| 2563 |
operation during the processing of a message. |
| 2564 |
|
| 2565 |
431 ERR_NONICKNAMEGIVEN |
| 2566 |
":No nickname given" |
| 2567 |
|
| 2568 |
- Returned when a nickname parameter expected for a |
| 2569 |
command and isn't found. |
| 2570 |
|
| 2571 |
432 ERR_ERRONEUSNICKNAME |
| 2572 |
"<nick> :Erroneous nickname" |
| 2573 |
|
| 2574 |
- Returned after receiving a NICK message which contains |
| 2575 |
characters which do not fall in the defined set. See |
| 2576 |
section 2.3.1 for details on valid nicknames. |
| 2577 |
|
| 2578 |
433 ERR_NICKNAMEINUSE |
| 2579 |
"<nick> :Nickname is already in use" |
| 2580 |
|
| 2581 |
- Returned when a NICK message is processed that results |
| 2582 |
in an attempt to change to a currently existing |
| 2583 |
nickname. |
| 2584 |
|
| 2585 |
436 ERR_NICKCOLLISION |
| 2586 |
"<nick> :Nickname collision KILL from <user>@<host>" |
| 2587 |
|
| 2588 |
- Returned by a server to a client when it detects a |
| 2589 |
nickname collision (registered of a NICK that |
| 2590 |
already exists by another server). |
| 2591 |
|
| 2592 |
437 ERR_UNAVAILRESOURCE |
| 2593 |
"<nick/channel> :Nick/channel is temporarily unavailable" |
| 2594 |
|
| 2595 |
- Returned by a server to a user trying to join a channel |
| 2596 |
currently blocked by the channel delay mechanism. |
| 2597 |
|
| 2598 |
- Returned by a server to a user trying to change nickname |
| 2599 |
when the desired nickname is blocked by the nick delay |
| 2600 |
mechanism. |
| 2601 |
|
| 2602 |
441 ERR_USERNOTINCHANNEL |
| 2603 |
"<nick> <channel> :They aren't on that channel" |
| 2604 |
|
| 2605 |
- Returned by the server to indicate that the target |
| 2606 |
user of the command is not on the given channel. |
| 2607 |
|
| 2608 |
442 ERR_NOTONCHANNEL |
| 2609 |
"<channel> :You're not on that channel" |
| 2610 |
|
| 2611 |
- Returned by the server whenever a client tries to |
| 2612 |
perform a channel affecting command for which the |
| 2613 |
client isn't a member. |
| 2614 |
|
| 2615 |
443 ERR_USERONCHANNEL |
| 2616 |
"<user> <channel> :is already on channel" |
| 2617 |
|
| 2618 |
- Returned when a client tries to invite a user to a |
| 2619 |
channel they are already on. |
| 2620 |
|
| 2621 |
444 ERR_NOLOGIN |
| 2622 |
"<user> :User not logged in" |
| 2623 |
|
| 2624 |
- Returned by the summon after a SUMMON command for a |
| 2625 |
user was unable to be performed since they were not |
| 2626 |
logged in. |
| 2627 |
|
| 2628 |
445 ERR_SUMMONDISABLED |
| 2629 |
":SUMMON has been disabled" |
| 2630 |
|
| 2631 |
- Returned as a response to the SUMMON command. MUST be |
| 2632 |
returned by any server which doesn't implement it. |
| 2633 |
|
| 2634 |
446 ERR_USERSDISABLED |
| 2635 |
":USERS has been disabled" |
| 2636 |
|
| 2637 |
- Returned as a response to the USERS command. MUST be |
| 2638 |
returned by any server which does not implement it. |
| 2639 |
|
| 2640 |
451 ERR_NOTREGISTERED |
| 2641 |
":You have not registered" |
| 2642 |
|
| 2643 |
- Returned by the server to indicate that the client |
| 2644 |
MUST be registered before the server will allow it |
| 2645 |
to be parsed in detail. |
| 2646 |
|
| 2647 |
461 ERR_NEEDMOREPARAMS |
| 2648 |
"<command> :Not enough parameters" |
| 2649 |
|
| 2650 |
- Returned by the server by numerous commands to |
| 2651 |
indicate to the client that it didn't supply enough |
| 2652 |
parameters. |
| 2653 |
|
| 2654 |
462 ERR_ALREADYREGISTRED |
| 2655 |
":Unauthorized command (already registered)" |
| 2656 |
|
| 2657 |
- Returned by the server to any link which tries to |
| 2658 |
change part of the registered details (such as |
| 2659 |
password or user details from second USER message). |
| 2660 |
|
| 2661 |
463 ERR_NOPERMFORHOST |
| 2662 |
":Your host isn't among the privileged" |
| 2663 |
|
| 2664 |
- Returned to a client which attempts to register with |
| 2665 |
a server which does not been setup to allow |
| 2666 |
connections from the host the attempted connection |
| 2667 |
is tried. |
| 2668 |
|
| 2669 |
464 ERR_PASSWDMISMATCH |
| 2670 |
":Password incorrect" |
| 2671 |
|
| 2672 |
- Returned to indicate a failed attempt at registering |
| 2673 |
a connection for which a password was required and |
| 2674 |
was either not given or incorrect. |
| 2675 |
|
| 2676 |
465 ERR_YOUREBANNEDCREEP |
| 2677 |
":You are banned from this server" |
| 2678 |
|
| 2679 |
- Returned after an attempt to connect and register |
| 2680 |
yourself with a server which has been setup to |
| 2681 |
explicitly deny connections to you. |
| 2682 |
|
| 2683 |
466 ERR_YOUWILLBEBANNED |
| 2684 |
|
| 2685 |
- Sent by a server to a user to inform that access to the |
| 2686 |
server will soon be denied. |
| 2687 |
|
| 2688 |
467 ERR_KEYSET |
| 2689 |
"<channel> :Channel key already set" |
| 2690 |
471 ERR_CHANNELISFULL |
| 2691 |
"<channel> :Cannot join channel (+l)" |
| 2692 |
472 ERR_UNKNOWNMODE |
| 2693 |
"<char> :is unknown mode char to me for <channel>" |
| 2694 |
473 ERR_INVITEONLYCHAN |
| 2695 |
"<channel> :Cannot join channel (+i)" |
| 2696 |
474 ERR_BANNEDFROMCHAN |
| 2697 |
"<channel> :Cannot join channel (+b)" |
| 2698 |
475 ERR_BADCHANNELKEY |
| 2699 |
"<channel> :Cannot join channel (+k)" |
| 2700 |
476 ERR_BADCHANMASK |
| 2701 |
"<channel> :Bad Channel Mask" |
| 2702 |
477 ERR_NOCHANMODES |
| 2703 |
"<channel> :Channel doesn't support modes" |
| 2704 |
478 ERR_BANLISTFULL |
| 2705 |
"<channel> <char> :Channel list is full" |
| 2706 |
|
| 2707 |
481 ERR_NOPRIVILEGES |
| 2708 |
":Permission Denied- You're not an IRC operator" |
| 2709 |
|
| 2710 |
- Any command requiring operator privileges to operate |
| 2711 |
MUST return this error to indicate the attempt was |
| 2712 |
unsuccessful. |
| 2713 |
|
| 2714 |
482 ERR_CHANOPRIVSNEEDED |
| 2715 |
"<channel> :You're not channel operator" |
| 2716 |
|
| 2717 |
- Any command requiring 'chanop' privileges (such as |
| 2718 |
MODE messages) MUST return this error if the client |
| 2719 |
making the attempt is not a chanop on the specified |
| 2720 |
channel. |
| 2721 |
|
| 2722 |
483 ERR_CANTKILLSERVER |
| 2723 |
":You can't kill a server!" |
| 2724 |
|
| 2725 |
- Any attempts to use the KILL command on a server |
| 2726 |
are to be refused and this error returned directly |
| 2727 |
to the client. |
| 2728 |
|
| 2729 |
484 ERR_RESTRICTED |
| 2730 |
":Your connection is restricted!" |
| 2731 |
|
| 2732 |
- Sent by the server to a user upon connection to indicate |
| 2733 |
the restricted nature of the connection (user mode "+r"). |
| 2734 |
|
| 2735 |
485 ERR_UNIQOPPRIVSNEEDED |
| 2736 |
":You're not the original channel operator" |
| 2737 |
|
| 2738 |
- Any MODE requiring "channel creator" privileges MUST |
| 2739 |
return this error if the client making the attempt is not |
| 2740 |
a chanop on the specified channel. |
| 2741 |
|
| 2742 |
491 ERR_NOOPERHOST |
| 2743 |
":No O-lines for your host" |
| 2744 |
|
| 2745 |
- If a client sends an OPER message and the server has |
| 2746 |
not been configured to allow connections from the |
| 2747 |
client's host as an operator, this error MUST be |
| 2748 |
returned. |
| 2749 |
|
| 2750 |
501 ERR_UMODEUNKNOWNFLAG |
| 2751 |
":Unknown MODE flag" |
| 2752 |
|
| 2753 |
- Returned by the server to indicate that a MODE |
| 2754 |
message was sent with a nickname parameter and that |
| 2755 |
the a mode flag sent was not recognized. |
| 2756 |
|
| 2757 |
502 ERR_USERSDONTMATCH |
| 2758 |
":Cannot change mode for other users" |
| 2759 |
|
| 2760 |
- Error sent to any user trying to view or change the |
| 2761 |
user mode for a user other than themselves. |
| 2762 |
|
| 2763 |
5.3 Reserved numerics |
| 2764 |
|
| 2765 |
These numerics are not described above since they fall into one of |
| 2766 |
the following categories: |
| 2767 |
|
| 2768 |
1. no longer in use; |
| 2769 |
|
| 2770 |
2. reserved for future planned use; |
| 2771 |
|
| 2772 |
3. in current use but are part of a non-generic 'feature' of |
| 2773 |
the current IRC server. |
| 2774 |
|
| 2775 |
231 RPL_SERVICEINFO 232 RPL_ENDOFSERVICES |
| 2776 |
233 RPL_SERVICE |
| 2777 |
300 RPL_NONE 316 RPL_WHOISCHANOP |
| 2778 |
361 RPL_KILLDONE 362 RPL_CLOSING |
| 2779 |
363 RPL_CLOSEEND 373 RPL_INFOSTART |
| 2780 |
384 RPL_MYPORTIS |
| 2781 |
|
| 2782 |
213 RPL_STATSCLINE 214 RPL_STATSNLINE |
| 2783 |
215 RPL_STATSILINE 216 RPL_STATSKLINE |
| 2784 |
217 RPL_STATSQLINE 218 RPL_STATSYLINE |
| 2785 |
240 RPL_STATSVLINE 241 RPL_STATSLLINE |
| 2786 |
244 RPL_STATSHLINE 244 RPL_STATSSLINE |
| 2787 |
246 RPL_STATSPING 247 RPL_STATSBLINE |
| 2788 |
250 RPL_STATSDLINE |
| 2789 |
|
| 2790 |
492 ERR_NOSERVICEHOST |
| 2791 |
|
| 2792 |
6. Current implementations |
| 2793 |
|
| 2794 |
The IRC software, version 2.10 is the only complete implementation of |
| 2795 |
the IRC protocol (client and server). Because of the small amount of |
| 2796 |
changes in the client protocol since the publication of RFC 1459 |
| 2797 |
[IRC], implementations that follow it are likely to be compliant with |
| 2798 |
this protocol or to require a small amount of changes to reach |
| 2799 |
compliance. |
| 2800 |
|
| 2801 |
7. Current problems |
| 2802 |
|
| 2803 |
There are a number of recognized problems with the IRC Client |
| 2804 |
Protocol, and more generally with the IRC Server Protocol. In order |
| 2805 |
to preserve backward compatibility with old clients, this protocol |
| 2806 |
has almost not evolved since the publication of RFC 1459 [IRC]. |
| 2807 |
|
| 2808 |
7.1 Nicknames |
| 2809 |
|
| 2810 |
The idea of the nickname on IRC is very convenient for users to use |
| 2811 |
when talking to each other outside of a channel, but there is only a |
| 2812 |
finite nickname space and being what they are, it's not uncommon for |
| 2813 |
several people to want to use the same nick. If a nickname is chosen |
| 2814 |
by two people using this protocol, either one will not succeed or |
| 2815 |
both will removed by use of a server KILL (See Section 3.7.1). |
| 2816 |
|
| 2817 |
7.2 Limitation of wildcards |
| 2818 |
|
| 2819 |
There is no way to escape the escape character "\" (%x5C). While |
| 2820 |
this isn't usually a problem, it makes it impossible to form a mask |
| 2821 |
with a backslash character ("\") preceding a wildcard. |
| 2822 |
|
| 2823 |
7.3 Security considerations |
| 2824 |
|
| 2825 |
Security issues related to this protocol are discussed in the "IRC |
| 2826 |
Server Protocol" [IRC-SERVER] as they are mostly an issue for the |
| 2827 |
server side of the connection. |
| 2828 |
|
| 2829 |
8. Current support and availability |
| 2830 |
|
| 2831 |
Mailing lists for IRC related discussion: |
| 2832 |
General discussion: ircd-users@irc.org |
| 2833 |
Protocol development: ircd-dev@irc.org |
| 2834 |
|
| 2835 |
Software implementations: |
| 2836 |
ftp://ftp.irc.org/irc/server |
| 2837 |
ftp://ftp.funet.fi/pub/unix/irc |
| 2838 |
ftp://ftp.irc.org/irc/clients |
| 2839 |
|
| 2840 |
Newsgroup: alt.irc |
| 2841 |
|
| 2842 |
9. Acknowledgements |
| 2843 |
|
| 2844 |
Parts of this document were copied from the RFC 1459 [IRC] which |
| 2845 |
first formally documented the IRC Protocol. It has also benefited |
| 2846 |
from many rounds of review and comments. In particular, the |
| 2847 |
following people have made significant contributions to this |
| 2848 |
document: |
| 2849 |
|
| 2850 |
Matthew Green, Michael Neumayer, Volker Paulsen, Kurt Roeckx, Vesa |
| 2851 |
Ruokonen, Magnus Tjernstrom, Stefan Zehl. |
| 2852 |
|
| 2853 |
10. References |
| 2854 |
|
| 2855 |
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate |
| 2856 |
Requirement Levels", BCP 14, RFC 2119, March 1997. |
| 2857 |
|
| 2858 |
[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax |
| 2859 |
Specifications: ABNF", RFC 2234, November 1997. |
| 2860 |
|
| 2861 |
[HNAME] Braden, R., "Requirements for Internet Hosts -- |
| 2862 |
Application and Support", STD 3, RFC 1123, October 1989. |
| 2863 |
|
| 2864 |
[IRC] Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol", |
| 2865 |
RFC 1459, May 1993. |
| 2866 |
|
| 2867 |
[IRC-ARCH] Kalt, C., "Internet Relay Chat: Architecture", RFC 2810, |
| 2868 |
April 2000. |
| 2869 |
|
| 2870 |
[IRC-CHAN] Kalt, C., "Internet Relay Chat: Channel Management", RFC |
| 2871 |
2811, April 2000. |
| 2872 |
|
| 2873 |
[IRC-SERVER] Kalt, C., "Internet Relay Chat: Server Protocol", RFC |
| 2874 |
2813, April 2000. |
| 2875 |
|
| 2876 |
11. Author's Address |
| 2877 |
|
| 2878 |
Christophe Kalt |
| 2879 |
99 Teaneck Rd, Apt #117 |
| 2880 |
Ridgefield Park, NJ 07660 |
| 2881 |
USA |
| 2882 |
|
| 2883 |
EMail: kalt@stealth.net |
| 2884 |
|
| 2885 |
12. Full Copyright Statement |
| 2886 |
|
| 2887 |
Copyright (C) The Internet Society (2000). All Rights Reserved. |
| 2888 |
|
| 2889 |
This document and translations of it may be copied and furnished to |
| 2890 |
others, and derivative works that comment on or otherwise explain it |
| 2891 |
or assist in its implementation may be prepared, copied, published |
| 2892 |
and distributed, in whole or in part, without restriction of any |
| 2893 |
kind, provided that the above copyright notice and this paragraph are |
| 2894 |
included on all such copies and derivative works. However, this |
| 2895 |
document itself may not be modified in any way, such as by removing |
| 2896 |
the copyright notice or references to the Internet Society or other |
| 2897 |
Internet organizations, except as needed for the purpose of |
| 2898 |
developing Internet standards in which case the procedures for |
| 2899 |
copyrights defined in the Internet Standards process must be |
| 2900 |
followed, or as required to translate it into languages other than |
| 2901 |
English. |
| 2902 |
|
| 2903 |
The limited permissions granted above are perpetual and will not be |
| 2904 |
revoked by the Internet Society or its successors or assigns. |
| 2905 |
|
| 2906 |
This document and the information contained herein is provided on an |
| 2907 |
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING |
| 2908 |
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING |
| 2909 |
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION |
| 2910 |
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF |
| 2911 |
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. |
| 2912 |
|
| 2913 |
Acknowledgement |
| 2914 |
|
| 2915 |
Funding for the RFC Editor function is currently provided by the |
| 2916 |
Internet Society. |