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:
parent
a061668b1a
commit
384d6b894a
168
doc/Protocol.txt
168
doc/Protocol.txt
@ -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 $
|
||||||
|
Loading…
Reference in New Issue
Block a user