]> jfr.im git - solanum.git/blob - doc/technical/ts6-protocol.txt
Fix RSFNC parameter order in TS6 protocol document.
[solanum.git] / doc / technical / ts6-protocol.txt
1 TS6 protocol description
2 Written by Jilles Tjoelker
3
4 General format: much like rfc1459
5 Maximum parameters for a command: 15 (this does not include the prefix
6 and command name)
7
8 SID: a server's unique ID. It is configured in each server and consists of
9 a digit and two alphanumerics. Sending SIDs with lowercase letters is
10 questionable.
11
12 UID: a client's unique ID. It consists of the server's SID and six
13 alphanumerics (so it is nine characters long). The first of the alphanumerics
14 should be a letter, numbers are legal but reserved for future use.
15
16 hunted: a parameter type used for various remote requests. From local users,
17 nicknames and server names are accepted, possibly with wildcards; from servers,
18 UIDs/SIDs (sending names or even wildcards is deprecated). This is done with
19 the function hunt_server(). Any rate limiting should be done locally.
20
21 duration: a parameter type used for ban durations. It is a duration in seconds.
22 A value of 0 means a permanent ban.
23
24 propagation: to which other servers the command is sent
25
26 For all commands with a hunted parameter, the propagation is determined by
27 that, and not otherwise specified.
28
29 For all commands with a target server mask parameter, the propagation is
30 determined by that, and not otherwise specified. The command is sent to all
31 servers with names matching the given mask (for example '*', '*.example.com',
32 'irc.example.com'). Those servers do not have to be directly connected.
33 Targets cannot be SIDs.
34
35 Propagation broadcast means the command is sent to all servers.
36
37 Propagation one-to-one means the command is only sent to the target or the
38 server the target is on.
39
40 Propagation none means the command is never sent to another server if it is
41 received.
42
43 For some other commands, the propagation depends on the parameters and is
44 described in text.
45
46 services server: server mentioned in a service{} block. There are no services
47 servers on EFnet.
48
49 service: client with umode +S. This implies that it is on a services server.
50
51 connection setup:
52 The initiator sends the PASS, CAPAB and SERVER messages. Upon receiving the
53 SERVER, the listener will check the information, and if it is valid, it will
54 send its own PASS, CAPAB and SERVER messages, followed by SVINFO and the burst.
55 Upon receiving the SERVER, the initiator will send SVINFO and the burst. If
56 ziplinks are used, SVINFO is the first compressed message.
57
58 The burst consists of SID and SERVER messages for all known servers, BAN
59 messages for all propagated bans, UID or EUID messages for all known users
60 (possibly followed by ENCAP REALHOST, ENCAP LOGIN and/or AWAY) and SJOIN
61 messages for all known channels (possibly followed by BMASK and/or TB).
62
63 user modes:
64 (all)
65 +D (deaf: does not receive channel messages)
66 +S (network service) (only settable on burst from a services server)
67 +a (appears as server administrator)
68 +i (invisible, see rfc1459)
69 +o (IRC operator, see rfc1459)
70 +w (wallops, see rfc1459) (always propagated for historical reasons)
71 (charybdis TS6)
72 +Q/+R/+g/+l/+s/+z (only locally effective)
73 +Z (ssl user) (only settable on burst)
74 possibly more added by modules
75
76 channel modes:
77 (all)
78 statuses
79 +o (prefix @) (ops)
80 +v (prefix +) (voice)
81 type A
82 +b (ban)
83 +e (ban exception) (capab: EX)
84 +I (invite exception) (capab: IE)
85 type B
86 +k (key: password required to join, <= 23 ascii chars, no : or , or whitespace)
87 type C
88 +l (limit: maximum number of members before further joins are disallowed)
89 type D
90 +m (moderated)
91 +n (no external messages)
92 +p (private: does not appear in /whois to non-members, no /knock allowed)
93 +r (only registered users may join) (only if a services server exists) (capab: SERVICES)
94 +s (secret)
95 +t (only chanops may change topic)
96 (charybdis TS6)
97 type A
98 +q (quiet)
99 type C
100 +f (forward: channel name <= 30 chars)
101 +j (join throttle: N:T with integer N and T)
102 type D
103 +F (free target for +f)
104 +L (large ban list)
105 +P (permanent: does not disappear when empty)
106 +Q (ignore forwards to this)
107 +c (strip colours)
108 +g (allow any member to /invite)
109 +z (send messages blocked by +m to chanops)
110
111 <numeric>
112 source: server
113 parameters: target, any...
114
115 The command name should be three decimal ASCII digits.
116
117 Propagates a "numeric" command reply, such as from a remote WHOIS request.
118
119 If the first digit is 0 (indicating a reply about the local connection), it
120 should be changed to 1 before propagation or sending to a user.
121
122 Numerics to the local server may be sent to opers.
123
124 To avoid infinite loops, servers should not send any replies to numerics.
125
126 The target can be:
127 - a client
128 propagation: one-to-one
129 - a channel name
130 propagation: all servers with -D users on the channel
131
132 Numerics to channels are broken in some older servers.
133
134 ADMIN
135 source: user
136 parameters: hunted
137
138 Remote ADMIN request.
139
140 AWAY
141 source: user
142 propagation: broadcast
143 parameters: opt. away reason
144
145 If the away reason is empty or not present, mark the user as not away.
146 Otherwise, mark the user as away.
147
148 Changing away reason from one non-empty string to another non-empty string
149 may not be propagated.
150
151 BAN
152 charybdis TS6
153 capab: BAN
154 source: any
155 propagation: broadcast (restricted)
156 parameters: type, user mask, host mask, creation TS, duration, lifetime, oper, reason
157
158 Propagates a network wide ban.
159
160 The type is K for K:lines, R for resvs and X for X:lines; other types are
161 reserved. The user mask field is only used for K:lines; for resvs and X:lines
162 the field is ignored in input and sent as an asterisk.
163
164 The creation TS indicates when this ban was last modified. An incoming ban MUST
165 be ignored and not propagated if the creation TS is older than the creation TS
166 of the current ban. If the ban is identical, it SHOULD NOT be propagated to
167 avoid unnecessary network traffic. (Two changes to bans that set the TS to the
168 same value may cause desynchronization.)
169
170 The duration is 0 for an unban and relative to the creation TS for a ban.
171 When the duration has passed, the ban is no longer active but it may still
172 be necessary to remember it.
173
174 The lifetime is relative to the creation TS and indicates for how long this
175 ban needs to be remembered and propagated. This MUST be at least the duration.
176 Initially, it is usually set the same as the duration but when the ban is
177 modified later, it SHOULD be set such that the modified ban is remembered at
178 least as long as the original ban. This ensures that the original ban does not
179 revive via split servers. This requirement is only a SHOULD to allow for
180 implementations that only inject bans and do not remember any; implementations
181 that remember and propagate bans MUST set the lifetime appropriately.
182
183 The oper field indicates the oper that originally set the ban. If this message
184 is the initial propagation of a change, it SHOULD be sent as * (an asterisk).
185
186 The reason field indicates the reason for the ban. Any part after a | (vertical
187 bar) MUST NOT be shown to normal users. The rest of the field and the creation
188 TS and duration MAY be shown to normal users.
189
190 BMASK
191 source: server
192 propagation: broadcast
193 parameters: channelTS, channel, type, space separated masks
194
195 If the channelTS in the message is greater (newer) than the current TS of
196 the channel, drop the message and do not propagate it.
197
198 Type is the mode letter of a ban-like mode. In efnet TS6 this is 'b', 'e' or
199 'I'. In charybdis TS6 additionally 'q' is possible.
200
201 Add all the masks to the given list of the channel.
202
203 All ban-like modes must be bursted using this command, not using MODE or TMODE.
204
205 CAPAB
206 source: unregistered server
207 propagation: none
208 parameters: space separated capability list
209
210 Sends capabilities of the server. This must include QS and ENCAP. It is also
211 strongly recommended to include EX, CHW, IE and KNOCK, and for charybdis TS6
212 also SAVE and EUID. For use with services, SERVICES and RSFNC are strongly
213 recommended.
214
215 The capabilities may depend on the configuration for the server they are sent
216 to.
217
218 CHGHOST
219 charybdis TS6
220 source: any
221 propagation: broadcast
222 parameters: client, new hostname
223
224 Changes the visible hostname of a client.
225
226 Opers are notified unless the source is a server or a service.
227
228 CONNECT
229 source: any
230 parameters: server to connect to, port, hunted
231
232 Remote connect request. A server WALLOPS should be sent by the receiving
233 server.
234
235 The port can be 0 for the default port.
236
237 DLINE
238 charybdis TS6
239 encap only
240 source: user
241 parameters: duration, mask, reason
242
243 Sets a D:line (IP ban checked directly after accepting connection).
244
245 The mask must be an IP address or CIDR mask.
246
247 ENCAP
248 source: any
249 parameters: target server mask, subcommand, opt. parameters...
250
251 Sends a command to matching servers. Propagation is independent of
252 understanding the subcommand.
253
254 Subcommands are listed elsewhere with "encap only".
255
256 ERROR
257 source: server or unregistered server
258 propagation: none
259 parameters: error message
260
261 Reports a (usually fatal) error with the connection.
262
263 Error messages may contain IP addresses and have a negative effect on server
264 IP hiding.
265
266 ETRACE
267 encap only
268 encap target: single server
269 source: oper
270 parameters: client
271
272 Remote ETRACE information request.
273
274 EUID
275 charybdis TS6
276 capab: EUID
277 source: server
278 parameters: nickname, hopcount, nickTS, umodes, username, visible hostname, IP address, UID, real hostname, account name, gecos
279 propagation: broadcast
280
281 Introduces a client. The client is on the source server of this command.
282
283 The account name is '0' if the user is not logged in with services.
284
285 Nick TS rules apply.
286
287 EUID is similar to UID but includes the ENCAP REALHOST and ENCAP LOGIN
288 information.
289
290 GCAP
291 encap only
292 encap target: *
293 source: server
294 parameters: space separated capability list
295
296 Capability list of remote server.
297
298 GLINE
299 efnet TS6
300 capab: GLN
301 source: user
302 parameters: user mask, host mask, reason
303 propagation: broadcast
304
305 Propagates a G:line vote. Once votes from three different opers (based on
306 user@host mask) on three different servers have arrived, trigger the G:line.
307 Pending G:lines expire after some time, usually ten minutes. Triggered G:lines
308 expire after a configured time which may differ across servers.
309
310 Requests from server connections must be propagated, unless they are found to
311 be syntactically invalid (e.g. '!' in user mask). Therefore, disabling glines
312 must not affect propagation, and too wide glines, double votes and glines that
313 already exist locally must still be propagated.
314
315 Of course, servers are free to reject gline requests from their own operators.
316
317 GUNGLINE
318 efnet TS6
319 encap only
320 encap target: *
321 source: user
322 parameters: user mask, host mask, reason
323 propagation: broadcast
324
325 Propagates a G:line removal vote. Once three votes have arrived (as with
326 G:lines), remove the G:line. Pending G:lines removals expire after some time,
327 usually ten minutes.
328
329 Pending G:line removals do not interact with pending G:lines. Triggering a
330 G:line does not affect a pending G:line removal. Triggering a G:line removal
331 does not affect a pending G:line.
332
333 INFO
334 source: user
335 parameters: hunted
336
337 Remote INFO request.
338
339 INVITE
340 source: user
341 parameters: target user, channel, opt. channelTS
342 propagation: one-to-one
343
344 Invites a user to a channel.
345
346 If the channelTS is greater (newer) than the current TS of the channel, drop
347 the message.
348
349 Not sending the channelTS parameter is deprecated.
350
351 JOIN
352 1.
353 source: user
354 parameters: '0' (one ASCII zero)
355 propagation: broadcast
356
357 Parts the source user from all channels.
358
359 2.
360 source: user
361 parameters: channelTS, channel, '+' (a plus sign)
362 propagation: broadcast
363
364 Joins the source user to the given channel. If the channel does not exist yet,
365 it is created with the given channelTS and no modes. If the channel already
366 exists and has a greater (newer) TS, wipe all simple modes and statuses and
367 change the TS, notifying local users of this but not servers (note that
368 ban-like modes remain intact; invites may or may not be cleared).
369
370 A JOIN is propagated with the new TS of the channel.
371
372 JUPE
373 capab: JUPE
374 source: any
375 propagation: broadcast (restricted)
376 parameters: target server mask, add or delete, server name, oper, reason
377
378 Adds or removes a jupe for a server. If the server is presently connected,
379 it MUST be SQUIT by the server's uplink when the jupe is applied.
380
381 The oper field indicates the oper that originally set the jupe. If this message
382 is the initial propagation of a removal, it SHOULD be sent as * (an asterisk).
383
384 The reason field indicates the reason for the jupe. It SHOULD be displayed
385 as the linking error message to the juped server if it tries to reconnect.
386
387 KICK
388 source: any
389 parameters: channel, target user, opt. reason
390 propagation: broadcast
391
392 Kicks the target user from the given channel.
393
394 Unless the channel's TS is 0, no check is done whether the source user has ops.
395
396 Not sending the reason parameter is questionable.
397
398 KILL
399 source: any
400 parameters: target user, path
401 propagation: broadcast
402
403 Removes the user from the network.
404
405 The format of the path parameter is some sort of description of the source of
406 the kill followed by a space and a parenthesized reason. To avoid overflow,
407 it is recommended not to add anything to the path.
408
409 KLINE
410 1.
411 encap only
412 source: user
413 parameters: duration, user mask, host mask, reason
414
415 Sets a K:line (ban on user@host).
416
417 2.
418 capab: KLN
419 source: user
420 parameters: target server mask, duration, user mask, host mask, reason
421
422 As form 1, deprecated.
423
424 KNOCK
425 capab: KNOCK
426 source: user
427 parameters: channel
428 propagation: broadcast
429
430 Requests an invite to a channel that is locked somehow (+ikl). Notifies all
431 operators of the channel. (In charybdis, on +g channels all members are
432 notified.)
433
434 This is broadcast so that each server can store when KNOCK was used last on
435 a channel.
436
437 LINKS
438 source: user
439 parameters: hunted, server mask
440
441 Remote LINKS request. The server mask limits which servers are listed.
442
443 LOCOPS
444 1.
445 encap only
446 source: user
447 parameters: text
448
449 Sends a message to operators (with umode +l set). This is intended to be
450 used for strict subsets of the network.
451
452 2.
453 capab: CLUSTER
454 source: user
455 parameters: target server mask, text
456
457 As form 1, deprecated.
458
459 LOGIN
460 encap only
461 source: user
462 parameters: account name
463
464 In a burst, states that the source user is logged in as the account.
465
466 LUSERS
467 source: user
468 parameters: server mask, hunted
469
470 Remote LUSERS request. Most servers ignore the server mask, treating it as '*'.
471
472 MLOCK
473 charybdis TS6
474 source: services server
475 parameters: channelTS, channel, mode letters
476 propagation: broadcast (restricted)
477
478 Propagates a channel mode lock change.
479
480 If the channelTS is greater (newer) than the current TS of the channel, drop
481 the message.
482
483 The final parameter is a list of mode letters that may not be changed by local
484 users. This applies to setting or unsetting simple modes, and changing or
485 removing mode parameters.
486
487 An MLOCK message with no modes disables the MLOCK, therefore the MLOCK message
488 always contains the literal MLOCK for simplicity.
489
490 MODE
491 1.
492 source: user
493 parameters: client, umode changes
494 propagation: broadcast
495
496 Propagates a user mode change. The client parameter must refer to the same user
497 as the source.
498
499 Not all umodes are propagated to other servers.
500
501 2.
502 source: any
503 parameters: channel, cmode changes, opt. cmode parameters...
504
505 Propagates a channel mode change.
506
507 This is deprecated because the channelTS is not included. If it is received,
508 it should be propagated as TMODE.
509
510 MOTD
511 source: user
512 parameters: hunted
513
514 Remote MOTD request.
515
516 NICK
517 1.
518 source: user
519 parameters: new nickname, new nickTS
520 propagation: broadcast
521
522 Propagates a nick change.
523
524 2.
525 source: server
526 parameters: nickname, hopcount, nickTS, umodes, username, hostname, server, gecos
527
528 Historic TS5 user introduction. The user is on the server indicated by the
529 server parameter; the source server is meaningless (local link).
530
531 NICKDELAY
532 charybdis TS6
533 encap only
534 encap target: *
535 source: services server
536 parameters: duration, nickname
537
538 If duration is greater than 0, makes the given nickname unavailable for that
539 time.
540
541 If duration is 0, removes a nick delay entry for the given nickname.
542
543 There may or may not be a client with the given nickname; this does not affect
544 the operation.
545
546 NOTICE
547 source: any
548 parameters: msgtarget, message
549
550 As PRIVMSG, except NOTICE messages are sent out, server sources are permitted
551 and most error messages are suppressed.
552
553 Servers may not send '$$', '$#' and opers@server notices. Older servers may
554 not allow servers to send to specific statuses on a channel.
555
556 OPERSPY
557 encap only
558 encap target: *
559 source: user
560 parameters: command name, parameters
561
562 Reports operspy usage.
563
564 OPERWALL
565 source: user
566 parameters: message
567 propagation: broadcast
568
569 Sends a message to operators (with umode +z set).
570
571 PART
572 source: user
573 parameters: comma separated channel list, message
574
575 Parts the source user from the given channels.
576
577 PASS
578 source: unregistered server
579 parameters: password, 'TS', TS version, SID
580
581 Sends the server link password, TS version and SID.
582
583 PING
584 source: any
585 parameters: origin, opt. destination server
586
587 Sends a PING to the destination server, which will reply with a PONG. If the
588 destination server parameter is not present, the server receiving the message
589 must reply.
590
591 The origin field is not used in the server protocol. It is sent as the name
592 (not UID/SID) of the source.
593
594 Remote PINGs are used for end-of-burst detection, therefore all servers must
595 implement them.
596
597 PONG
598 source: server
599 parameters: origin, destination
600
601 Routes a PONG back to the destination that originally sent the PING.
602
603 PRIVMSG
604 source: user
605 parameters: msgtarget, message
606
607 Sends a normal message (PRIVMSG) to the given target.
608
609 The target can be:
610 - a client
611 propagation: one-to-one
612 - a channel name
613 propagation: all servers with -D users on the channel
614 (cmode +m/+n should be checked everywhere, bans should not be checked
615 remotely)
616 - a status character ('@'/'+') followed by a channel name, to send to users
617 with that status or higher only.
618 capab: CHW
619 propagation: all servers with -D users with appropriate status
620 - '=' followed by a channel name, to send to chanops only, for cmode +z.
621 capab: CHW and EOPMOD
622 propagation: all servers with -D chanops
623 - a user@server message, to send to users on a specific server. The exact
624 meaning of the part before the '@' is not prescribed, except that "opers"
625 allows IRC operators to send to all IRC operators on the server in an
626 unspecified format.
627 propagation: one-to-one
628 - a message to all users on server names matching a mask ('$$' followed by mask)
629 propagation: broadcast
630 Only allowed to IRC operators.
631 - a message to all users with hostnames matching a mask ('$#' followed by mask).
632 Note that this is often implemented poorly.
633 propagation: broadcast
634 Only allowed to IRC operators.
635
636 In charybdis TS6, services may send to any channel and to statuses on any
637 channel.
638
639 PRIVS
640 charybdis TS6
641 encap only
642 encap target: single server
643 source: oper
644 parameters: client
645
646 Remote PRIVS information request.
647
648 QUIT
649 source: user
650 parameters: comment
651
652 Propagates quitting of a client. No QUIT should be sent for a client that
653 has been removed as result of a KILL message.
654
655 REALHOST
656 charybdis TS6
657 encap only
658 encap target: *
659 source: user
660 parameters: real hostname
661
662 In a burst, propagates the real host of a dynamically-spoofed user.
663
664 REHASH
665 charybdis TS6
666 encap only
667 source: user
668 parameters: opt. rehash type
669
670 Remote REHASH request. If the rehash type is omitted, it is equivalent to
671 a regular /rehash, otherwise it is equivalent to /rehash <rehash type>.
672
673 RESV
674 1.
675 encap only
676 source: user
677 parameters: duration, mask, reason
678
679 Sets a RESV, making a nickname mask or exact channel unavailable.
680
681 2.
682 capab: CLUSTER
683 source: user
684 parameters: target server mask, duration, mask, reason
685
686 As form 1, deprecated.
687
688 RSFNC
689 encap only
690 capab: RSFNC
691 encap target: single server
692 source: services server
693 parameters: target user, new nickname, new nickTS, old nickTS
694
695 Forces a nickname change and propagates it.
696
697 The command is ignored if the nick TS of the user is not equal to the old
698 nickTS parameter. If the new nickname already exists (and is not the target
699 user), it is killed first.
700
701 SASL
702 charybdis TS6
703 encap only
704 1.
705 encap target: *
706 source: server
707 parameters: source uid, '*', 'S', sasl mechanism name
708
709 Requests that a SASL agent (a service) initiate the authentication process.
710 The source uid is that of an unregistered client. This is why it is not sent
711 as the prefix.
712
713 2.
714 encap target: single server
715 source: server
716 parameters: source uid, target uid, mode, data
717
718 Part of a SASL authentication exchange. The mode is 'C' to send some data
719 (base64 encoded), or 'S' to end the exchange (data indicates type of
720 termination: 'A' for abort, 'F' for authentication failure, 'S' for
721 authentication success).
722
723 SAVE
724 capab: SAVE
725 source: server
726 propagation: broadcast
727 parameters: target uid, TS
728
729 Resolve a nick collision by changing a nickname to the UID.
730
731 The server should verify that the UID belongs to a registered user, the user
732 does not already have their UID as their nick and the TS matches the user's
733 nickTS. If not, drop the message.
734
735 SAVE should be propagated as a regular NICK change to links without SAVE capab.
736 present.
737
738 SERVER
739 1.
740 source: unregistered server
741 parameters: server name, hopcount, server description
742
743 Registers the connection as a server. PASS and CAPAB must have been sent
744 before, SVINFO should be sent afterwards.
745
746 If there is no such server configured or authentication failed, the connection
747 should be dropped.
748
749 This is propagated as a SID message.
750
751 2.
752 source: server
753 propagation: broadcast
754 parameters: server name, hopcount, server description
755
756 Introduces a new TS5 server, directly connected to the source of this command.
757 This is only used for jupes as TS5 servers may do little else than existing.
758
759 SID
760 source: server
761 propagation: broadcast
762 parameters: server name, hopcount, sid, server description
763
764 Introduces a new server, directly connected to the source of this command.
765
766 SIGNON
767 source: user
768 propagation: broadcast
769 parameters: new nickname, new username, new visible hostname, new nickTS, new login name
770
771 Broadcasts a change of several user parameters at once.
772
773 Currently only sent after an SVSLOGIN.
774
775 SJOIN
776 source: server
777 propagation: broadcast
778 parameters: channelTS, simple modes, opt. mode parameters..., nicklist
779
780 Broadcasts a channel creation or bursts a channel.
781
782 The nicklist consists of users joining the channel, with status prefixes for
783 their status ('@+', '@', '+' or ''), for example:
784 '@+1JJAAAAAB +2JJAAAA4C 1JJAAAADS'. All users must be behind the source server
785 so it is not possible to use this message to force users to join a channel.
786
787 The interpretation depends on the channelTS and the current TS of the channel.
788 If either is 0, set the channel's TS to 0 and accept all modes. Otherwise, if
789 the incoming channelTS is greater (newer), ignore the incoming simple modes
790 and statuses and join and propagate just the users. If the incoming channelTS
791 is lower (older), wipe all modes and change the TS, notifying local users of
792 this but not servers (invites may be cleared). In the latter case, kick on
793 split riding may happen: if the key (+k) differs or the incoming simple modes
794 include +i, kick all local users, sending KICK messages to servers.
795
796 An SJOIN is propagated with the new TS and modes of the channel. The statuses
797 are propagated if and only if they were accepted.
798
799 SJOIN must be used to propagate channel creation and in netbursts. For regular
800 users joining channels, JOIN must be used. Pseudoservers may use SJOIN to join
801 a user with ops.
802
803 SNOTE
804 charybdis TS6
805 encap only
806 source: server
807 parameters: snomask letter, text
808
809 Sends the text as a server notice from the source server to opers with the
810 given snomask set.
811
812 SQUIT
813 parameters: target server, comment
814
815 Removes the target server and all servers and users behind it from the network.
816
817 If the target server is the receiving server or the local link this came from,
818 this is an announcement that the link is being closed.
819
820 Otherwise, if the target server is locally connected, the server should send
821 a WALLOPS announcing the SQUIT.
822
823 STATS
824 source: user
825 parameters: stats letter, hunted
826
827 Remote STATS request. Privileges are checked on the server executing the
828 actual request.
829
830 SU
831 encap only
832 encap target: *
833 source: services server
834 parameters: target user, new login name (optional)
835
836 If the new login name is not present or empty, mark the target user as not
837 logged in, otherwise mark the target user as logged in as the given account.
838
839 SVINFO
840 source: server
841 propagation: none
842 parameters: current TS version, minimum TS version, '0', current time
843
844 Verifies TS protocol compatibility and clock. If anything is not in order,
845 the link is dropped.
846
847 The current TS version is the highest version supported by the source server
848 and the minimum TS version is the lowest version supported.
849
850 The current time is sent as a TS in the usual way.
851
852 SVSLOGIN
853 charybdis TS6
854 encap only
855 encap target: single server
856 source: services server
857 parameters: target, new nick, new username, new visible hostname, new login name
858
859 Sent after successful SASL authentication.
860
861 The target is a UID, typically an unregistered one.
862
863 Any of the "new" parameters can be '*' to leave the corresponding field
864 unchanged. The new login name can be '0' to log the user out.
865
866 If the UID is registered on the network, a SIGNON with the changes will be
867 broadcast, otherwise the changes will be stored, to be used when registration
868 completes.
869
870 TB
871 capab: TB
872 source: server
873 propagation: broadcast
874 parameters: channel, topicTS, opt. topic setter, topic
875
876 Propagates a channel topic as part of a burst.
877
878 If the channel had no topic yet or the topicTS in the message is older than
879 the topicTS of the current topic on the channel and the topics differ, set
880 the topic with topicTS and topic setter, and propagate the message. Otherwise
881 ignore the message and do not propagate it.
882
883 If the topic setter is not present, use a server name instead.
884
885 TIME
886 source: user
887 parameters: hunted
888
889 Remote TIME request.
890
891 TMODE
892 source: any
893 parameters: channelTS, channel, cmode changes, opt. cmode parameters...
894
895 Propagates a channel mode change.
896
897 If the channelTS is greater (newer) than the current TS of the channel, drop
898 the message.
899
900 On input, only the limit on parameters per line restricts how many cmode
901 parameters can be present. Apart from this, arbitrary modes shall be
902 processed. Redundant modes may be dropped. For example, +n-n may be applied and
903 propagated as +n-n, -n or (if the channel was already -n) nothing, but not as
904 +n.
905
906 The parameter for mode -k (removing a key) shall be ignored.
907
908 On output, at most ten cmode parameters should be sent; if there are more,
909 multiple TMODE messages should be sent.
910
911 TOPIC
912 source: user
913 propagation: broadcast
914 parameters: channel, topic
915
916 Propagates a channel topic change. The server may verify that the source has
917 ops in the channel.
918
919 The topicTS shall be set to the current time and the topic setter shall be
920 set indicating the source user. Note that this means that the topicTS of a
921 topic set with TOPIC is not necessarily consistent across the network.
922
923 TRACE
924 source: user
925 1.
926 parameters: hunted
927
928 Performs a trace to the target, sending 200 numerics from each server passing
929 the message on. The target server sends a description of the target followed
930 by a 262 numeric.
931
932 TRACE, STATS l and STATS L are the only commands using hunt_server that use the
933 hunted parameter for more than just determining which server the command
934 should be executed on.
935
936 2.
937 parameters: target name, hunted
938
939 Executes a trace command on the target server. No 200 numerics are sent.
940 The target name is a name, not a UID, and should be on the target server.
941
942 UID
943 source: server
944 propagation: broadcast
945 parameters: nickname, hopcount, nickTS, umodes, username, visible hostname, IP address, UID, gecos
946 propagation: broadcast
947
948 Introduces a client. The client is on the source server of this command.
949
950 Nick TS rules apply.
951
952 UNDLINE
953 charybdis TS6
954 encap only
955 source: user
956 parameters: mask
957
958 Removes a D:line (IP ban checked directly after accepting connection).
959
960 The mask must be an IP address or CIDR mask.
961
962 UNKLINE
963 1.
964 encap only
965 source: user
966 parameters: user mask, host mask
967
968 Removes a K:line (ban on user@host).
969
970 2.
971 capab: UNKLN
972 source: user
973 parameters: target server mask, user mask, host mask
974
975 As form 1, deprecated.
976
977 UNRESV
978 1.
979 encap only
980 source: user
981 parameters: mask
982
983 Removes a RESV.
984
985 2.
986 capab: CLUSTER
987 source: user
988 parameters: target server mask, mask
989
990 As form 1, deprecated.
991
992 UNXLINE
993 1.
994 encap only
995 source: user
996 parameters: mask
997
998 Removes an X:line (ban on realname).
999
1000 2.
1001 capab: CLUSTER
1002 source: user
1003 parameters: target server mask, mask
1004
1005 As form 1, deprecated.
1006
1007 USERS
1008 source: user
1009 parameters: hunted
1010
1011 Remote USERS request.
1012
1013 VERSION
1014 source: any
1015 parameters: hunted
1016
1017 Remote VERSION request.
1018
1019 WALLOPS
1020 1.
1021 source: user
1022 parameters: message
1023 propagation: broadcast
1024
1025 In efnet TS6, sends a message to operators (with umode +z set). This is a
1026 deprecated equivalent to OPERWALL.
1027
1028 In charybdis TS6, sends a message to local users with umode +w set (or possibly
1029 another indication that WALLOPS messages should be sent), including non-opers.
1030
1031 2.
1032 source: server
1033 parameters: message
1034 propagation: broadcast
1035
1036 Sends a message to local users with umode +w set (or possibly another
1037 indication that WALLOPS messages should be sent).
1038
1039 In efnet TS6 this may include non-opers, in charybdis TS6 this may only be
1040 sent to opers.
1041
1042 WHOIS
1043 source: user
1044 parameters: hunted, target nick
1045
1046 Remote WHOIS request.
1047
1048 XLINE
1049 1.
1050 encap only
1051 source: user
1052 parameters: duration, mask, reason
1053
1054 Sets an X:line (ban on realname).
1055
1056 2.
1057 capab: CLUSTER
1058 source: user
1059 parameters: target server mask, duration, mask, reason
1060
1061 As form 1, deprecated.
1062
1063 Local only commands (charybdis 3.1):
1064
1065 ACCEPT
1066 AUTHENTICATE
1067 CAP
1068 CHALLENGE
1069 CHANTRACE
1070 CLOSE
1071 CNOTICE
1072 CPRIVMSG
1073 DIE
1074 GET
1075 HELP
1076 ISON
1077 LIST
1078 MAP
1079 MASKTRACE
1080 MODLIST
1081 MODLOAD
1082 MODRELOAD
1083 MODRESTART
1084 MODUNLOAD
1085 MONITOR
1086 NAMES
1087 OPER
1088 POST
1089 PUT
1090 RESTART
1091 SCAN
1092 SET
1093 TESTGECOS
1094 TESTLINE
1095 TESTMASK
1096 UHELP
1097 UNREJECT
1098 USER
1099 USERHOST
1100 WEBIRC
1101 WHO
1102 WHOWAS