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