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