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