]>
Commit | Line | Data |
---|---|---|
1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |
2 | <HTML> | |
3 | <HEAD> | |
4 | <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> | |
5 | <META NAME="GENERATOR" CONTENT="Mozilla/4.07 [en] (X11; I; Linux 2.2.14 i586) [Netscape]"> | |
6 | <TITLE>Undernet P10 Protocol and Interface Specification</TITLE> | |
7 | </HEAD> | |
8 | <BODY> | |
9 | ||
10 | <H2> | |
11 | <A NAME="top"></A><FONT SIZE=+3>Undernet P10 Protocol and Interface Specification</FONT></H2> | |
12 | <I>(As of ircu 2.10.11)</I> | |
13 | <H2> | |
14 | Undernet Coder-com, <TT>coder-com@undernet.org</TT></H2> | |
15 | $Id: p10.html,v 1.6 2002/02/14 00:20:40 ghostwolf Exp $ | |
16 | <P> | |
17 | <HR ALIGN=CENTER WIDTH=100% SIZE=2><I>This document aims to be a practical | |
18 | guide for implementing and maintaining the protocol, not just a reference | |
19 | manual.</I> | |
20 | <P>This document is "work in progress" and being continually updated :) | |
21 | <HR | |
22 | ALIGN=CENTER WIDTH=100% SIZE=2> | |
23 | <BR><FONT SIZE=+2>1. <B><A HREF="#chap1">Introduction</A></B></FONT> | |
24 | <P><FONT SIZE=+2>2. <B><A HREF="#chap2">General concepts and background</A></B></FONT> | |
25 | <BLOCKQUOTE><FONT SIZE=+0>2.1 <A HREF="#chap2.1">Concepts</A>.</FONT> | |
26 | <BR><FONT SIZE=+0>2.2 <A HREF="#chap2.2">Token Table</A>.</FONT></BLOCKQUOTE> | |
27 | ||
28 | <H2> | |
29 | 3. <A HREF="#chap3">Registration and syncronisation</A></H2> | |
30 | ||
31 | <UL> | |
32 | <LI> | |
33 | <FONT SIZE=+0>3.1 <A HREF="#chap3.1">Server registration and authentication</A>.</FONT></LI> | |
34 | ||
35 | <LI> | |
36 | <FONT SIZE=+0>3.2 <A HREF="#chap3.2">Network database resyncronisation</A>.</FONT></LI> | |
37 | ||
38 | <LI> | |
39 | <FONT SIZE=+0>3.3 <A HREF="#chap3.3">Summary</A>.</FONT></LI> | |
40 | </UL> | |
41 | ||
42 | <H2> | |
43 | 4. <A HREF="#chap4">Continous operation</A></H2> | |
44 | ||
45 | <UL> | |
46 | <LI> | |
47 | 4.1 <A HREF="#chap4.1">Channel state operations.</A></LI> | |
48 | ||
49 | <LI> | |
50 | 4.2 <A HREF="#chap4.2">Client state operations.</A></LI> | |
51 | ||
52 | <LI> | |
53 | 4.3 <A HREF="#chap4.3">Channel/Client Messaging.</A></LI> | |
54 | ||
55 | <LI> | |
56 | 4.4 Setting G-Lines.</LI> | |
57 | ||
58 | <LI> | |
59 | 4.5 ...</LI> | |
60 | </UL> | |
61 | ||
62 | <H2> | |
63 | 4. Programmers reference: Function headers</H2> | |
64 | ||
65 | <UL> | |
66 | <LI> | |
67 | <FONT SIZE=+0>4.1 ms_nick</FONT></LI> | |
68 | ||
69 | <LI> | |
70 | <FONT SIZE=+0>4.2 m_burst</FONT></LI> | |
71 | ||
72 | <LI> | |
73 | <FONT SIZE=+0>4.3 ..etc</FONT></LI> | |
74 | </UL> | |
75 | ||
76 | <H2> | |
77 | 5. <A HREF="#chap5">Programmers reference: Client/Server Structures</A></H2> | |
78 | ||
79 | <H2> | |
80 | 6. <A HREF="#chap7">FAQ</A></H2> | |
81 | ||
82 | <H2> | |
83 | 7. Acknowledgements and disclaimer</H2> | |
84 | ||
85 | <H2> | |
86 | 8. <A HREF="#chap8">Update History</A></H2> | |
87 | ||
88 | <BLOCKQUOTE> | |
89 | <LI> | |
90 | <A HREF="#chap8.1">TODO List</A></LI> | |
91 | </BLOCKQUOTE> | |
92 | ||
93 | <CENTER> | |
94 | <HR ALIGN=CENTER WIDTH=100% SIZE=2></CENTER> | |
95 | ||
96 | <P><A NAME="chap1"></A><B><FONT SIZE=+2>1. Introduction</FONT></B> | |
97 | <P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT> | |
98 | <BR> | |
99 | <HR ALIGN=LEFT WIDTH=100% SIZE=2> | |
100 | <P><A NAME="chap2"></A><B><FONT SIZE=+2>2. General concepts and background</FONT></B> | |
101 | <P><A NAME="chap2.1"></A><B><FONT SIZE=+1>2.1 Concepts</FONT></B> | |
102 | <P>The undernet P10 protocol uses a scheme of "Numerics" to uniquenly identify | |
103 | a client or server within the network. Each server has its own unique numeric | |
104 | (0 -> 4095) and each client has its own numeric within that server (0->262,143). | |
105 | <P>The numerics are encoded into a Base64 stream to maintain human readable | |
106 | data flow and reduce the size of the messages. The Base64 character set | |
107 | used in ircu is included below, this defines all valid characters allowed | |
108 | in a Base64 numeric with "A" representing 0 and "]" representing 63. | |
109 | <BLOCKQUOTE> | |
110 | <PRE><TT><FONT COLOR="#00007F">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789[]</FONT></TT></PRE> | |
111 | </BLOCKQUOTE> | |
112 | Server numerics consist of 2 characters, with the minimum, 0, being represented | |
113 | by "AA", and the maximum, 4095, being represented by "]]". Client numerics | |
114 | are 3 characters long, with the minimum, 0, being represented by "AAA", | |
115 | and the maximum, 262,143, being represented by "]]]". The unique identifier | |
116 | of a client on the network consists of a combination of both the server | |
117 | and client numeric in the format SSCCC. | |
118 | <P>As an example, consider a server "irc.undernet.org" which has a numeric | |
119 | of 2, translating to "AC" in Base64. On this server exists a client, whom | |
120 | has been allocated the numeric 63 (which translates to "AA]" in Base64). | |
121 | Therefore, the unique identifier of this client on the network is "ACAA]". | |
122 | From this, we can determine which server the message came from, aswell | |
123 | as the client who sent it. | |
124 | <P>These numerics are used to prefix every message issued on the stream | |
125 | except for the initial "PASS" or "SERVER" message, which are not prefixed. | |
126 | Therefore, every message that can be recieved from a server will consist | |
127 | of the format: | |
128 | <BLOCKQUOTE> | |
129 | <PRE><FONT COLOR="#00007F">[NUMERIC PREFIX] [TOKEN] [DATA]</FONT></PRE> | |
130 | </BLOCKQUOTE> | |
131 | For Example: | |
132 | <BLOCKQUOTE> | |
133 | <PRE><FONT COLOR="#00007F">A[A5j P ABAAA :Foo.</FONT></PRE> | |
134 | </BLOCKQUOTE> | |
135 | <A NAME="chap2.2"></A><B><FONT SIZE=+1>2.2 Token Table</FONT></B> | |
136 | <P>The following table lists all the acceptable messages, along with their | |
137 | relevant "Token", which is used in the server<>server protocol. The | |
138 | aim of tokenisation is to reduce the bandwidth used during network communication | |
139 | by reducing the length of common message identifiers. | |
140 | <BR> | |
141 | <CENTER><TABLE BORDER COLS=2 WIDTH="40%" > | |
142 | <TR> | |
143 | <TD><B>Message</B></TD> | |
144 | ||
145 | <TD><B>Token</B></TD> | |
146 | </TR> | |
147 | ||
148 | <TR> | |
149 | <TD><FONT SIZE=-1>PRIVMSG</FONT></TD> | |
150 | ||
151 | <TD><FONT SIZE=-1>P</FONT></TD> | |
152 | </TR> | |
153 | ||
154 | <TR> | |
155 | <TD><FONT SIZE=-1>WHO</FONT></TD> | |
156 | ||
157 | <TD><FONT SIZE=-1>H</FONT></TD> | |
158 | </TR> | |
159 | ||
160 | <TR> | |
161 | <TD><FONT SIZE=-1>WHOIS</FONT></TD> | |
162 | ||
163 | <TD><FONT SIZE=-1>W</FONT></TD> | |
164 | </TR> | |
165 | ||
166 | <TR> | |
167 | <TD><FONT SIZE=-1>WHOWAS</FONT></TD> | |
168 | ||
169 | <TD><FONT SIZE=-1>X</FONT></TD> | |
170 | </TR> | |
171 | ||
172 | <TR> | |
173 | <TD><FONT SIZE=-1>USER</FONT></TD> | |
174 | ||
175 | <TD><FONT SIZE=-1>USER</FONT></TD> | |
176 | </TR> | |
177 | ||
178 | <TR> | |
179 | <TD><FONT SIZE=-1>NICK</FONT></TD> | |
180 | ||
181 | <TD><FONT SIZE=-1>N</FONT></TD> | |
182 | </TR> | |
183 | ||
184 | <TR> | |
185 | <TD><FONT SIZE=-1>SERVER</FONT></TD> | |
186 | ||
187 | <TD><FONT SIZE=-1>S</FONT></TD> | |
188 | </TR> | |
189 | ||
190 | <TR> | |
191 | <TD><FONT SIZE=-1>LIST</FONT></TD> | |
192 | ||
193 | <TD><FONT SIZE=-1>LIST</FONT></TD> | |
194 | </TR> | |
195 | ||
196 | <TR> | |
197 | <TD><FONT SIZE=-1>TOPIC</FONT></TD> | |
198 | ||
199 | <TD><FONT SIZE=-1>T</FONT></TD> | |
200 | </TR> | |
201 | ||
202 | <TR> | |
203 | <TD><FONT SIZE=-1>INVITE</FONT></TD> | |
204 | ||
205 | <TD><FONT SIZE=-1>I</FONT></TD> | |
206 | </TR> | |
207 | ||
208 | <TR> | |
209 | <TD><FONT SIZE=-1>VERSION</FONT></TD> | |
210 | ||
211 | <TD><FONT SIZE=-1>V</FONT></TD> | |
212 | </TR> | |
213 | ||
214 | <TR> | |
215 | <TD><FONT SIZE=-1>QUIT</FONT></TD> | |
216 | ||
217 | <TD><FONT SIZE=-1>Q</FONT></TD> | |
218 | </TR> | |
219 | ||
220 | <TR> | |
221 | <TD><FONT SIZE=-1>SQUIT</FONT></TD> | |
222 | ||
223 | <TD><FONT SIZE=-1>SQ</FONT></TD> | |
224 | </TR> | |
225 | ||
226 | <TR> | |
227 | <TD><FONT SIZE=-1>KILL</FONT></TD> | |
228 | ||
229 | <TD><FONT SIZE=-1>D</FONT></TD> | |
230 | </TR> | |
231 | ||
232 | <TR> | |
233 | <TD><FONT SIZE=-1>INFO</FONT></TD> | |
234 | ||
235 | <TD><FONT SIZE=-1>F</FONT></TD> | |
236 | </TR> | |
237 | ||
238 | <TR> | |
239 | <TD><FONT SIZE=-1>LINKS</FONT></TD> | |
240 | ||
241 | <TD><FONT SIZE=-1>LI</FONT></TD> | |
242 | </TR> | |
243 | ||
244 | <TR> | |
245 | <TD><FONT SIZE=-1>STATS</FONT></TD> | |
246 | ||
247 | <TD><FONT SIZE=-1>R</FONT></TD> | |
248 | </TR> | |
249 | ||
250 | <TR> | |
251 | <TD><FONT SIZE=-1>HELP</FONT></TD> | |
252 | ||
253 | <TD><FONT SIZE=-1>HELP</FONT></TD> | |
254 | </TR> | |
255 | ||
256 | <TR> | |
257 | <TD><FONT SIZE=-1>ERROR</FONT></TD> | |
258 | ||
259 | <TD><FONT SIZE=-1>Y</FONT></TD> | |
260 | </TR> | |
261 | ||
262 | <TR> | |
263 | <TD><FONT SIZE=-1>AWAY</FONT></TD> | |
264 | ||
265 | <TD><FONT SIZE=-1>A</FONT></TD> | |
266 | </TR> | |
267 | ||
268 | <TR> | |
269 | <TD><FONT SIZE=-1>CONNECT</FONT></TD> | |
270 | ||
271 | <TD><FONT SIZE=-1>CO</FONT></TD> | |
272 | </TR> | |
273 | ||
274 | <TR> | |
275 | <TD><FONT SIZE=-1>MAP</FONT></TD> | |
276 | ||
277 | <TD><FONT SIZE=-1>MAP</FONT></TD> | |
278 | </TR> | |
279 | ||
280 | <TR> | |
281 | <TD><FONT SIZE=-1>PING</FONT></TD> | |
282 | ||
283 | <TD><FONT SIZE=-1>G</FONT></TD> | |
284 | </TR> | |
285 | ||
286 | <TR> | |
287 | <TD><FONT SIZE=-1>PONG</FONT></TD> | |
288 | ||
289 | <TD><FONT SIZE=-1>Z</FONT></TD> | |
290 | </TR> | |
291 | ||
292 | <TR> | |
293 | <TD><FONT SIZE=-1>OPER</FONT></TD> | |
294 | ||
295 | <TD><FONT SIZE=-1>OPER</FONT></TD> | |
296 | </TR> | |
297 | ||
298 | <TR> | |
299 | <TD><FONT SIZE=-1>PASS</FONT></TD> | |
300 | ||
301 | <TD><FONT SIZE=-1>PA</FONT></TD> | |
302 | </TR> | |
303 | ||
304 | <TR> | |
305 | <TD><FONT SIZE=-1>WALLOPS</FONT></TD> | |
306 | ||
307 | <TD><FONT SIZE=-1>WA</FONT></TD> | |
308 | </TR> | |
309 | ||
310 | <TR> | |
311 | <TD><FONT SIZE=-1>DESYNCH</FONT></TD> | |
312 | ||
313 | <TD><FONT SIZE=-1>DS</FONT></TD> | |
314 | </TR> | |
315 | ||
316 | <TR> | |
317 | <TD><FONT SIZE=-1>TIME</FONT></TD> | |
318 | ||
319 | <TD><FONT SIZE=-1>TI</FONT></TD> | |
320 | </TR> | |
321 | ||
322 | <TR> | |
323 | <TD><FONT SIZE=-1>SETTIME</FONT></TD> | |
324 | ||
325 | <TD><FONT SIZE=-1>SE</FONT></TD> | |
326 | </TR> | |
327 | ||
328 | <TR> | |
329 | <TD><FONT SIZE=-1>RPING</FONT></TD> | |
330 | ||
331 | <TD><FONT SIZE=-1>RI</FONT></TD> | |
332 | </TR> | |
333 | ||
334 | <TR> | |
335 | <TD><FONT SIZE=-1>RPONG</FONT></TD> | |
336 | ||
337 | <TD><FONT SIZE=-1>RO</FONT></TD> | |
338 | </TR> | |
339 | ||
340 | <TR> | |
341 | <TD><FONT SIZE=-1>NAMES</FONT></TD> | |
342 | ||
343 | <TD><FONT SIZE=-1>E</FONT></TD> | |
344 | </TR> | |
345 | ||
346 | <TR> | |
347 | <TD><FONT SIZE=-1>ADMIN</FONT></TD> | |
348 | ||
349 | <TD><FONT SIZE=-1>AD</FONT></TD> | |
350 | </TR> | |
351 | ||
352 | <TR> | |
353 | <TD><FONT SIZE=-1>TRACE</FONT></TD> | |
354 | ||
355 | <TD><FONT SIZE=-1>TR</FONT></TD> | |
356 | </TR> | |
357 | ||
358 | <TR> | |
359 | <TD><FONT SIZE=-1>NOTICE</FONT></TD> | |
360 | ||
361 | <TD><FONT SIZE=-1>O</FONT></TD> | |
362 | </TR> | |
363 | ||
364 | <TR> | |
365 | <TD><FONT SIZE=-1>WALLCHOPS</FONT></TD> | |
366 | ||
367 | <TD><FONT SIZE=-1>WC</FONT></TD> | |
368 | </TR> | |
369 | ||
370 | <TR> | |
371 | <TD><FONT SIZE=-1>CPRIVMSG</FONT></TD> | |
372 | ||
373 | <TD><FONT SIZE=-1>CP</FONT></TD> | |
374 | </TR> | |
375 | ||
376 | <TR> | |
377 | <TD><FONT SIZE=-1>CNOTICE</FONT></TD> | |
378 | ||
379 | <TD><FONT SIZE=-1>CN</FONT></TD> | |
380 | </TR> | |
381 | ||
382 | <TR> | |
383 | <TD><FONT SIZE=-1>JOIN</FONT></TD> | |
384 | ||
385 | <TD><FONT SIZE=-1>J</FONT></TD> | |
386 | </TR> | |
387 | ||
388 | <TR> | |
389 | <TD><FONT SIZE=-1>PART</FONT></TD> | |
390 | ||
391 | <TD><FONT SIZE=-1>L</FONT></TD> | |
392 | </TR> | |
393 | ||
394 | <TR> | |
395 | <TD><FONT SIZE=-1>LUSERS</FONT></TD> | |
396 | ||
397 | <TD><FONT SIZE=-1>LU</FONT></TD> | |
398 | </TR> | |
399 | ||
400 | <TR> | |
401 | <TD><FONT SIZE=-1>MOTD</FONT></TD> | |
402 | ||
403 | <TD><FONT SIZE=-1>MO</FONT></TD> | |
404 | </TR> | |
405 | ||
406 | <TR> | |
407 | <TD><FONT SIZE=-1>MODE</FONT></TD> | |
408 | ||
409 | <TD><FONT SIZE=-1>M</FONT></TD> | |
410 | </TR> | |
411 | ||
412 | <TR> | |
413 | <TD><FONT SIZE=-1>KICK</FONT></TD> | |
414 | ||
415 | <TD><FONT SIZE=-1>K</FONT></TD> | |
416 | </TR> | |
417 | ||
418 | <TR> | |
419 | <TD><FONT SIZE=-1>USERHOST</FONT></TD> | |
420 | ||
421 | <TD><FONT SIZE=-1>USERHOST</FONT></TD> | |
422 | </TR> | |
423 | ||
424 | <TR> | |
425 | <TD><FONT SIZE=-1>USERIP</FONT></TD> | |
426 | ||
427 | <TD><FONT SIZE=-1>USERIP</FONT></TD> | |
428 | </TR> | |
429 | ||
430 | <TR> | |
431 | <TD><FONT SIZE=-1>ISON</FONT></TD> | |
432 | ||
433 | <TD><FONT SIZE=-1>ISON</FONT></TD> | |
434 | </TR> | |
435 | ||
436 | <TR> | |
437 | <TD><I><FONT SIZE=-1>SQUERY</FONT></I></TD> | |
438 | ||
439 | <TD><I><FONT SIZE=-1>SQUERY</FONT></I></TD> | |
440 | </TR> | |
441 | ||
442 | <TR> | |
443 | <TD><I><FONT SIZE=-1>SERVLIST</FONT></I></TD> | |
444 | ||
445 | <TD><I><FONT SIZE=-1>SERVLIST</FONT></I></TD> | |
446 | </TR> | |
447 | ||
448 | <TR> | |
449 | <TD><I><FONT SIZE=-1>SERVSET</FONT></I></TD> | |
450 | ||
451 | <TD><I><FONT SIZE=-1>SERVSET</FONT></I></TD> | |
452 | </TR> | |
453 | ||
454 | <TR> | |
455 | <TD><FONT SIZE=-1>REHASH</FONT></TD> | |
456 | ||
457 | <TD><FONT SIZE=-1>REHASH</FONT></TD> | |
458 | </TR> | |
459 | ||
460 | <TR> | |
461 | <TD><FONT SIZE=-1>RESTART</FONT></TD> | |
462 | ||
463 | <TD><FONT SIZE=-1>RESTART</FONT></TD> | |
464 | </TR> | |
465 | ||
466 | <TR> | |
467 | <TD><FONT SIZE=-1>CLOSE</FONT></TD> | |
468 | ||
469 | <TD><FONT SIZE=-1>CLOSE</FONT></TD> | |
470 | </TR> | |
471 | ||
472 | <TR> | |
473 | <TD><FONT SIZE=-1>DIE</FONT></TD> | |
474 | ||
475 | <TD><FONT SIZE=-1>DIE</FONT></TD> | |
476 | </TR> | |
477 | ||
478 | <TR> | |
479 | <TD><FONT SIZE=-1>HASH</FONT></TD> | |
480 | ||
481 | <TD><FONT SIZE=-1>HASH</FONT></TD> | |
482 | </TR> | |
483 | ||
484 | <TR> | |
485 | <TD><FONT SIZE=-1>DNS</FONT></TD> | |
486 | ||
487 | <TD><FONT SIZE=-1>DNS</FONT></TD> | |
488 | </TR> | |
489 | ||
490 | <TR> | |
491 | <TD><FONT SIZE=-1>SILENCE</FONT></TD> | |
492 | ||
493 | <TD><FONT SIZE=-1>U</FONT></TD> | |
494 | </TR> | |
495 | ||
496 | <TR> | |
497 | <TD><FONT SIZE=-1>GLINE</FONT></TD> | |
498 | ||
499 | <TD><FONT SIZE=-1>GL</FONT></TD> | |
500 | </TR> | |
501 | ||
502 | <TR> | |
503 | <TD><FONT SIZE=-1>BURST</FONT></TD> | |
504 | ||
505 | <TD><FONT SIZE=-1>B</FONT></TD> | |
506 | </TR> | |
507 | ||
508 | <TR> | |
509 | <TD><FONT SIZE=-1>CREATE</FONT></TD> | |
510 | ||
511 | <TD><FONT SIZE=-1>C</FONT></TD> | |
512 | </TR> | |
513 | ||
514 | <TR> | |
515 | <TD><FONT SIZE=-1>DESTRUCT</FONT></TD> | |
516 | ||
517 | <TD><FONT SIZE=-1>DE</FONT></TD> | |
518 | </TR> | |
519 | ||
520 | <TR> | |
521 | <TD><FONT SIZE=-1>END_OF_BURST</FONT></TD> | |
522 | ||
523 | <TD><FONT SIZE=-1>EB</FONT></TD> | |
524 | </TR> | |
525 | ||
526 | <TR> | |
527 | <TD><FONT SIZE=-1>END_OF_BURST_ACK</FONT></TD> | |
528 | ||
529 | <TD><FONT SIZE=-1>EA</FONT></TD> | |
530 | </TR> | |
531 | ||
532 | <TR> | |
533 | <TD><FONT SIZE=-1>PROTO</FONT></TD> | |
534 | ||
535 | <TD><FONT SIZE=-1>PROTO</FONT></TD> | |
536 | </TR> | |
537 | ||
538 | <TR> | |
539 | <TD><FONT SIZE=-1>JUPE</FONT></TD> | |
540 | ||
541 | <TD><FONT SIZE=-1>JU</FONT></TD> | |
542 | </TR> | |
543 | ||
544 | <TR> | |
545 | <TD><FONT SIZE=-1>OPMODE</FONT></TD> | |
546 | ||
547 | <TD><FONT SIZE=-1>OM</FONT></TD> | |
548 | </TR> | |
549 | ||
550 | <TR> | |
551 | <TD><FONT SIZE=-1>CLEARMODE</FONT></TD> | |
552 | ||
553 | <TD><FONT SIZE=-1>CM</FONT></TD> | |
554 | </TR> | |
555 | ||
556 | <TR> | |
557 | <TD><FONT SIZE=-1>ACCOUNT</FONT></TD> | |
558 | ||
559 | <TD><FONT SIZE=-1>AC</FONT></TD> | |
560 | </TR> | |
561 | </TABLE></CENTER> | |
562 | <FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT> | |
563 | <BR> | |
564 | <HR ALIGN=LEFT WIDTH=100% SIZE=2> | |
565 | <P><A NAME="chap3"></A><B><FONT SIZE=+2>3. Registration and syncronisation</FONT></B> | |
566 | <P><A NAME="chap3.1"></A><B><FONT SIZE=+1>3.1 Server registration and authentication</FONT></B> | |
567 | <P>After a TCP connection has been established, the server initally introduces | |
568 | itself via a "PASS" message as follows: | |
569 | <BLOCKQUOTE> | |
570 | <PRE><FONT COLOR="#00007F">PASS :[PASSWORD]</FONT></PRE> | |
571 | </BLOCKQUOTE> | |
572 | "PASSWORD" is simply compared with the password present in the destination | |
573 | servers config file, and is used to confirm credentials after the "SERVER" | |
574 | message has been recieved, as follows: | |
575 | <BLOCKQUOTE> | |
576 | <PRE><TT><FONT COLOR="#00007F">SERVER [SERVERNAME] [HOPCOUNT] [START TIME] [LINK TIME] [PROTOCOL] [NUMERIC/MAXCONN] :[DESCRIPTION]</FONT></TT></PRE> | |
577 | </BLOCKQUOTE> | |
578 | For Example: | |
579 | <BLOCKQUOTE> | |
580 | <PRE><B>1 2 3 4 5 6 7 8 | |
581 | </B>SERVER irc.undernet.org 1 933022556 947908144 J10 AA]]] :[127.0.0.1] A Undernet Server.</PRE> | |
582 | </BLOCKQUOTE> | |
583 | <I>Notes:</I> | |
584 | <OL> | |
585 | <LI> | |
586 | The SERVER message, indicating this connection wishes to introduce a new | |
587 | server to the network.</LI> | |
588 | ||
589 | <LI> | |
590 | The name of the server you are introducing, a valid server name consists | |
591 | of [..defn..].</LI> | |
592 | ||
593 | <LI> | |
594 | The hop count of the server you are introducing, this is always 1 | |
595 | when you are introducing yourself.</LI> | |
596 | ||
597 | <LI> | |
598 | The epoch timestamp specifying when the ircd was started.</LI> | |
599 | ||
600 | <LI> | |
601 | The epoch timestamp specifying the time the server initiated the | |
602 | link to the network.</LI> | |
603 | ||
604 | <LI> | |
605 | The Protocol identifier of this server.</LI> | |
606 | ||
607 | <OL> | |
608 | <LI> | |
609 | This token informs the network which protocol it is compliant with, eg: | |
610 | If it is a P10 compliant server, then the token will be "P10".</LI> | |
611 | ||
612 | <LI> | |
613 | If the server being introduced has not yet successfully synced its | |
614 | database with the network (Completed its net.burst - see 3.2), then the | |
615 | Protocol token should be prefixed with a J, instead of a P (Eg: J10) to | |
616 | indicate it is currently still <B>j</B>oining the network.</LI> | |
617 | ||
618 | <LI> | |
619 | The protocol token should always be JXX when the server is introducing | |
620 | <B>itself</B>.</LI> | |
621 | </OL> | |
622 | ||
623 | <LI> | |
624 | The numeric, and maximum connections identifier for this server.</LI> | |
625 | ||
626 | <OL> | |
627 | <LI> | |
628 | This token is formatted exactly the same as a client numeric is formatted. | |
629 | The first 2 characters identify the server's numeric, whilst in this situation, | |
630 | the final 3 characters define the maximum number of clients that this server | |
631 | can hold (and more importantly, the maximum number of numerics it will | |
632 | generate). This is always one less than a power of two, because the server | |
633 | uses this as a bitmask. A server can give out a higher numeric than this, | |
634 | however it will be "anded" with this number to find it's entry slot. The | |
635 | reason for this is so a server which is near the maximum number of clients | |
636 | can give out more numerics than it's using to prevent a new client getting a | |
637 | numeric that was used only seconds ago and maybe get messages destined to | |
638 | the old user.</LI> | |
639 | ||
640 | <LI> | |
641 | The example "AA]]]" shows that this is a server with numeric 0, which | |
642 | will generate client numerics up to 262,143.</LI> | |
643 | </OL> | |
644 | ||
645 | <LI> | |
646 | This final parameter simply consists of a textual description of the server | |
647 | prefixed by a colon. This is displayed in a clients WHOIS line, aswell | |
648 | as in the LINKS reply. By convention, if this is a leaf server it contains | |
649 | the servers IP in square brackets at the beginning of the string,</LI> | |
650 | </OL> | |
651 | <A NAME="chap3.2"></A><B><FONT SIZE=+1>3.2 Network Database resyncronisation</FONT></B> | |
652 | <P>After the connection has been established and verified, the next step | |
653 | is to syncronise the database of client/server/channel information between | |
654 | the two servers. | |
655 | <BLOCKQUOTE><B>3.2.1 - SERVER Messages</B></BLOCKQUOTE> | |
656 | ||
657 | <BLOCKQUOTE>Server details are transmitted via "SERVER" messages similar | |
658 | to the initial introduction message, with the following format:</BLOCKQUOTE> | |
659 | ||
660 | <BLOCKQUOTE> | |
661 | <BLOCKQUOTE><TT><FONT COLOR="#00007F">[OWNING SERVER PREFIX] S [SERVERNAME] | |
662 | [HOPCOUNT] [START TIME] [LINK TIME] [PROTOCOL] [NUMERIC/MAXCONN] 0 :[DESCRIPTION]</FONT></TT></BLOCKQUOTE> | |
663 | <FONT COLOR="#000000">The syntax of this message is almost identical to | |
664 | the originally recieved server message, with the only exception being that | |
665 | the message is numeric prefixed, to indicate which server sent this message | |
666 | (and also therefore, which hub this new server is linked too). There is | |
667 | also a fixed "0" present before the Description field, this is a placeholder | |
668 | for future use and currently unused. [Isomer: Question, what IS this | |
669 | reserved for?] </FONT> | |
670 | <P><B>3.2.2 - NICK Messages</B></BLOCKQUOTE> | |
671 | ||
672 | <BLOCKQUOTE>Client information is transmitted via "NICK" messages, of the | |
673 | following format:</BLOCKQUOTE> | |
674 | ||
675 | <BLOCKQUOTE> | |
676 | <BLOCKQUOTE> | |
677 | <PRE><TT><FONT COLOR="#00007F">[NUMERIC PREFIX] N [NICK] [HOPCOUNT] [TIMESTAMP] [USERNAME] [HOST] <+modes> [BASE64 IP] [NUMERIC] :[USERINFO]</FONT></TT></PRE> | |
678 | </BLOCKQUOTE> | |
679 | <FONT COLOR="#00007F">For Example:</FONT> | |
680 | <BLOCKQUOTE><TT><FONT COLOR="#000000">1 2 3 | |
681 | 4 5 6 | |
682 | 7 8 | |
683 | 9 10 11</FONT></TT> | |
684 | <BR><TT><FONT COLOR="#000000">AF N Client1 1 947957573 User userhost.net | |
685 | +oiwg DAqAoB AFAAA :Generic Client.</FONT></TT></BLOCKQUOTE> | |
686 | <I>Notes:</I> | |
687 | <OL> | |
688 | <LI> | |
689 | The numeric of the server sending this message. (And hence, owning this | |
690 | client).</LI> | |
691 | ||
692 | <LI> | |
693 | The "NICK" token.</LI> | |
694 | ||
695 | <LI> | |
696 | The nickname of this client, currently max 9 chars.</LI> | |
697 | ||
698 | <LI> | |
699 | The "Hopcount" of this client, Ie: how many servers away it is on.</LI> | |
700 | ||
701 | <LI> | |
702 | The epoch timestamp indicating when the user was created.</LI> | |
703 | ||
704 | <LI> | |
705 | The "User" part of the user@host mask.</LI> | |
706 | ||
707 | <LI> | |
708 | the "Host" part of the user@host mask.</LI> | |
709 | ||
710 | <LI> | |
711 | [<B>Optional</B>]: User modes. If present, this is always +<user modes | |
712 | for this client>. Note that the special +r usermode is followed by the | |
713 | client's account name; see the documentation for ACCOUNT.</LI> | |
714 | ||
715 | <LI> | |
716 | The real IP address of this client, a Base64 encoded 32bit int.</LI> | |
717 | ||
718 | <LI> | |
719 | This client's numeric, in SSCCC format.</LI> | |
720 | ||
721 | <LI> | |
722 | Free format user info line.</LI> | |
723 | ||
724 | <BR> </OL> | |
725 | </BLOCKQUOTE> | |
726 | ||
727 | <BLOCKQUOTE><B>3.2.3 - BURST Messages</B></BLOCKQUOTE> | |
728 | ||
729 | <BLOCKQUOTE>Channel details and membership information is synchronised | |
730 | in one (or more) BURST messages for each channel that exists, formatted | |
731 | as follows:</BLOCKQUOTE> | |
732 | ||
733 | <BLOCKQUOTE> | |
734 | <BLOCKQUOTE> | |
735 | <PRE><TT><FONT COLOR="#00007F">[NUMERIC PREFIX] B [CHANNEL] [CREATION TIMESTAMP] <+MODES> <ARG1> <ARG2> [MEMBER LIST] <:%BANS></FONT></TT></PRE> | |
736 | </BLOCKQUOTE> | |
737 | </BLOCKQUOTE> | |
738 | ||
739 | <BLOCKQUOTE>For Example:</BLOCKQUOTE> | |
740 | ||
741 | <BLOCKQUOTE> | |
742 | <BLOCKQUOTE> | |
743 | <PRE>1 2 3 4 5 6 7 8 9 | |
744 | AZ B #coder-com 949217470 +tinkl key 56 AAAAA,AAAAB,AAAAC,ABAAA,ABAAB,ABAAC,ACAAA :%*!*@*.net</PRE> | |
745 | </BLOCKQUOTE> | |
746 | </BLOCKQUOTE> | |
747 | ||
748 | <BLOCKQUOTE><I>Notes:</I></BLOCKQUOTE> | |
749 | ||
750 | <OL> | |
751 | <LI> | |
752 | The numeric of the server sending this message.</LI> | |
753 | ||
754 | <LI> | |
755 | The "BURST" token.</LI> | |
756 | ||
757 | <LI> | |
758 | The name of the channel to which this data belongs. Currently #Channel | |
759 | and +Channel names can be sent in a BURST message, &Channels are not | |
760 | because by definition they are local to the server.</LI> | |
761 | ||
762 | <LI> | |
763 | The epoch timestamp indicating when the channel was created.</LI> | |
764 | ||
765 | <LI> | |
766 | [<B>Optional</B>]: Channel Modes.</LI> | |
767 | ||
768 | <OL> | |
769 | <LI> | |
770 | The channel may have a number of modes set, aswell as relevant mode arguments | |
771 | in the following 2 parameters.</LI> | |
772 | </OL> | |
773 | ||
774 | <LI> | |
775 | [<B>Optional</B>]: Channel Key, this parameter is present if the channel | |
776 | modes contain a "k" mode.</LI> | |
777 | ||
778 | <LI> | |
779 | [<B>Optional</B>]: Channel Limit, this parameter is present if the channel | |
780 | modes contain a "l" mode.</LI> | |
781 | ||
782 | <LI> | |
783 | A <I>comma</I> seperated list of client numerics, with the following | |
784 | specific formatting rules to indicate +o, +v and +ov channel members.</LI> | |
785 | ||
786 | <OL> | |
787 | <LI> | |
788 | Numerics can have the following symbols appended on them; "<B>:ov</B>", | |
789 | "<B>:v</B>" or "<B>:o</B>". These indicate that this numeric is either | |
790 | Opped (<B>:o</B>), Voiced (<B>:v</B>) or both (<B>:ov</B>). This state | |
791 | applies to the numeric it is attached too, and all subsequent numerics | |
792 | until another state is encountered. <I>For Example:</I></LI> | |
793 | ||
794 | <LI> | |
795 | AAABA:ov, AAABB:o,AAABC,AAABD,AAABE:v,AAABZ</LI> | |
796 | ||
797 | <BR>Here, AAABA is both opped, and voiced, AAABB, AAABC and AAABD are opped | |
798 | leaving AAABE and AAABZ voiced. | |
799 | <LI> | |
800 | The first numeric of the member list will always contain a state | |
801 | symbol.</LI> | |
802 | </OL> | |
803 | ||
804 | <LI> | |
805 | A <I>space</I> seperated list of bans present in the channel. The start | |
806 | of the ban stream is indicated by a ":%", everything following the ":%" | |
807 | is the ban list.</LI> | |
808 | ||
809 | <BR><I>For Example:</I> | |
810 | <BR>:%*!*@*.foobar.net another!ban@*.com *!*fred@a.host.co.uk | |
811 | <BR>Would add the following bans to the channel: | |
812 | <P>*!*@*.foobar.net | |
813 | <BR>another!ban@*.com | |
814 | <BR>*!*fred@a.host.co.uk</OL> | |
815 | ||
816 | <BLOCKQUOTE>If the length of a BURST message exceeds the maximum lenght | |
817 | of a line (512 characters) then the remaining channel members/bans are | |
818 | sent in subsequent BURST lines. The subsequent burst lines are <B>only</B> | |
819 | used to add additional members to the channel, and if neccessary, channel | |
820 | bans. There will be no "Mode" parameters present. A sample additional burst | |
821 | line would be:</BLOCKQUOTE> | |
822 | ||
823 | <BLOCKQUOTE> | |
824 | <BLOCKQUOTE> | |
825 | <PRE>AZ BURST #coder-com 949217470 ACAAB:o,ACAAD :%*!*another@*.ban.com</PRE> | |
826 | </BLOCKQUOTE> | |
827 | </BLOCKQUOTE> | |
828 | ||
829 | <BLOCKQUOTE>Which adds two more opped members and a ban to the channel.</BLOCKQUOTE> | |
830 | ||
831 | <BLOCKQUOTE><B>3.2.4 - JUPE Messages</B></BLOCKQUOTE> | |
832 | ||
833 | <BLOCKQUOTE>Any currently unexpired JUPEs are transmitted via "JUPE" messages | |
834 | with the following format:</BLOCKQUOTE> | |
835 | ||
836 | <BLOCKQUOTE> | |
837 | <BLOCKQUOTE><TT><FONT COLOR="#00007F">[NUMERIC PREFIX] JU * (+|-)[SERVER | |
838 | NAME] [LIFETIME] [LAST MOD] :[REASON]</FONT></TT></BLOCKQUOTE> | |
839 | For example:</BLOCKQUOTE> | |
840 | ||
841 | <BLOCKQUOTE> | |
842 | <BLOCKQUOTE><TT>1 2 3 4 | |
843 | 5 6 | |
844 | 7</TT> | |
845 | <BR><TT><FONT COLOR="#000000">AZ JU * +juped.undernet.org 000003593 955419707 | |
846 | :Juped Server</FONT></TT></BLOCKQUOTE> | |
847 | <I>Notes:</I></BLOCKQUOTE> | |
848 | ||
849 | <OL> | |
850 | <LI> | |
851 | The numeric of the server sending this message.</LI> | |
852 | ||
853 | <LI> | |
854 | The "JUPE" token.</LI> | |
855 | ||
856 | <LI> | |
857 | The target that should apply this JUPE (always "*" during bursts).</LI> | |
858 | ||
859 | <LI> | |
860 | The name of the server to JUPE, prefixed with a "+" if the JUPE is active, | |
861 | or with a "-" if it is not.</LI> | |
862 | ||
863 | <LI> | |
864 | The remaining absolute lifetime of the JUPE, expressed in seconds.</LI> | |
865 | ||
866 | <LI> | |
867 | The last time the JUPE was modified.</LI> | |
868 | ||
869 | <LI> | |
870 | The reason the JUPE was applied.</LI> | |
871 | </OL> | |
872 | <A NAME="chap3.3"></A><B><FONT SIZE=+1>3.3 Summary</FONT></B> | |
873 | <P>The following table summarises the sequence of events that occur when | |
874 | a server connects to another server. S1 is our server, and S2 is a HUB | |
875 | on the target network. | |
876 | <P>S1: Sends Password. | |
877 | <BR>S1: Sends initial SERVER message. | |
878 | <P><I>S2 Confirms S1 has the correct credentials, and if so, proceeds. | |
879 | If not, S1 is squit with a relevant reason.</I> | |
880 | <P>S2: Sends Password. | |
881 | <BR>S2: Sends initial SERVER message. | |
882 | <P><I>S1 Confirms S2 has the correct credentials, and if so, proceeds. | |
883 | If not, S2 is squit with a relevant reason.</I> | |
884 | <P><B><I>The follow occur asynchronously, however they have been shown | |
885 | seperately below for simplicity.</I></B> | |
886 | <P>S1: Sends all the servers it is aware of as a stream of SERVER messages. | |
887 | <BR>S1: Sends all the clients it is aware of as a stream of NICK messages. | |
888 | <BR>S1: Sends the database of channel states on the network, as a stream | |
889 | of BURST messages. | |
890 | <BR>S1: Sends all the jupes it is aware of as a stream of JUPE messages. | |
891 | <BR>S1: Sends a END_OF_BURST token (EB) to indicate it has finished sending. | |
892 | <P>S2: Sends all the servers it is aware of as a stream of SERVER messages. | |
893 | <BR>S2: Sends all the clients it is aware of as a stream of NICK messages. | |
894 | <BR>S2: Sends the database of channel states on the network, as a stream | |
895 | of BURST messages. | |
896 | <BR>S2: Sends all the jupes it is aware of as a stream of JUPE messages. | |
897 | <BR>S2: Sends a END_OF_BURST token (EB) to indicate it has finished sending. | |
898 | <P>S2: Sends an EOB_ACK token (EA) to indicate it has succesfully recieved | |
899 | the END_OF_BURST from S1 | |
900 | <BR>S1: Sends an EOB_ACK token (EA) to indicate it has succesfully recieved | |
901 | the END_OF_BURST from S2 | |
902 | <P><I>Example Session:</I> | |
903 | <PRE><FONT COLOR="#00007F">[WRITE]: PASS :54321 | |
904 | [WRITE]: SERVER irc.undernet.org 1 947957852 947957852 J10 AB]]] :Undernet Client Server. | |
905 | [WRITE]: AB N MrFoo 1 947957852 ~me myhost.foobar.net +diksw DAqAoB ABAAA :Mr Foo (foo@bar.com). | |
906 | [WRITE]: AB B #mychannel 946101324 ABAAA:o | |
907 | [WRITE]: AB EB | |
908 | [ READ]: PASS :54321 | |
909 | [ READ]: SERVER server1.undernet.org 1 947901540 947958150 J10 AFAD] :A Generic Server. | |
910 | [ READ]: AF S server2.undernet.org 2 0 947957585 P10 AZAD] 0 :[192.168.10.3] A Generic Server. | |
911 | [ READ]: AZ S server3.undernet.org 3 0 947957607 P10 AIAD] 0 :[192.168.10.5] A Generic Server. | |
912 | [ READ]: AF N Client1 1 947957573 Ident userhost.net +oiwg DAqAoB AFAAA :Generic Client. | |
913 | [ READ]: AZ N Client2 2 947957719 Ident userhost.net +iwg DAqAoB AZAAA :Generic Client. | |
914 | [ READ]: AI N Client3 3 947957742 Ident userhost.net +iwg DAqAoB AIAAA :Generic Client. | |
915 | [ READ]: AI N Client4 3 947958121 Ident userhost.net +iwg DAqAoB AIAAB :Generic Client. | |
916 | [ READ]: AF B #foobar 947957734 +tink akey AIAAB,AIAAA:v,AZAAA:o :%*!*another@*.ban.com *!*foo@bar.net | |
917 | [ READ]: AF B #coder-com 947957727 AIAAB,AZAAA:o | |
918 | [ READ]: AF B #another 946101321 AFAAA | |
919 | [ READ]: AF JU * +juped.undernet.org 3600 947958100 :Broken, please fix | |
920 | [ READ]: AF EB | |
921 | [WRITE]: AB EA | |
922 | [ READ]: AF EA</FONT></PRE> | |
923 | <FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT> | |
924 | <BR> | |
925 | <HR WIDTH="100%"> | |
926 | <BR><A NAME="chap4"></A><B><FONT SIZE=+2>4. Continuous Operation</FONT></B> | |
927 | <P>This chapter provides details of the messages that can be sent after | |
928 | successfully linking to a network, and synchronising the channel/user database. | |
929 | <P><A NAME="chap4.1"></A><B><FONT SIZE=+1>4.1 Channel state operations</FONT></B> | |
930 | <P>There are a number of messages that can modify the state of a channel, | |
931 | these are: | |
932 | <OL><B>4.1.1 - MODE</B> | |
933 | <P>The MODE message can modify channel modes and bans, and also give or | |
934 | take operator/voice status from channel members. | |
935 | <OL> | |
936 | <BR><TT><FONT COLOR="#00007F">[NUMERIC PREFIX] M [CHANNEL] (+|-)[MODESTRING] | |
937 | <MODESTRING PARAMETERS></FONT></TT></OL> | |
938 | ||
939 | <P><BR>For Example: | |
940 | <OL> | |
941 | <BR><TT>1 2 3 | |
942 | 4 5</TT> | |
943 | <BR><TT>AZAAA M #coder-com +stinlko 500 TestKey BAC</TT></OL> | |
944 | <I></I> | |
945 | <P><BR><I>Notes:</I> | |
946 | <BR> | |
947 | <OL> | |
948 | <LI> | |
949 | The numeric of the user issuing this MODE command. It can be assumed this | |
950 | user is opped on the target channel.</LI> | |
951 | ||
952 | <LI> | |
953 | The "MODE" token.</LI> | |
954 | ||
955 | <LI> | |
956 | The target channel.</LI> | |
957 | ||
958 | <LI> | |
959 | The "Mode string".</LI> | |
960 | ||
961 | <OL> | |
962 | <LI> | |
963 | This consists of up to 6 '+' or '-' (add or remove) prefixed channel modes. | |
964 | (If no '+' or '-' are specified, a '+' is assumed unless a '-' has been | |
965 | encountered previously in the mode string). For example, '+s+t+n-l-io' | |
966 | is a valid mode string, as is '+stnmov'.</LI> | |
967 | ||
968 | <BR> | |
969 | <LI> | |
970 | Valid Mode modes are:</LI> | |
971 | </OL> | |
972 | </OL> | |
973 | ||
974 | <OL> | |
975 | <OL> | |
976 | <TABLE BORDER COLS=3 WIDTH="85%" NOSAVE > | |
977 | <TR NOSAVE> | |
978 | <TD NOSAVE><B>Token</B></TD> | |
979 | ||
980 | <TD><B>Function</B></TD> | |
981 | ||
982 | <TD><B>Parameters</B></TD> | |
983 | </TR> | |
984 | ||
985 | <TR NOSAVE> | |
986 | <TD NOSAVE>p</TD> | |
987 | ||
988 | <TD>Sets/Unsets 'Private' Flag.</TD> | |
989 | ||
990 | <TD>None.</TD> | |
991 | </TR> | |
992 | ||
993 | <TR> | |
994 | <TD>s</TD> | |
995 | ||
996 | <TD>Sets/Unsets 'Secret' Flag.</TD> | |
997 | ||
998 | <TD>None.</TD> | |
999 | </TR> | |
1000 | ||
1001 | <TR> | |
1002 | <TD>m</TD> | |
1003 | ||
1004 | <TD>Sets/Unsets 'Moderated' Flag.</TD> | |
1005 | ||
1006 | <TD>None.</TD> | |
1007 | </TR> | |
1008 | ||
1009 | <TR> | |
1010 | <TD>n</TD> | |
1011 | ||
1012 | <TD>Sets/Unsets 'External Messages' Flag.</TD> | |
1013 | ||
1014 | <TD>None.</TD> | |
1015 | </TR> | |
1016 | ||
1017 | <TR> | |
1018 | <TD>t</TD> | |
1019 | ||
1020 | <TD>Sets/Unsets 'Topic Limit' Flag.</TD> | |
1021 | ||
1022 | <TD>None.</TD> | |
1023 | </TR> | |
1024 | ||
1025 | <TR> | |
1026 | <TD>i</TD> | |
1027 | ||
1028 | <TD>Sets/Unsets 'Invite only' Flag.</TD> | |
1029 | ||
1030 | <TD>None.</TD> | |
1031 | </TR> | |
1032 | ||
1033 | <TR> | |
1034 | <TD>l</TD> | |
1035 | ||
1036 | <TD>Sets/Unsets 'Channel Limit' Flag.</TD> | |
1037 | ||
1038 | <TD>The channel limit.</TD> | |
1039 | </TR> | |
1040 | ||
1041 | <TR> | |
1042 | <TD>k</TD> | |
1043 | ||
1044 | <TD>Sets/Unsets 'Channel Key' Flag.</TD> | |
1045 | ||
1046 | <TD>The channel keyword (Password).</TD> | |
1047 | </TR> | |
1048 | ||
1049 | <TR> | |
1050 | <TD>o</TD> | |
1051 | ||
1052 | <TD>Ops and Deops users.</TD> | |
1053 | ||
1054 | <TD>Numeric of user to be opped.</TD> | |
1055 | </TR> | |
1056 | ||
1057 | <TR> | |
1058 | <TD>v</TD> | |
1059 | ||
1060 | <TD>Voice</TD> | |
1061 | ||
1062 | <TD>Numeric of user to be voiced.</TD> | |
1063 | </TR> | |
1064 | ||
1065 | <TR> | |
1066 | <TD>b</TD> | |
1067 | ||
1068 | <TD>Ban</TD> | |
1069 | ||
1070 | <TD>Ban string.</TD> | |
1071 | </TR> | |
1072 | </TABLE> | |
1073 | </OL> | |
1074 | </OL> | |
1075 | ||
1076 | <OL> | |
1077 | <LI> | |
1078 | The "Mode string Parameters".</LI> | |
1079 | ||
1080 | <OL> | |
1081 | <LI> | |
1082 | This is a matching list of parameters to the modes supplied in the "Modestring".</LI> | |
1083 | ||
1084 | <BR><I>For Example:</I> | |
1085 | <BR>If the Modestring is "+stnlo", a typical parameter string would be | |
1086 | "500 AZAA". The first 3 modes, 's', 't' and 'n' do not require parameters, | |
1087 | so non are present. The following two, 'l' and 'o' both require parameters, | |
1088 | so they are 500 and AZAAA respectively (This sets the channel limit to | |
1089 | 500 users, and ops the numeric AZAAA).</OL> | |
1090 | </OL> | |
1091 | ||
1092 | <P><BR>N.B: The "MODE" message is also used to modify a client's user modes, | |
1093 | not just channel modes. See <A HREF="#chap4.2">section 4.2</A> for details.</OL> | |
1094 | ||
1095 | <OL><B>4.1.2 - OPMODE</B> | |
1096 | <P>The OPMODE message is identical in syntax to the MODE message, however | |
1097 | it will only ever have an operator as the source. It is likely that the | |
1098 | source of this mode will not have ops in the target channel, but it should | |
1099 | succeed never the less. | |
1100 | <P><B>4.1.3 - JOIN</B> | |
1101 | <P><B>4.1.4 - PART</B> | |
1102 | <P><B>4.1.5 - KICK</B> | |
1103 | <P><B>4.1.6 - TOPIC</B> | |
1104 | <P><B>4.1.7 - CLEARMODE</B> | |
1105 | <BR> | |
1106 | <OL><TT>AZAAA CM #coder-com ovpsmikbl</TT></OL> | |
1107 | </OL> | |
1108 | <A NAME="chap4.2"></A><B><FONT SIZE=+1>4.2 Client state operations</FONT></B> | |
1109 | <BLOCKQUOTE><B>4.2.1 - NICK</B> | |
1110 | <BLOCKQUOTE><TT>AZAAA N Nick2 955423230</TT></BLOCKQUOTE> | |
1111 | <B>4.2.2 - MODE</B> | |
1112 | <BLOCKQUOTE><TT>AZAAA M Nick2 :+odi</TT></BLOCKQUOTE> | |
1113 | <B>4.2.3 - ACCOUNT</B> | |
1114 | <BLOCKQUOTE><TT>AX AC AZAAA oper</TT></BLOCKQUOTE> | |
1115 | <P>The ACCOUNT message provides a way for servers, such as the channel service | |
1116 | server, to set the account name information that is associated with a client. | |
1117 | Once set, it cannot be unset or changed, and will be propagated in NICK during | |
1118 | net bursts using the special user mode +r followed by the account name. | |
1119 | </BLOCKQUOTE> | |
1120 | <A NAME="chap4.3"></A><B><FONT SIZE=+1>4.3 Channel/Client Messaging.</FONT></B> | |
1121 | <BLOCKQUOTE><B>4.3.1 - PRIVMSG</B> | |
1122 | <P><B>4.3.2 - NOTICE</B> | |
1123 | <P><B>4.3.3 - CNOTICE</B> | |
1124 | <P><B>4.3.4 - CPRIVMSG</B> | |
1125 | <BR> </BLOCKQUOTE> | |
1126 | <FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT> | |
1127 | <BR> | |
1128 | <HR ALIGN=LEFT WIDTH=100% SIZE=2> | |
1129 | <P><A NAME="chap5"></A><B><FONT SIZE=+2>5. Programmers reference: Client/Server | |
1130 | Structures</FONT></B> | |
1131 | <P>This section provides information on the standard Client/Server structures, | |
1132 | for easy reference during development. | |
1133 | <P><I>[..Link to autogenerated struct.html..]</I> | |
1134 | <P><FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT> | |
1135 | <BR> | |
1136 | <HR ALIGN=LEFT WIDTH=100% SIZE=2> | |
1137 | <BR><A NAME="chap7"></A><B><FONT SIZE=+2>7. FAQ</FONT></B> | |
1138 | <P>Frequently asked questions. | |
1139 | <UL> | |
1140 | <LI> | |
1141 | Q. How..</LI> | |
1142 | ||
1143 | <LI> | |
1144 | A. ...</LI> | |
1145 | </UL> | |
1146 | <FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT> | |
1147 | <BR> | |
1148 | <HR WIDTH="100%"> | |
1149 | <P><A NAME="chap8"></A><B><FONT SIZE=+2>8. Update History</FONT></B> | |
1150 | <P>[2000-01-20]: Initial draft, structure, background info. | |
1151 | <BR>[2000-02-13]: Added initial BURST documentation. | |
1152 | <BR>[2000-02-14]: Continued BURST documentation / Begin NICK and SERVER | |
1153 | documentation. | |
1154 | <BR>[2000-02-26]: Continued chapter 5, few example fixes, added token table | |
1155 | from msg.h. -Gte. | |
1156 | <BR>[2000-03-02]: Added NICK spec. -Gte. | |
1157 | <BR>[2000-03-18]: Added JUPE spec. -Kev | |
1158 | <BR>[2000-04-10]: Added information about OPMODE and CLEARMODE tokens. | |
1159 | -Kev | |
1160 | <BR>[2000-04-11]: Started work on chapter 4. -Gte | |
1161 | <BR>[2000-06-01]: Changed some info about the max number of clients -Isomer | |
1162 | <BR>[2002-01-11]: Wrote a specification for ACCOUNT and noted that a usermode | |
1163 | in a NICK message may have an argument. -Kev | |
1164 | <P><A NAME="chap8.1"></A><B><FONT SIZE=+1>8.1 TODO</FONT></B> | |
1165 | <UL> | |
1166 | <LI> | |
1167 | Finish Chapter 5.</LI> | |
1168 | ||
1169 | <LI> | |
1170 | Go through examples, and ensure they are all correct.</LI> | |
1171 | ||
1172 | <LI> | |
1173 | Add common function headers, with argv listings.</LI> | |
1174 | ||
1175 | <LI> | |
1176 | Add description of further server to server messages, with special cases | |
1177 | and outcomes.</LI> | |
1178 | ||
1179 | <LI> | |
1180 | Add FAQ Section.</LI> | |
1181 | </UL> | |
1182 | <FONT FACE="Arial,Helvetica"><FONT SIZE=-1><B>[</B><A HREF="#top">Back</A><B>]</B></FONT></FONT> | |
1183 | </BODY> | |
1184 | </HTML> |