1
0
mirror of https://github.com/osmarks/ngircd.git synced 2025-01-07 14:20:29 +00:00

Translated Protocol.txt to english.

This commit is contained in:
Alexander Barton 2003-04-21 12:48:40 +00:00
parent a061668b1a
commit 384d6b894a

View File

@ -10,112 +10,98 @@
-- Protocol.txt -- -- Protocol.txt --
+-----------------------------------------------------------------------+ I. Compatibility
| 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! |
+-----------------------------------------------------------------------+ The ngIRCd implements the Internet Relay Chat (IRC) protocol version 2.10
as defined in RFC ("request for comment") 1459 and 2810-2813. These (and
probably further relevant RFCs) are listed in doc/RFC.txt.
Unfortunately, even the "original" ircd doesn't follow these specifications
in all details. But because the ngIRCd should be a fully compatible
replacement for this server ("ircd") it tries to emulate these differences.
If you don't like this behavior please ./configure the ngIRCd using the
"--enable-strict-rfc" command line option. But please not: not all IRC
clients are compatible with such an server, some can't even connect at all!
Therefore this option isn't desired for "normal operation".
I. Kompatibilitaet II. The IRC+ Protocol
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
Der ngIRCd haelt sich an das IRC-Protokoll Version 2.10, wie es in den RFCs Starting with version 0.5.0, the ngIRCd extends the original IRC protocol
1459 und 2810-2813 beschrieben ist. Diese (und ggf. weitere fuer den ngIRCd as defined in RFC 2810-2813. This enhanced protocol is named "IRC+". It is
relevante) RFCs sind in RFC.txt aufgefuehrt. backwards compatible to the "plain" IRC protocol and will only be used by
the ngIRCd if it detects that the peer supports it as well.
Leider verhaelt sich aber schon der "Originalserver" nicht immer genau so, The "PASSV" command is used to detect the protocol and peer versions (see
wie es in den RFCs beschrieben ist. Da der ngIRCd aber ein Ersatz fuer RFC 2813, section 4.1.1).
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. Das IRC+-Protokoll II.1 Register new server link
~~~~~~~~~~~~~~~~~~~~~~
Der ngIRCd unterstuetzt als Erweiterung zum IRC-Protokoll wie es in den RFCs Command: PASS
2810-2813 beschrieben ist, das IRC+-Protokoll. Dieses Protokoll ist dabei Parameters: <password> <version> <flags> [<options>]
kompatibel zum IRC-Protokoll und wird nur verwendet, wenn der ngIRCd fest- Used by: servers only (with these parameters)
stellt, dass ein connectierter Server ebenfalls dieses erweiterte Protokoll
unterstuetzt.
Die Protokoll- und Server-Erkennung wird mit dem "PASS"-Befehl durchgefuehrt <password> is the password for this new server link as defined in the server
(vgl. RFC 2813, Sektion 4.1.1): configuration which is sent to the peer or received from it.
<version> consists of two parts and is at least 4, at most 14 characters
long: the first four bytes contain the IRC protocol version number, whereas
the first two bytes represent the major version, the last two bytes the
minor version (the string "0210" indicates version 2.10, e.g.).
The following optional(!) 10 bytes contain an implementation-dependent
version number. Servers supporting the IRC+ protocol as defined in this
document provide the string "-IRC+" here.
<flags> consists of two parts separated with the character "|" and is at
most 100 bytes long. The first part contains the name of the implementation
(ngIRCd sets this to "ngIRCd", the original ircd to "IRC", e.g.). The second
part is implementation-dependent and should only be parsed if the peer
supports the IRC+ protocol as well. In this case the following syntax is
used: "<serverversion>[:<serverflags>]".
<serverversion> is an ASCII representation of the clear-text server version
number, <serverflags> indicates the supported IRC+ protocol extensions (and
may be empty!).
The optional parameter <options> is used to propagate server options as
defined in RFC 2813, section 4.1.1.
The following <serverflags> are defined at the moment:
- o: IRC operators are allowed to change channel- and channel-user-modes
even if they aren't channel-operator of the affected channel.
- C: The server supports the CHANINFO command.
II.1 neuen Server-Link registrieren II.2 Exchange channel-modes, topics, and persistent channels
Befehl: PASS Command: CHANINFO
Parameter: <password> <version> <flags> [<options>] Parameters: <channel> +<modes> <key> <maxusers> [<topic>]
Fuer: mit dieser Syntax nur Server Used by: servers only
<password> enthaelt das Passwort fur den neu aufzubauenden Server-Link, CHANINFO is used by servers to inform each other about a channel: its
so wie es in der Konfigurationsdatei definiert wurde. modes, channel key, user limits and its topic. <topic> is optional.
<version> setzt sich aus zwei Teilen zusammen und ist mindestens 4, maximal If the channel already exists on the server receiving the CHANINFO command,
14 Zeichen lang: die ersten vier Bytes enthalten die Versionsnummer des it only adopts the <modes> (or the <topic>) if there are no modes (or topic)
unterstuetzten IRC-Protokolls, wobei die ersten zwei Bytes die Major-, die already set. It there are already values set the server ignores the
letzten beiden die Minor-Revision angeben. Der String "0210" steht also corresponding parameter.
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+".
<flags> setzt sich ebenfalls aus zwei Bestandteilen zusammen und ist If the channel doesn't exists at all it will be created.
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: "<serverversion>[:<serverflags>]".
<serverversion> ist hier eine ASCII-Klartext-Darstellung der Versionsnummer, The parameter <key> must be ignored if a channel has no key (the parameter
<serverflags> zeigt die vom Server unterstuetzten Erweiterungen an (und <modes> doesn't list the "k" channel mode). In this case <key> should
kann die leere Menge sein). contain "*" because the parameter <key> is required by the CHANINFO syntax
and therefore can't be omitted. The parameter <limit> must be ignored when
Mit dem optionalen Parameter <options> werden Server-Optionen uebermittelt, a channel has no user limit (the parameter <modes> doesn't list the "l"
wie sie in RFC 2813, Sektion 4.1.1 definiert sind. channel mode). In this case <limit> should be "0".
Folgende <serverflags> 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: <channel> +<modes> <key> <maxusers> [<topic>]
Fuer: Server
Mit CHANINFO Informiert ein Server den anderen ueber einen Channel: dessen
Modes, Channel-Key, User-Limit und dessen Topic. <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 <modes> ist der Mode "k" nicht vorhanden),
so muss der Parameter <key> ignoriert werden (da <key> vorhanden sein muss,
sollte in diesem Fall "*" uebergeben werden). Hat er kein User-Limit (kein
"l" in <modes>), so muss <limit> ignoriert werden (<limit> sollte hierbei
als "0" uebergeben werden).
-- --
$Id: Protocol.txt,v 1.8 2003/03/09 20:04:44 alex Exp $ $Id: Protocol.txt,v 1.9 2003/04/21 12:48:40 alex Exp $