diff options
| author | Alexander Barton <alex@barton.de> | 2002-09-02 21:04:27 +0000 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2002-09-02 21:04:27 +0000 |
| commit | 28c7f37204444e6ae9f37163e400d25f99ee5f8c (patch) | |
| tree | 895208ac8a5cbc02a5f46a0c3cc84b8af57565f9 /doc | |
| parent | c0910498e895d3285f10fcb1e4d1a2f76baf17e9 (diff) | |
| download | ngircd-28c7f37204444e6ae9f37163e400d25f99ee5f8c.tar.gz ngircd-28c7f37204444e6ae9f37163e400d25f99ee5f8c.zip | |
- Dokumentation des vom ngIRCd verwendeten Protokolls begonnen.
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/Protocol.txt | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/doc/Protocol.txt b/doc/Protocol.txt new file mode 100644 index 00000000..d5a3c929 --- /dev/null +++ b/doc/Protocol.txt @@ -0,0 +1,86 @@ + + ngIRCd - Next Generation IRC Server + + (c)2001,2002 by Alexander Barton, + alex@barton.de, http://www.barton.de/ + + ngIRCd ist freie Software und steht unter + der GNU General Public License. + + -- Protocol.txt -- + + +I. Kompatibilitaet +~~~~~~~~~~~~~~~~~~ + +Der ngIRCd haelt sich an das IRC-Protokoll Version 2.10, wie es in den RFCs +1459 und 2810-2813 beschrieben ist. Diese (und ggf. weitere fuer den ngIRCd +relevante) RFCs sind in RFC.txt aufgefuehrt. + +Leider verhaelt sich aber schon der "Originalserver" nicht immer genau so, +wie es in den RFCs beschrieben ist. Da der ngIRCd aber ein Ersatz fuer +eben diesen Server sein soll, werden diese Abweichungen in der Regel vom +ngIRCd emuliert um die Kompatibilitaet zu wahren. + +Sollte dieses Verhalten nicht erwuenscht sein, so kann mit der configure- +Option "--enable-strict-rfc" der ngIRCd so compiliert werden, dass er sich +strikt an die entsprechenden RFCs haelt. + +ACHTUNG: an einem so compilierten Server koennen sich andere Server und +Clients, die sich nicht genau an das Protokoll halten, u.U. nicht mehr +anmelden oder alle Funktionen nutzen! In der Regel ist diese Option daher +nicht erwuenscht. + + +II. Erweiterungen des IRC-Protokolls +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Erkennt der ngIRCd, dass ein connectierter Server ebenfalls ein ngIRCd ist, +so werden -- so es die Version auf der Gegenseite unterstuetzt (s.u.) -- +Erweiterungen zum IRC-Protokoll 2.10 verwendet. Diese Erweiterungen werden +dabei nicht von Versionsnummern abhaengig verwendet, sondern anhand von +Falgs, die die beiden ngIRCd-Server austauschen, aktiviert. + +Die Protokoll- und Server-Erkennung wird mit dem "PASS"-Befehl durchgefuehrt +(vgl. RFC 2813, Sektion 4.1.1): + + +II.1 neuen Server-Link registrieren + + Befehl: PASS + Parameter: <password> <version> <flags> [<options>] + Fuer: mit dieser Syntax nur Server + +<password> enthaelt das Passwort fur den neu aufzubauenden Server-Link, wie er +in der Konfigurationsdatei definiert wurde. + +<version> setzt sich aus zwei Teilen zusammen und ist mindestens 4, maximal +14 Zeichen lang: die ersten vier Bytes enthalten die Versionsnummer des IRC- +Protokolls, wobei die ersten zwei Bytes die Major-, die letzten beiden die +Minor-Revision angeben. "0210" steht also fuer Protokollversion 2.10. +Die folgenden (optionalen!) 10 Bytes enthalten eine implementationsabhaengige +Versionsnummer, der ngIRCd liefert hier immer "-ngIRCd" (Zur Identifikation +des ngIRCd sollte dieser String jedoch NICHT verwendet werden, s.u.). + +<flags> setzt sich ebenfalls aus zwei Bestandteilen zusammen und ist maximal +100 Bytes lang. Getrennt werden die beiden Teile mit dem Zeichen "|". Der +erste Teil enthaelt den Namen der Implementation, der ngIRCd liefert hier z.B. +"ngIRCd", der Originalserver "IRC". Anhand dieser "ID" kann zwischen Server- +Implementationen unterschieden werden. +Der zweite Teil (nach dem "|") ist implementationsabhaengig und wird vom ngIRCd +nur ausgewertet, wenn die Gegenseite ebenfalls ein ngIRCd ist. In diesem Fall +wird folgende Syntax erwartet: "<serverversion>[:<serverflags>]". +<version> ist hier eine ASCII-Darstellung der Versionsnummer, <flags> zeigt die +vom Server unterstuetzten Erweiterungen an (und kann die leere Menge sein). + +Mit dem optionalen Parameter <options> werden Server-Optionen bekannt gemacht, +wie sie in RFC 2813, Sektion 4.1.1 definiert sind. + +Folgende <serverflags> werden zur Zeit vom ngIRCd verwendet: + +- o: IRC-Operatoren duerfen auch dann Channel- und Channel-User-Modes aendern, + wenn sie kein Channel-Operator im betroffenen Channel sind. + + +-- +$Id: Protocol.txt,v 1.1 2002/09/02 21:04:27 alex Exp $ |