~ubuntu-branches/debian/sid/ircd-hybrid/sid

« back to all changes in this revision

Viewing changes to doc/technical/ts6.txt

  • Committer: Package Import Robot
  • Author(s): Dominic Hargreaves
  • Date: 2015-04-19 15:53:09 UTC
  • mfrom: (1.2.13)
  • Revision ID: package-import@ubuntu.com-20150419155309-06y59x2at2ax5ou3
Tags: 1:8.2.7+dfsg.1-1
* Remove Suggests: hybserv since it doesn't really work with
  ircd-hybrid 8 and above
* New upstream release
  - update debian/copyright with minor changes
  - update config files from new reference.conf
  - fixes DoS from localhost clients (Closes: #782859)
  - supports SSL certficate chaining (Closes: #769741)
* Debconf configuration script no longer ignores the result of
  upgrade questions (Closes: #779082)
* Don't display upgrade warnings on new installs (Closes: #782883)
* Add NEWS item about updated configuration

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
$Id: ts6.txt 33 2005-10-02 20:50:00Z knight $
 
1
$Id: ts6.txt 4788 2014-10-25 20:38:39Z michael $
2
2
 
3
 
TS6 Proposal (v7)
 
3
TS6 Proposal (v8)
4
4
Written by Lee H <lee@leeh.co.uk>
5
 
 
6
 
Introduction
7
 
------------
 
5
Ideas borrowed heavily from ircnet (Beeth, jv, Q)
 
6
 
 
7
- Changes between v7 and v8 -
 
8
-----------------------------
 
9
 
 
10
In the v7 specification, the JOIN command included the channel modes of a
 
11
channel, and acted on them following TS rules.  In the v8 specification,
 
12
JOIN will never send modes.
 
13
 
 
14
Desyncs can occur both when they are sent and when they are not.  If they
 
15
are sent, then you can have a situation where a user on one side of the
 
16
network issues "MODE #channel -l", and a user on another side of the network
 
17
issues "JOIN #channel" whilst the +l still exists.  As the JOIN string sent 
 
18
server<->server includes the full modes at the time of the user joining, 
 
19
this will propagate the +l, but there is a -l crossing in the other
 
20
direction.  Desync will occur beyond where they intersect.
 
21
 
 
22
If the modes are not sent, then a lower TS JOIN command, or a JOIN command
 
23
that creates a channel will cause a desync.
 
24
 
 
25
It is judged that the desync with sending the modes is worse than the desync
 
26
by not sending them, as such the v8 specification dictates modes are not
 
27
sent with a JOIN command server<->server.
 
28
 
 
29
The v8 specification also clarifies that servers may issue TMODE.
 
30
 
 
31
- Introduction -
 
32
----------------
8
33
 
9
34
This document aims to fix some of the flaws that are still present in the
10
35
current TS system.
27
52
we are bursting to.
28
53
 
29
54
 
30
 
Definitions
31
 
-----------
 
55
- Definitions -
 
56
---------------
32
57
 
33
58
Throughout this document, the following terms are used:
34
59
 
42
67
TS6     - The TS version 6.
43
68
 
44
69
 
45
 
Support
46
 
-------
 
70
- Support -
 
71
-----------
47
72
 
48
73
Support for this document is given by the TS version 6.
49
74
 
59
84
The TS6 protocol does not supports masked entities.
60
85
 
61
86
 
62
 
Nick TS rules
63
 
-------------
 
87
- Nick TS rules -
 
88
-----------------
64
89
 
65
90
A server receiving a command that requires nick TS rules must check for a
66
91
collision between an existing user, and the nick in the received message.
80
105
message.
81
106
 
82
107
 
83
 
Nick TS collisions
84
 
------------------
 
108
- Nick TS collisions -
 
109
----------------------
85
110
 
86
111
If both users are to be collided, we must issue a KILL for the existing 
87
112
user to all servers.  If the new user has a UID then we must also issue a 
97
122
back to the server sending us data if the new user has a UID.
98
123
 
99
124
 
100
 
Channel TS rules
101
 
----------------
 
125
- Channel TS rules -
 
126
--------------------
102
127
 
103
128
A server receiving a command that requires normal channel TS rules must 
104
129
apply the following rules to the command.
124
149
ignore any "MODE" commands from a user marked as 'deopped'.
125
150
 
126
151
 
127
 
Simple channel TS rules
128
 
-----------------------
 
152
- Simple channel TS rules -
 
153
---------------------------
129
154
 
130
155
A server receiving a command that requires simple channel TS rules must
131
156
apply the following rules to the command.
138
163
for the modes we are accepting.
139
164
 
140
165
 
141
 
The following commands are defined here as the TS6 protocol
142
 
-----------------------------------------------------------
 
166
- The following commands are defined here as the TS6 protocol -
 
167
---------------------------------------------------------------
143
168
 
144
 
PASS:
145
 
PASS <PASSWORD> TS <TS_CURRENT> :<SID>
 
169
- PASS -
 
170
        PASS <PASSWORD> TS <TS_CURRENT> :<SID>
146
171
 
147
172
This command is used for password verification with the server we are
148
173
connecting to.
155
180
<TS_CURRENT> is our current TS version.  If this field is not present then
156
181
the server does not support TS6.  <SID> is the SID of the server.
157
182
 
158
 
UID:
159
 
:<SID> UID <NICK> <HOPS> <TS> +<UMODE> <USERNAME> <HOSTNAME> <IP> <UID> :<GECOS>
 
183
- UID -
 
184
        :<SID> UID <NICK> <HOPS> <TS> +<UMODE> <USERNAME> <HOSTNAME> <IP> <UID> :<GECOS>
160
185
 
161
186
This command is used for introducing clients to the network.
162
187
 
175
200
 
176
201
A server receiving a UID command must apply nick TS rules to the nick.
177
202
 
178
 
SID:
179
 
:<SID> SID <SERVERNAME> <HOPS> <SID> :<GECOS>
 
203
- SID -
 
204
        :<SID> SID <SERVERNAME> <HOPS> <SID> :<GECOS>
180
205
 
181
206
This command is used for introducing servers to the network.
182
207
 
195
220
Client and servers which do not have a UID/SID must be introduced by old
196
221
methods.
197
222
 
198
 
SJOIN:
199
 
:<SID> SJOIN <TS> <CHANNAME> +<CHANMODES> :<UIDS>
 
223
- SJOIN -
 
224
        :<SID> SJOIN <TS> <CHANNAME> +<CHANMODES> :<UIDS>
200
225
 
201
226
This command is used for introducing users to channels.
202
227
 
215
240
use the "JOIN" command defined in this specification.  A TS6 server must
216
241
still use SJOIN for creating channels.
217
242
 
218
 
JOIN:
219
 
:<UID> JOIN <TS> <CHANNAME> +<CHANMODES>
 
243
- JOIN -
 
244
        :<UID> JOIN <TS> <CHANNAME> +
220
245
 
221
246
This command is used for introducing one user unopped to an existing channel.
222
247
 
223
248
The <UID> field is the UID of the client joining the channel.  The
224
249
<TS> field is the channels current TS, <CHANNAME> is the channels
225
 
current name, <CHANMODES> are the channels current modes.
 
250
current name.
226
251
 
227
252
A server receiving a JOIN must apply normal channel TS rules to the JOIN.
228
253
 
 
254
No channel modes are sent with the JOIN command.  In previous versions of
 
255
this specification, the "+" parameter contained the channels current modes.
 
256
A server following this version of the specification must not interpret this
 
257
argument and must not propagate any value other than "+" for this parameter.
 
258
 
229
259
It should be noted that whilst JOIN would not normally create a 
230
 
channel, during specific race conditions it can.  This can create
231
 
a ban desync that this specification does not rectify.
 
260
channel or lower the timestamp, during specific conditions it can.  This 
 
261
can create a desync that this specification does not rectify.
232
262
 
233
 
BMASK:
234
 
:<SID> BMASK <TS> <CHANNAME> <TYPE> :<MASKS>
 
263
- BMASK -
 
264
        :<SID> BMASK <TS> <CHANNAME> <TYPE> :<MASKS>
235
265
 
236
266
This command is used for bursting channel bans to a network.
237
267
 
252
282
not be possible without a desync, due to it being sent after
253
283
SJOIN.
254
284
 
255
 
TMODE:
256
 
:<UID> TMODE <TS> <CHANNAME> <MODESTRING>
 
285
- TMODE -
 
286
        :<SID|UID> TMODE <TS> <CHANNAME> <MODESTRING>
257
287
 
258
288
This command is used for clients issuing modes on a channel.
259
289
 
260
 
<UID> is the UID of the client setting the mode.  <TS> is the
261
 
current TS of the channel, <CHANNAME> is the channels name.
262
 
<MODESTRING> is the raw mode the client is setting.
 
290
<SID|UID> is either the UID of the client setting the mode, or the SID of
 
291
the server setting the mode.  <TS> is the current TS of the channel, 
 
292
<CHANNAME> is the channels name. <MODESTRING> is the raw mode the client is 
 
293
setting.
263
294
 
264
295
A server receiving a TMODE must apply simple channel TS rules to the TMODE.
265
296
 
266
 
A TS6 server must translate MODEs issued by a local client into TMODE 
267
 
to send to other TS6 capable servers.
 
297
A TS6 server must translate MODEs issued by a local client, or received from
 
298
a server into TMODE to send to other TS6 capable servers.
 
299