Blame


1 5b333085 2003-01-04 alex
2 5b333085 2003-01-04 alex ngIRCd - Next Generation IRC Server
3 5b333085 2003-01-04 alex
4 5b333085 2003-01-04 alex (c)2001,2002 by Alexander Barton,
5 5b333085 2003-01-04 alex alex@barton.de, http://www.barton.de/
6 5b333085 2003-01-04 alex
7 5b333085 2003-01-04 alex ngIRCd ist freie Software und steht unter
8 5b333085 2003-01-04 alex der GNU General Public License.
9 5b333085 2003-01-04 alex
10 5b333085 2003-01-04 alex -- Protocol.txt --
11 5b333085 2003-01-04 alex
12 5b333085 2003-01-04 alex
13 5b333085 2003-01-04 alex I. Kompatibilitaet
14 5b333085 2003-01-04 alex ~~~~~~~~~~~~~~~~~~
15 5b333085 2003-01-04 alex
16 5b333085 2003-01-04 alex Der ngIRCd haelt sich an das IRC-Protokoll Version 2.10, wie es in den RFCs
17 5b333085 2003-01-04 alex 1459 und 2810-2813 beschrieben ist. Diese (und ggf. weitere fuer den ngIRCd
18 5b333085 2003-01-04 alex relevante) RFCs sind in RFC.txt aufgefuehrt.
19 5b333085 2003-01-04 alex
20 5b333085 2003-01-04 alex Leider verhaelt sich aber schon der "Originalserver" nicht immer genau so,
21 5b333085 2003-01-04 alex wie es in den RFCs beschrieben ist. Da der ngIRCd aber ein Ersatz fuer
22 5b333085 2003-01-04 alex eben diesen Server sein soll, werden diese Abweichungen in der Regel vom
23 5b333085 2003-01-04 alex ngIRCd emuliert um die Kompatibilitaet zu wahren.
24 5b333085 2003-01-04 alex
25 5b333085 2003-01-04 alex Sollte dieses Verhalten nicht erwuenscht sein, so kann mit der configure-
26 5b333085 2003-01-04 alex Option "--enable-strict-rfc" der ngIRCd so compiliert werden, dass er sich
27 5b333085 2003-01-04 alex strikt an die entsprechenden RFCs haelt.
28 5b333085 2003-01-04 alex
29 5b333085 2003-01-04 alex ACHTUNG: an einem so compilierten Server koennen sich andere Server und
30 5b333085 2003-01-04 alex Clients, die sich nicht genau an das Protokoll halten, u.U. nicht mehr
31 5b333085 2003-01-04 alex anmelden oder alle Funktionen nutzen! In der Regel ist diese Option daher
32 5b333085 2003-01-04 alex nicht erwuenscht.
33 5b333085 2003-01-04 alex
34 5b333085 2003-01-04 alex
35 5b333085 2003-01-04 alex II. Das IRC+-Protokoll
36 5b333085 2003-01-04 alex ~~~~~~~~~~~~~~~~~~~~~~
37 5b333085 2003-01-04 alex
38 5b333085 2003-01-04 alex Der ngIRCd unterstuetzt als Erweiterung zum IRC-Protokoll wie es in den RFCs
39 5b333085 2003-01-04 alex 2810-2813 beschrieben ist, das IRC+-Protokoll. Dieses Protokoll ist dabei
40 5b333085 2003-01-04 alex kompatibel zum IRC-Protokoll und wird nur verwendet, wenn der ngIRCd fest-
41 5b333085 2003-01-04 alex stellt, dass ein connectierter Server ebenfalls dieses erweiterte Protokoll
42 5b333085 2003-01-04 alex unterstuetzt.
43 5b333085 2003-01-04 alex
44 5b333085 2003-01-04 alex Die Protokoll- und Server-Erkennung wird mit dem "PASS"-Befehl durchgefuehrt
45 5b333085 2003-01-04 alex (vgl. RFC 2813, Sektion 4.1.1):
46 5b333085 2003-01-04 alex
47 5b333085 2003-01-04 alex
48 5b333085 2003-01-04 alex II.1 neuen Server-Link registrieren
49 5b333085 2003-01-04 alex
50 5b333085 2003-01-04 alex Befehl: PASS
51 5b333085 2003-01-04 alex Parameter: <password> <version> <flags> [<options>]
52 5b333085 2003-01-04 alex Fuer: mit dieser Syntax nur Server
53 5b333085 2003-01-04 alex
54 5b333085 2003-01-04 alex <password> enthaelt das Passwort fur den neu aufzubauenden Server-Link,
55 5b333085 2003-01-04 alex so wie es in der Konfigurationsdatei definiert wurde.
56 5b333085 2003-01-04 alex
57 5b333085 2003-01-04 alex <version> setzt sich aus zwei Teilen zusammen und ist mindestens 4, maximal
58 5b333085 2003-01-04 alex 14 Zeichen lang: die ersten vier Bytes enthalten die Versionsnummer des
59 5b333085 2003-01-04 alex unterstuetzten IRC-Protokolls, wobei die ersten zwei Bytes die Major-, die
60 5b333085 2003-01-04 alex letzten beiden die Minor-Revision angeben. Der String "0210" steht also
61 5b333085 2003-01-04 alex fuer Protokollversion 2.10.
62 5b333085 2003-01-04 alex Die folgenden (optionalen!) 10 Bytes enthalten eine von der jeweiligen
63 5b333085 2003-01-04 alex Implementation abhaengige Versionsnummer. Server, die das IRC+-Protokoll
64 5b333085 2003-01-04 alex unterstuetzen, liefern hier "-IRC+".
65 5b333085 2003-01-04 alex
66 5b333085 2003-01-04 alex <flags> setzt sich ebenfalls aus zwei Bestandteilen zusammen und ist
67 5b333085 2003-01-04 alex maximal 100 Bytes lang. Getrennt werden die beiden Teile mit dem Zeichen
68 5b333085 2003-01-04 alex "|". Der erste Teil enthaelt den Namen der Implementation, der ngIRCd
69 5b333085 2003-01-04 alex liefert hier z.B. "ngIRCd", der Originalserver "IRC". Anhand dieser "ID"
70 5b333085 2003-01-04 alex kann zwischen Serverimplementationen unterschieden werden. Der zweite Teil
71 5b333085 2003-01-04 alex (nach dem "|") ist implementationsabhaengig und wird nur ausgewertet,
72 5b333085 2003-01-04 alex wenn die Gegenseite das IRC+-Protokoll unterstuetzt. In diesem Fall wird
73 5b333085 2003-01-04 alex folgende Syntax erwartet: "<serverversion>[:<serverflags>]".
74 5b333085 2003-01-04 alex
75 5b333085 2003-01-04 alex <serverversion> ist hier eine ASCII-Klartext-Darstellung der Versionsnummer,
76 5b333085 2003-01-04 alex <serverflags> zeigt die vom Server unterstuetzten Erweiterungen an (und
77 5b333085 2003-01-04 alex kann die leere Menge sein).
78 5b333085 2003-01-04 alex
79 5b333085 2003-01-04 alex Mit dem optionalen Parameter <options> werden Server-Optionen uebermittelt,
80 5b333085 2003-01-04 alex wie sie in RFC 2813, Sektion 4.1.1 definiert sind.
81 5b333085 2003-01-04 alex
82 5b333085 2003-01-04 alex Folgende <serverflags> sind zur Zeit definiert:
83 5b333085 2003-01-04 alex
84 5b333085 2003-01-04 alex - o: IRC-Operatoren duerfen auch dann Channel- und Channel-User-Modes
85 5b333085 2003-01-04 alex aendern, wenn sie kein Channel-Operator im betroffenen Channel sind.
86 5b333085 2003-01-04 alex
87 5b333085 2003-01-04 alex - C: der Server unterstuetzt den CHANINFO-Befehl.
88 5b333085 2003-01-04 alex
89 5b333085 2003-01-04 alex
90 5b333085 2003-01-04 alex II.2 Channel-Modes, persistente Channel und Topic austauschen
91 5b333085 2003-01-04 alex
92 5b333085 2003-01-04 alex Befehl: CHANINFO
93 5b333085 2003-01-04 alex Parameter: <channel> +<mode> [<topic>]
94 5b333085 2003-01-04 alex Fuer: Server
95 5b333085 2003-01-04 alex
96 5b333085 2003-01-04 alex Mit CHANINFO Informiert ein Server den anderen ueber einen Channel: dessen
97 5b333085 2003-01-04 alex Modes und dessen Topic. <topic> ist optional.
98 5b333085 2003-01-04 alex
99 5b333085 2003-01-04 alex Existiert auf dem Server, der das CHANINFO empfaengt, der Channel bereits,
100 5b333085 2003-01-04 alex so uebernimmt er die Werte jeweils nur dann, wenn er selber noch keine
101 5b333085 2003-01-04 alex Modes bzw. kein Topic definiert hat. Ansonsten wird der jeweilige Parameter
102 5b333085 2003-01-04 alex ignoriert.
103 5b333085 2003-01-04 alex
104 5b333085 2003-01-04 alex Existiert der Channel noch nicht, so wird er mit den entsprechenden Angaben
105 5b333085 2003-01-04 alex erzeugt.
106 5b333085 2003-01-04 alex
107 5b333085 2003-01-04 alex
108 5b333085 2003-01-04 alex --
109 5b333085 2003-01-04 alex $Id: Protocol.txt,v 1.1 2003/01/04 13:07:54 alex Exp $