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