Blame


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