]> jfr.im git - irc/rqf/shadowircd.git/blob - doc/technical/ts6-protocol.txt
struct Channel: add mode_lock structure to the channel object.
[irc/rqf/shadowircd.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 KICK
373 source: any
374 parameters: channel, target user, opt. reason
375 propagation: broadcast
376
377 Kicks the target user from the given channel.
378
379 Unless the channel's TS is 0, no check is done whether the source user has ops.
380
381 Not sending the reason parameter is questionable.
382
383 KILL
384 source: any
385 parameters: target user, path
386 propagation: broadcast
387
388 Removes the user from the network.
389
390 The format of the path parameter is some sort of description of the source of
391 the kill followed by a space and a parenthesized reason. To avoid overflow,
392 it is recommended not to add anything to the path.
393
394 KLINE
395 1.
396 encap only
397 source: user
398 parameters: duration, user mask, host mask, reason
399
400 Sets a K:line (ban on user@host).
401
402 2.
403 capab: KLN
404 source: user
405 parameters: target server mask, duration, user mask, host mask, reason
406
407 As form 1, deprecated.
408
409 KNOCK
410 capab: KNOCK
411 source: user
412 parameters: channel
413 propagation: broadcast
414
415 Requests an invite to a channel that is locked somehow (+ikl). Notifies all
416 operators of the channel. (In charybdis, on +g channels all members are
417 notified.)
418
419 This is broadcast so that each server can store when KNOCK was used last on
420 a channel.
421
422 LINKS
423 source: user
424 parameters: hunted, server mask
425
426 Remote LINKS request. The server mask limits which servers are listed.
427
428 LOCOPS
429 1.
430 encap only
431 source: user
432 parameters: text
433
434 Sends a message to operators (with umode +l set). This is intended to be
435 used for strict subsets of the network.
436
437 2.
438 capab: CLUSTER
439 source: user
440 parameters: target server mask, text
441
442 As form 1, deprecated.
443
444 LOGIN
445 encap only
446 source: user
447 parameters: account name
448
449 In a burst, states that the source user is logged in as the account.
450
451 LUSERS
452 source: user
453 parameters: server mask, hunted
454
455 Remote LUSERS request. Most servers ignore the server mask, treating it as '*'.
456
457 MODE
458 1.
459 source: user
460 parameters: client, umode changes
461 propagation: broadcast
462
463 Propagates a user mode change. The client parameter must refer to the same user
464 as the source.
465
466 Not all umodes are propagated to other servers.
467
468 2.
469 source: any
470 parameters: channel, cmode changes, opt. cmode parameters...
471
472 Propagates a channel mode change.
473
474 This is deprecated because the channelTS is not included. If it is received,
475 it should be propagated as TMODE.
476
477 MOTD
478 source: user
479 parameters: hunted
480
481 Remote MOTD request.
482
483 NICK
484 1.
485 source: user
486 parameters: new nickname, new nickTS
487 propagation: broadcast
488
489 Propagates a nick change.
490
491 2.
492 source: server
493 parameters: nickname, hopcount, nickTS, umodes, username, hostname, server, gecos
494
495 Historic TS5 user introduction. The user is on the server indicated by the
496 server parameter; the source server is meaningless (local link).
497
498 NICKDELAY
499 charybdis TS6
500 encap only
501 encap target: *
502 source: services server
503 parameters: duration, nickname
504
505 If duration is greater than 0, makes the given nickname unavailable for that
506 time.
507
508 If duration is 0, removes a nick delay entry for the given nickname.
509
510 There may or may not be a client with the given nickname; this does not affect
511 the operation.
512
513 NOTICE
514 source: any
515 parameters: msgtarget, message
516
517 As PRIVMSG, except NOTICE messages are sent out, server sources are permitted
518 and most error messages are suppressed.
519
520 Servers may not send '$$', '$#' and opers@server notices. Older servers may
521 not allow servers to send to specific statuses on a channel.
522
523 OPERSPY
524 encap only
525 encap target: *
526 source: user
527 parameters: command name, parameters
528
529 Reports operspy usage.
530
531 OPERWALL
532 source: user
533 parameters: message
534 propagation: broadcast
535
536 Sends a message to operators (with umode +z set).
537
538 PART
539 source: user
540 parameters: comma separated channel list, message
541
542 Parts the source user from the given channels.
543
544 PASS
545 source: unregistered server
546 parameters: password, 'TS', TS version, SID
547
548 Sends the server link password, TS version and SID.
549
550 PING
551 source: any
552 parameters: origin, opt. destination server
553
554 Sends a PING to the destination server, which will reply with a PONG. If the
555 destination server parameter is not present, the server receiving the message
556 must reply.
557
558 The origin field is not used in the server protocol. It is sent as the name
559 (not UID/SID) of the source.
560
561 Remote PINGs are used for end-of-burst detection, therefore all servers must
562 implement them.
563
564 PONG
565 source: server
566 parameters: origin, destination
567
568 Routes a PONG back to the destination that originally sent the PING.
569
570 PRIVMSG
571 source: user
572 parameters: msgtarget, message
573
574 Sends a normal message (PRIVMSG) to the given target.
575
576 The target can be:
577 - a client
578 propagation: one-to-one
579 - a channel name
580 propagation: all servers with -D users on the channel
581 (cmode +m/+n should be checked everywhere, bans should not be checked
582 remotely)
583 - a status character ('@'/'+') followed by a channel name, to send to users
584 with that status or higher only.
585 capab: CHW
586 propagation: all servers with -D users with appropriate status
587 - '=' followed by a channel name, to send to chanops only, for cmode +z.
588 capab: CHW and EOPMOD
589 propagation: all servers with -D chanops
590 - a user@server message, to send to users on a specific server. The exact
591 meaning of the part before the '@' is not prescribed, except that "opers"
592 allows IRC operators to send to all IRC operators on the server in an
593 unspecified format.
594 propagation: one-to-one
595 - a message to all users on server names matching a mask ('$$' followed by mask)
596 propagation: broadcast
597 Only allowed to IRC operators.
598 - a message to all users with hostnames matching a mask ('$#' followed by mask).
599 Note that this is often implemented poorly.
600 propagation: broadcast
601 Only allowed to IRC operators.
602
603 In charybdis TS6, services may send to any channel and to statuses on any
604 channel.
605
606 PRIVS
607 charybdis TS6
608 encap only
609 encap target: single server
610 source: oper
611 parameters: client
612
613 Remote PRIVS information request.
614
615 QUIT
616 source: user
617 parameters: comment
618
619 Propagates quitting of a client. No QUIT should be sent for a client that
620 has been removed as result of a KILL message.
621
622 REALHOST
623 charybdis TS6
624 encap only
625 encap target: *
626 source: user
627 parameters: real hostname
628
629 In a burst, propagates the real host of a dynamically-spoofed user.
630
631 REHASH
632 charybdis TS6
633 encap only
634 source: user
635 parameters: opt. rehash type
636
637 Remote REHASH request. If the rehash type is omitted, it is equivalent to
638 a regular /rehash, otherwise it is equivalent to /rehash <rehash type>.
639
640 RESV
641 1.
642 encap only
643 source: user
644 parameters: duration, mask, reason
645
646 Sets a RESV, making a nickname mask or exact channel unavailable.
647
648 2.
649 capab: CLUSTER
650 source: user
651 parameters: target server mask, duration, mask, reason
652
653 As form 1, deprecated.
654
655 RSFNC
656 encap only
657 capab: RSFNC
658 encap target: single server
659 source: services server
660 parameters: target user, new nickname, old nickTS, new nickTS
661
662 Forces a nickname change and propagates it.
663
664 The command is ignored if the nick TS of the user is not equal to the old
665 nickTS parameter. If the new nickname already exists (and is not the target
666 user), it is killed first.
667
668 SASL
669 charybdis TS6
670 encap only
671 1.
672 encap target: *
673 source: server
674 parameters: source uid, '*', 'S', sasl mechanism name
675
676 Requests that a SASL agent (a service) initiate the authentication process.
677 The source uid is that of an unregistered client. This is why it is not sent
678 as the prefix.
679
680 2.
681 encap target: single server
682 source: server
683 parameters: source uid, target uid, mode, data
684
685 Part of a SASL authentication exchange. The mode is 'C' to send some data
686 (base64 encoded), or 'S' to end the exchange (data indicates type of
687 termination: 'A' for abort, 'F' for authentication failure, 'S' for
688 authentication success).
689
690 SAVE
691 capab: SAVE
692 source: server
693 propagation: broadcast
694 parameters: target uid, TS
695
696 Resolve a nick collision by changing a nickname to the UID.
697
698 The server should verify that the UID belongs to a registered user, the user
699 does not already have their UID as their nick and the TS matches the user's
700 nickTS. If not, drop the message.
701
702 SAVE should be propagated as a regular NICK change to links without SAVE capab.
703 present.
704
705 SERVER
706 1.
707 source: unregistered server
708 parameters: server name, hopcount, server description
709
710 Registers the connection as a server. PASS and CAPAB must have been sent
711 before, SVINFO should be sent afterwards.
712
713 If there is no such server configured or authentication failed, the connection
714 should be dropped.
715
716 This is propagated as a SID message.
717
718 2.
719 source: server
720 propagation: broadcast
721 parameters: server name, hopcount, server description
722
723 Introduces a new TS5 server, directly connected to the source of this command.
724 This is only used for jupes as TS5 servers may do little else than existing.
725
726 SID
727 source: server
728 propagation: broadcast
729 parameters: server name, hopcount, sid, server description
730
731 Introduces a new server, directly connected to the source of this command.
732
733 SIGNON
734 source: user
735 propagation: broadcast
736 parameters: new nickname, new username, new visible hostname, new nickTS, new login name
737
738 Broadcasts a change of several user parameters at once.
739
740 Currently only sent after an SVSLOGIN.
741
742 SJOIN
743 source: server
744 propagation: broadcast
745 parameters: channelTS, simple modes, opt. mode parameters..., nicklist
746
747 Broadcasts a channel creation or bursts a channel.
748
749 The nicklist consists of users joining the channel, with status prefixes for
750 their status ('@+', '@', '+' or ''), for example:
751 '@+1JJAAAAAB +2JJAAAA4C 1JJAAAADS'. All users must be behind the source server
752 so it is not possible to use this message to force users to join a channel.
753
754 The interpretation depends on the channelTS and the current TS of the channel.
755 If either is 0, set the channel's TS to 0 and accept all modes. Otherwise, if
756 the incoming channelTS is greater (newer), ignore the incoming simple modes
757 and statuses and join and propagate just the users. If the incoming channelTS
758 is lower (older), wipe all modes and change the TS, notifying local users of
759 this but not servers (invites may be cleared). In the latter case, kick on
760 split riding may happen: if the key (+k) differs or the incoming simple modes
761 include +i, kick all local users, sending KICK messages to servers.
762
763 An SJOIN is propagated with the new TS and modes of the channel. The statuses
764 are propagated if and only if they were accepted.
765
766 SJOIN must be used to propagate channel creation and in netbursts. For regular
767 users joining channels, JOIN must be used. Pseudoservers may use SJOIN to join
768 a user with ops.
769
770 SNOTE
771 charybdis TS6
772 encap only
773 source: server
774 parameters: snomask letter, text
775
776 Sends the text as a server notice from the source server to opers with the
777 given snomask set.
778
779 SQUIT
780 parameters: target server, comment
781
782 Removes the target server and all servers and users behind it from the network.
783
784 If the target server is the receiving server or the local link this came from,
785 this is an announcement that the link is being closed.
786
787 Otherwise, if the target server is locally connected, the server should send
788 a WALLOPS announcing the SQUIT.
789
790 STATS
791 source: user
792 parameters: stats letter, hunted
793
794 Remote STATS request. Privileges are checked on the server executing the
795 actual request.
796
797 SU
798 encap only
799 encap target: *
800 source: services server
801 parameters: target user, new login name (optional)
802
803 If the new login name is not present or empty, mark the target user as not
804 logged in, otherwise mark the target user as logged in as the given account.
805
806 SVINFO
807 source: server
808 propagation: none
809 parameters: current TS version, minimum TS version, '0', current time
810
811 Verifies TS protocol compatibility and clock. If anything is not in order,
812 the link is dropped.
813
814 The current TS version is the highest version supported by the source server
815 and the minimum TS version is the lowest version supported.
816
817 The current time is sent as a TS in the usual way.
818
819 SVSLOGIN
820 charybdis TS6
821 encap only
822 encap target: single server
823 source: services server
824 parameters: target, new nick, new username, new visible hostname, new login name
825
826 Sent after successful SASL authentication.
827
828 The target is a UID, typically an unregistered one.
829
830 Any of the "new" parameters can be '*' to leave the corresponding field
831 unchanged. The new login name can be '0' to log the user out.
832
833 If the UID is registered on the network, a SIGNON with the changes will be
834 broadcast, otherwise the changes will be stored, to be used when registration
835 completes.
836
837 TB
838 capab: TB
839 source: server
840 propagation: broadcast
841 parameters: channel, topicTS, opt. topic setter, topic
842
843 Propagates a channel topic as part of a burst.
844
845 If the channel had no topic yet or the topicTS in the message is older than
846 the topicTS of the current topic on the channel and the topics differ, set
847 the topic with topicTS and topic setter, and propagate the message. Otherwise
848 ignore the message and do not propagate it.
849
850 If the topic setter is not present, use a server name instead.
851
852 TIME
853 source: user
854 parameters: hunted
855
856 Remote TIME request.
857
858 TMODE
859 source: any
860 parameters: channelTS, channel, cmode changes, opt. cmode parameters...
861
862 Propagates a channel mode change.
863
864 If the channelTS is greater (newer) than the current TS of the channel, drop
865 the message.
866
867 On input, only the limit on parameters per line restricts how many cmode
868 parameters can be present. Apart from this, arbitrary modes shall be
869 processed. Redundant modes may be dropped. For example, +n-n may be applied and
870 propagated as +n-n, -n or (if the channel was already -n) nothing, but not as
871 +n.
872
873 The parameter for mode -k (removing a key) shall be ignored.
874
875 On output, at most ten cmode parameters should be sent; if there are more,
876 multiple TMODE messages should be sent.
877
878 TOPIC
879 source: user
880 propagation: broadcast
881 parameters: channel, topic
882
883 Propagates a channel topic change. The server may verify that the source has
884 ops in the channel.
885
886 The topicTS shall be set to the current time and the topic setter shall be
887 set indicating the source user. Note that this means that the topicTS of a
888 topic set with TOPIC is not necessarily consistent across the network.
889
890 TRACE
891 source: user
892 1.
893 parameters: hunted
894
895 Performs a trace to the target, sending 200 numerics from each server passing
896 the message on. The target server sends a description of the target followed
897 by a 262 numeric.
898
899 TRACE, STATS l and STATS L are the only commands using hunt_server that use the
900 hunted parameter for more than just determining which server the command
901 should be executed on.
902
903 2.
904 parameters: target name, hunted
905
906 Executes a trace command on the target server. No 200 numerics are sent.
907 The target name is a name, not a UID, and should be on the target server.
908
909 UID
910 source: server
911 propagation: broadcast
912 parameters: nickname, hopcount, nickTS, umodes, username, visible hostname, IP address, UID, gecos
913 propagation: broadcast
914
915 Introduces a client. The client is on the source server of this command.
916
917 Nick TS rules apply.
918
919 UNDLINE
920 charybdis TS6
921 encap only
922 source: user
923 parameters: mask
924
925 Removes a D:line (IP ban checked directly after accepting connection).
926
927 The mask must be an IP address or CIDR mask.
928
929 UNKLINE
930 1.
931 encap only
932 source: user
933 parameters: user mask, host mask
934
935 Removes a K:line (ban on user@host).
936
937 2.
938 capab: UNKLN
939 source: user
940 parameters: target server mask, user mask, host mask
941
942 As form 1, deprecated.
943
944 UNRESV
945 1.
946 encap only
947 source: user
948 parameters: mask
949
950 Removes a RESV.
951
952 2.
953 capab: CLUSTER
954 source: user
955 parameters: target server mask, mask
956
957 As form 1, deprecated.
958
959 UNXLINE
960 1.
961 encap only
962 source: user
963 parameters: mask
964
965 Removes an X:line (ban on realname).
966
967 2.
968 capab: CLUSTER
969 source: user
970 parameters: target server mask, mask
971
972 As form 1, deprecated.
973
974 USERS
975 source: user
976 parameters: hunted
977
978 Remote USERS request.
979
980 VERSION
981 source: any
982 parameters: hunted
983
984 Remote VERSION request.
985
986 WALLOPS
987 1.
988 source: user
989 parameters: message
990 propagation: broadcast
991
992 In efnet TS6, sends a message to operators (with umode +z set). This is a
993 deprecated equivalent to OPERWALL.
994
995 In charybdis TS6, sends a message to local users with umode +w set (or possibly
996 another indication that WALLOPS messages should be sent), including non-opers.
997
998 2.
999 source: server
1000 parameters: message
1001 propagation: broadcast
1002
1003 Sends a message to local users with umode +w set (or possibly another
1004 indication that WALLOPS messages should be sent).
1005
1006 In efnet TS6 this may include non-opers, in charybdis TS6 this may only be
1007 sent to opers.
1008
1009 WHOIS
1010 source: user
1011 parameters: hunted, target nick
1012
1013 Remote WHOIS request.
1014
1015 XLINE
1016 1.
1017 encap only
1018 source: user
1019 parameters: duration, mask, reason
1020
1021 Sets an X:line (ban on realname).
1022
1023 2.
1024 capab: CLUSTER
1025 source: user
1026 parameters: target server mask, duration, mask, reason
1027
1028 As form 1, deprecated.
1029
1030 Local only commands (charybdis 3.1):
1031
1032 ACCEPT
1033 AUTHENTICATE
1034 CAP
1035 CHALLENGE
1036 CHANTRACE
1037 CLOSE
1038 CNOTICE
1039 CPRIVMSG
1040 DIE
1041 GET
1042 HELP
1043 ISON
1044 LIST
1045 MAP
1046 MASKTRACE
1047 MODLIST
1048 MODLOAD
1049 MODRELOAD
1050 MODRESTART
1051 MODUNLOAD
1052 MONITOR
1053 NAMES
1054 OPER
1055 POST
1056 PUT
1057 RESTART
1058 SCAN
1059 SET
1060 TESTGECOS
1061 TESTLINE
1062 TESTMASK
1063 UHELP
1064 UNREJECT
1065 USER
1066 USERHOST
1067 WEBIRC
1068 WHO
1069 WHOWAS