X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=doc%2FProtocol.txt;h=14882f294726eeee25c5559c66d512b1303aae95;hp=d5a3c9293db40a54ce8b5accfd5180bf2acf94ad;hb=eb817807bc06c4e3d40ab65f967d7b79a546bcfd;hpb=28c7f37204444e6ae9f37163e400d25f99ee5f8c diff --git a/doc/Protocol.txt b/doc/Protocol.txt index d5a3c929..14882f29 100644 --- a/doc/Protocol.txt +++ b/doc/Protocol.txt @@ -32,14 +32,14 @@ anmelden oder alle Funktionen nutzen! In der Regel ist diese Option daher nicht erwuenscht. -II. Erweiterungen des IRC-Protokolls -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +II. Das IRC+-Protokoll +~~~~~~~~~~~~~~~~~~~~~~ -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. +Der ngIRCd unterstuetzt als Erweiterung zum IRC-Protokoll wie es in den RFCs +2810-2813 beschrieben ist, das IRC+-Protokoll. Dieses Protokoll ist dabei +kompatibel zum IRC-Protokoll und wird nur verwendet, wenn der ngIRCd fest- +stellt, dass ein connectierter Server ebenfalls dieses erweiterte Protokoll +unterstuetzt. Die Protokoll- und Server-Erkennung wird mit dem "PASS"-Befehl durchgefuehrt (vgl. RFC 2813, Sektion 4.1.1): @@ -51,36 +51,59 @@ II.1 neuen Server-Link registrieren Parameter: [] Fuer: mit dieser Syntax nur Server - enthaelt das Passwort fur den neu aufzubauenden Server-Link, wie er -in der Konfigurationsdatei definiert wurde. + enthaelt das Passwort fur den neu aufzubauenden Server-Link, +so wie es in der Konfigurationsdatei definiert wurde. 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.). - - 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: "[:]". - ist hier eine ASCII-Darstellung der Versionsnummer, zeigt die -vom Server unterstuetzten Erweiterungen an (und kann die leere Menge sein). - -Mit dem optionalen Parameter werden Server-Optionen bekannt gemacht, +14 Zeichen lang: die ersten vier Bytes enthalten die Versionsnummer des +unterstuetzten IRC-Protokolls, wobei die ersten zwei Bytes die Major-, die +letzten beiden die Minor-Revision angeben. Der String "0210" steht also +fuer Protokollversion 2.10. +Die folgenden (optionalen!) 10 Bytes enthalten eine von der jeweiligen +Implementation abhaengige Versionsnummer. Server, die das IRC+-Protokoll +unterstuetzen, liefern hier "-IRC+". + + 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 Serverimplementationen unterschieden werden. Der zweite Teil +(nach dem "|") ist implementationsabhaengig und wird nur ausgewertet, +wenn die Gegenseite das IRC+-Protokoll unterstuetzt. In diesem Fall wird +folgende Syntax erwartet: "[:]". + + ist hier eine ASCII-Klartext-Darstellung der Versionsnummer, + zeigt die vom Server unterstuetzten Erweiterungen an (und +kann die leere Menge sein). + +Mit dem optionalen Parameter werden Server-Optionen uebermittelt, wie sie in RFC 2813, Sektion 4.1.1 definiert sind. -Folgende werden zur Zeit vom ngIRCd verwendet: +Folgende sind zur Zeit definiert: -- o: IRC-Operatoren duerfen auch dann Channel- und Channel-User-Modes aendern, - wenn sie kein Channel-Operator im betroffenen Channel sind. +- o: IRC-Operatoren duerfen auch dann Channel- und Channel-User-Modes + aendern, wenn sie kein Channel-Operator im betroffenen Channel sind. + +- C: der Server unterstuetzt den CHANINFO-Befehl. + + +II.2 Channel-Modes, persistente Channel und Topic austauschen + + Befehl: CHANINFO + Parameter: + [] + Fuer: Server + +Mit CHANINFO Informiert ein Server den anderen ueber einen Channel: dessen +Modes und dessen Topic. ist optional. + +Existiert auf dem Server, der das CHANINFO empfaengt, der Channel bereits, +so uebernimmt er die Werte jeweils nur dann, wenn er selber noch keine +Modes bzw. kein Topic definiert hat. Ansonsten wird der jeweilige Parameter +ignoriert. + +Existiert der Channel noch nicht, so wird er mit den entsprechenden Angaben +erzeugt. -- -$Id: Protocol.txt,v 1.1 2002/09/02 21:04:27 alex Exp $ +$Id: Protocol.txt,v 1.5 2002/09/04 00:06:19 alex Exp $