X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=doc%2FProtocol.txt;h=3226fc0833940e93d1aca7f3d4b504ca065b7c3d;hp=61bc1a0d3744e1dd0bc5dfe4ed817f0144175aaf;hb=5170ecf045d70bb7b7549f74807c1938eeed2769;hpb=241d033f377d7d5e9b3687e9e34964f6ddea95d9 diff --git a/doc/Protocol.txt b/doc/Protocol.txt index 61bc1a0d..3226fc08 100644 --- a/doc/Protocol.txt +++ b/doc/Protocol.txt @@ -1,15 +1,21 @@ ngIRCd - Next Generation IRC Server - (c)2001,2002 by Alexander Barton, + (c)2001-2003 by Alexander Barton, alex@barton.de, http://www.barton.de/ - ngIRCd ist freie Software und steht unter - der GNU General Public License. + ngIRCd is free software and published under the + terms of the GNU General Public License. -- Protocol.txt -- + +-----------------------------------------------------------------------+ + | This text is only available in german at the moment, but this should | + | change until the release of ngIRCd 0.7.0, so feel free to contribute! | + +-----------------------------------------------------------------------+ + + I. Kompatibilitaet ~~~~~~~~~~~~~~~~~~ @@ -32,14 +38,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): @@ -60,18 +66,17 @@ 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, der ngIRCd liefert hier immer -"-ngIRCd" (Zur Identifikation des ngIRCd sollte dieser String jedoch NICHT -verwendet werden, s.u.). +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 vom ngIRCd nur dann -ausgewertet, wenn die Gegenseite ebenfalls ein ngIRCd ist. In diesem Fall -wird folgende Syntax erwartet: "[:]". +(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 @@ -80,11 +85,37 @@ 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. +- 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, Channel-Key, User-Limit 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. + +Hat ein Channel keinen Key (in ist der Mode "k" nicht vorhanden), +so muss der Parameter ignoriert werden (da vorhanden sein muss, +sollte in diesem Fall "*" uebergeben werden). Hat er kein User-Limit (kein +"l" in ), so muss ignoriert werden ( sollte hierbei +als "0" uebergeben werden). + -- -$Id: Protocol.txt,v 1.2 2002/09/03 11:32:58 alex Exp $ +$Id: Protocol.txt,v 1.8 2003/03/09 20:04:44 alex Exp $