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