Blame


1 28c7f372 2002-09-02 alex
2 28c7f372 2002-09-02 alex ngIRCd - Next Generation IRC Server
3 28c7f372 2002-09-02 alex
4 5170ecf0 2003-03-09 alex (c)2001-2003 by Alexander Barton,
5 28c7f372 2002-09-02 alex alex@barton.de, http://www.barton.de/
6 28c7f372 2002-09-02 alex
7 5170ecf0 2003-03-09 alex ngIRCd is free software and published under the
8 5170ecf0 2003-03-09 alex terms of the GNU General Public License.
9 28c7f372 2002-09-02 alex
10 28c7f372 2002-09-02 alex -- Protocol.txt --
11 28c7f372 2002-09-02 alex
12 28c7f372 2002-09-02 alex
13 384d6b89 2003-04-21 alex I. Compatibility
14 384d6b89 2003-04-21 alex ~~~~~~~~~~~~~~~~
15 5b333085 2003-01-04 alex
16 384d6b89 2003-04-21 alex The ngIRCd implements the Internet Relay Chat (IRC) protocol version 2.10
17 384d6b89 2003-04-21 alex as defined in RFC ("request for comment") 1459 and 2810-2813. These (and
18 384d6b89 2003-04-21 alex probably further relevant RFCs) are listed in doc/RFC.txt.
19 5b333085 2003-01-04 alex
20 384d6b89 2003-04-21 alex Unfortunately, even the "original" ircd doesn't follow these specifications
21 384d6b89 2003-04-21 alex in all details. But because the ngIRCd should be a fully compatible
22 384d6b89 2003-04-21 alex replacement for this server ("ircd") it tries to emulate these differences.
23 28c7f372 2002-09-02 alex
24 384d6b89 2003-04-21 alex If you don't like this behavior please ./configure the ngIRCd using the
25 188e95f6 2003-04-29 goetz "--enable-strict-rfc" command line option. But please note: not all IRC
26 384d6b89 2003-04-21 alex clients are compatible with such an server, some can't even connect at all!
27 384d6b89 2003-04-21 alex Therefore this option isn't desired for "normal operation".
28 28c7f372 2002-09-02 alex
29 28c7f372 2002-09-02 alex
30 384d6b89 2003-04-21 alex II. The IRC+ Protocol
31 384d6b89 2003-04-21 alex ~~~~~~~~~~~~~~~~~~~~~
32 28c7f372 2002-09-02 alex
33 384d6b89 2003-04-21 alex Starting with version 0.5.0, the ngIRCd extends the original IRC protocol
34 384d6b89 2003-04-21 alex as defined in RFC 2810-2813. This enhanced protocol is named "IRC+". It is
35 384d6b89 2003-04-21 alex backwards compatible to the "plain" IRC protocol and will only be used by
36 384d6b89 2003-04-21 alex the ngIRCd if it detects that the peer supports it as well.
37 28c7f372 2002-09-02 alex
38 384d6b89 2003-04-21 alex The "PASSV" command is used to detect the protocol and peer versions (see
39 384d6b89 2003-04-21 alex RFC 2813, section 4.1.1).
40 28c7f372 2002-09-02 alex
41 28c7f372 2002-09-02 alex
42 384d6b89 2003-04-21 alex II.1 Register new server link
43 28c7f372 2002-09-02 alex
44 384d6b89 2003-04-21 alex Command: PASS
45 384d6b89 2003-04-21 alex Parameters: <password> <version> <flags> [<options>]
46 384d6b89 2003-04-21 alex Used by: servers only (with these parameters)
47 28c7f372 2002-09-02 alex
48 384d6b89 2003-04-21 alex <password> is the password for this new server link as defined in the server
49 384d6b89 2003-04-21 alex configuration which is sent to the peer or received from it.
50 28c7f372 2002-09-02 alex
51 384d6b89 2003-04-21 alex <version> consists of two parts and is at least 4, at most 14 characters
52 384d6b89 2003-04-21 alex long: the first four bytes contain the IRC protocol version number, whereas
53 384d6b89 2003-04-21 alex the first two bytes represent the major version, the last two bytes the
54 384d6b89 2003-04-21 alex minor version (the string "0210" indicates version 2.10, e.g.).
55 28c7f372 2002-09-02 alex
56 384d6b89 2003-04-21 alex The following optional(!) 10 bytes contain an implementation-dependent
57 384d6b89 2003-04-21 alex version number. Servers supporting the IRC+ protocol as defined in this
58 384d6b89 2003-04-21 alex document provide the string "-IRC+" here.
59 28c7f372 2002-09-02 alex
60 384d6b89 2003-04-21 alex <flags> consists of two parts separated with the character "|" and is at
61 384d6b89 2003-04-21 alex most 100 bytes long. The first part contains the name of the implementation
62 384d6b89 2003-04-21 alex (ngIRCd sets this to "ngIRCd", the original ircd to "IRC", e.g.). The second
63 384d6b89 2003-04-21 alex part is implementation-dependent and should only be parsed if the peer
64 384d6b89 2003-04-21 alex supports the IRC+ protocol as well. In this case the following syntax is
65 384d6b89 2003-04-21 alex used: "<serverversion>[:<serverflags>]".
66 28c7f372 2002-09-02 alex
67 384d6b89 2003-04-21 alex <serverversion> is an ASCII representation of the clear-text server version
68 384d6b89 2003-04-21 alex number, <serverflags> indicates the supported IRC+ protocol extensions (and
69 384d6b89 2003-04-21 alex may be empty!).
70 28c7f372 2002-09-02 alex
71 384d6b89 2003-04-21 alex The optional parameter <options> is used to propagate server options as
72 384d6b89 2003-04-21 alex defined in RFC 2813, section 4.1.1.
73 28c7f372 2002-09-02 alex
74 384d6b89 2003-04-21 alex The following <serverflags> are defined at the moment:
75 241d033f 2002-09-03 alex
76 384d6b89 2003-04-21 alex - o: IRC operators are allowed to change channel- and channel-user-modes
77 384d6b89 2003-04-21 alex even if they aren't channel-operator of the affected channel.
78 28c7f372 2002-09-02 alex
79 384d6b89 2003-04-21 alex - C: The server supports the CHANINFO command.
80 28c7f372 2002-09-02 alex
81 28c7f372 2002-09-02 alex
82 384d6b89 2003-04-21 alex II.2 Exchange channel-modes, topics, and persistent channels
83 28c7f372 2002-09-02 alex
84 384d6b89 2003-04-21 alex Command: CHANINFO
85 384d6b89 2003-04-21 alex Parameters: <channel> +<modes> <key> <maxusers> [<topic>]
86 384d6b89 2003-04-21 alex Used by: servers only
87 aafd21c7 2002-09-04 alex
88 384d6b89 2003-04-21 alex CHANINFO is used by servers to inform each other about a channel: its
89 384d6b89 2003-04-21 alex modes, channel key, user limits and its topic. <topic> is optional.
90 9611833e 2002-09-04 alex
91 384d6b89 2003-04-21 alex If the channel already exists on the server receiving the CHANINFO command,
92 384d6b89 2003-04-21 alex it only adopts the <modes> (or the <topic>) if there are no modes (or topic)
93 384d6b89 2003-04-21 alex already set. It there are already values set the server ignores the
94 384d6b89 2003-04-21 alex corresponding parameter.
95 9611833e 2002-09-04 alex
96 384d6b89 2003-04-21 alex If the channel doesn't exists at all it will be created.
97 9611833e 2002-09-04 alex
98 384d6b89 2003-04-21 alex The parameter <key> must be ignored if a channel has no key (the parameter
99 384d6b89 2003-04-21 alex <modes> doesn't list the "k" channel mode). In this case <key> should
100 384d6b89 2003-04-21 alex contain "*" because the parameter <key> is required by the CHANINFO syntax
101 384d6b89 2003-04-21 alex and therefore can't be omitted. The parameter <limit> must be ignored when
102 384d6b89 2003-04-21 alex a channel has no user limit (the parameter <modes> doesn't list the "l"
103 384d6b89 2003-04-21 alex channel mode). In this case <limit> should be "0".
104 9611833e 2002-09-04 alex
105 9611833e 2002-09-04 alex
106 28c7f372 2002-09-02 alex --
107 188e95f6 2003-04-29 goetz $Id: Protocol.txt,v 1.10 2003/04/29 13:37:36 goetz Exp $