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