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