97
97
clients using UTF-8, which should be the default today.
100
- <http://ngircd.barton.de/doc/Protocol.txt>
100
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
101
- IRC+, doc/Protocol.txt
105
NICK <nickname> [<hops>]
106
NICK <nickname> <hops> <username> <host> <servertoken> <usermodes> <realname>
106
Change your nickname to <nick>.
108
Set or change the <nickname> of a client (first form) and register
109
remote clients (second and third form; servers only).
112
- RFC 1459, 4.1.2 "Nick message" (old client and server protocol)
113
- RFC 2812, 3.1.2 "Nick message" (client protocol)
114
- RFC 2813, 4.1.3 "Nick" (server protocol)
109
118
PASS <password> <version> <flags> [<options>]
111
Set a connection <password>. This command must be sent before the
112
NICK/USER registration combination.
120
Set a connection <password>. This command must be the first command
121
sent to the server, even before the NICK/USER or SERVER commands.
114
See doc/Protocol.txt for more info.
123
The first form is used by user sessions or (old) RFC 1459 servers,
124
the second form is used by RFC 2812 or IRC+ compliant servers and
125
enables the server to indicate its version and supported protocol
129
- RFC 1459, 4.1.1 "Password message" (old client and server protocol)
130
- RFC 2812, 3.1.1 "Password message" (client protocol)
131
- RFC 2813, 4.1.1 "Password message" (server protocol)
132
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
133
- IRC+, doc/Protocol.txt
117
PING <server1> [<server2>]
119
Tests the presence of a connection. A PING message results in a PONG
120
reply. If <server2> is specified, the message gets passed on to it.
136
PING <token> [<target>]
138
Tests the presence of a connection to a client or server.
140
If no <target> has been given, the local server is used. User clients
141
can only use other servers as <target>, no user clients.
143
A PING message results in a PONG reply containing the <token>, which
144
can be arbitrary text.
147
The RFCs state that the <token> parameter is used to specify the
148
origin of the PING command when forwarded in the network, but this
149
is not the case: the sender is specified using the prefix as usual,
150
and the parameter is used to identify the PONG reply in practice.
153
- RFC 2812, 3.7.2 "Ping message"
123
PONG <server1> [<server2>]
125
This command is a reply to the PING command and works in much the
156
PONG <target> [<token>]
158
Reply to a "PING" command, indicate that the connection is alive.
160
The <token> is the arbitrary text received in the "PING" command and
161
can be used to identify the correct PONG sent as answer.
163
When the "PONG" command is received from a user session, the <target>
164
parameter is ignored; otherwise the PONG is forwarded to this client.
167
- RFC 2812, 3.7.3 "Pong message"
129
170
QUIT [<quit-message>]
131
End IRC session and disconnect from the server.
133
If a <quit-message> has been given, it is displayed to all the
134
channels that you are a member of when leaving.
172
Terminate a user session.
174
When received from a user, the server acknowledges this by sending
175
an "ERROR" message back to the client and terminates the connection.
177
When a <quit-message> has been given, it is sent to all the channels
178
that the client is a member of when leaving.
181
- RFC 2812, 3.1.7 "Quit"
182
- RFC 2813, 4.1.5 "Quit"
137
USER <user> <modes> <realname>
139
This command is used at the beginning of a connection to specify the
140
<user>name, hostname, <realname> and initial user <modes> of the
143
<realname> may contain spaces, and thus must be prefixed with a colon.
185
USER <username> <hostname> <unused> <realname>
187
Register (and authenticate) a new user session with a short <username>
188
and a human-readable <realname>.
190
The parameter <hostname> is only used when received by an other server
191
and ignored otherwise; and the parameter <unused> is always ignored.
192
But both parameters are required on each invocation by the protocol
193
and can be set to arbitrary characters/text when not used.
195
If <username> contains an "@" character, the full <username> is used
196
for authentication, but only the first part up to this character is
197
set as "user name" for this session.
200
- RFC 2812, 3.1.3 "User message"
203
WEBIRC <password> <username> <hostname> <ip-address>
205
Allow Web-to-IRC gateway software (for example) to set the correct
206
user name and host name of users instead of their own.
208
It must be the very first command sent to the server, even before
209
USER and NICK commands!
211
The <password> must be set in the server configuration file to prevent
212
unauthorized clients to fake their identity; it is an arbitrary string.
215
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
216
- IRC+, doc/Protocol.txt
173
246
ngIRCd replies using "NOTICE" commands like ircd 2.10/2.11; other
174
247
implementations are using numerics 704, 705, and 706.
178
MODE <nickname> <flags> (user)
179
MODE <channel> <flags> [<args>]
181
The MODE command is dual-purpose. It can be used to set both (user) and
184
See doc/Modes.txt for more information.
250
MODE <nickname> [{+|-}<mode>[<mode>] [{+|-}<mode>[<mode>] [...]]]
251
MODE <channel> [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [...]]]
253
Set and get user and channel modes.
255
When no mode parameters are given, the currently set user or channel
256
modes are returned. Otherwise the modes are adjusted accordingly
257
and the changes will be reported back to the client.
259
All user and channel "modes" are indicated by single case-sensitive
262
Please note that a user can only get and set his own modes, and not
263
all user "levels" are allowed to change all channel modes ...
265
The mode parameters can become quite complex, especially when dealing
266
with channel modes that require additional arguments:
268
{+|-}<mode(s}> -- set or unset one or more modes.
269
+<mode(s)> -<mode(s)> -- set some modes and unset others.
270
+<modes> <arg1> <arg2> -- set (at least) two modes with arguments.
274
MODE nick +i -- set user to "invisible".
275
MODE #chan +tn -- set "topic lock" and "no external messages".
276
MODE #chan -t +l 50 -- remove "topic lock", set "user limit" to 50.
277
MODE #chan +ov nick1 nick2 -- set "channel op" and "voice" mode
278
to nick1 and nick2 in channel #chan.
280
A complete list of all modes supported by ngIRCd can be found online
281
here: <http://ngircd.barton.de/doc/Modes.txt>.
284
- RFC 2811, 4. "Channel Modes"
285
- RFC 2812, 3.1.5 "User mode message"
286
- RFC 2812, 3.2.3 "Channel mode message"
287
- <http://ngircd.barton.de/doc/Modes.txt>
187
NOTICE <target> <notice>
189
Send <notice> to <target> (nick or channel).
191
This command works similarly to PRIVMSG, except automatic replies must
192
never be sent in reply to NOTICE messages.
291
NOTICE <target>[,<target>[,...]] <message>
293
Send a <message> to a given <target>, which can be a user or a
294
channel, but DON'T report any error.
296
The "NOTICE" command exactly behaves like the "PRIVMSG" command, but
297
doesn't report any errors it encounters (like an unknown <target>).
298
Please see the help text of the "PRIVMSG" command for a detailed
299
description of the parameters!
302
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
303
- RFC 2812, 3.3 "Sending messages"
304
- RFC 2812, 3.3.2 "Notice"
195
PRIVMSG <target> <message>
197
Send <message> to <target> (nick or channel).
199
Common IRC clients use MSG as PRIVMSG alias.
200
(Some clients use "QUERY <nick> [<message>]" to open a private chat.)
307
PRIVMSG <target>[,<target>[,...]] <message>
309
Send a <message> to a given <target>, which can be a user or a
310
channel, and report all errors.
312
The <target> must follow one of these syntax variants:
316
- <user>[%<host>]@<server>
318
- <nickname>!<user>@<host>
320
If the <target> is a user, a private message is sent directly to this
321
user; if it resolves to a channel name, a public message is sent
322
to all the members of that channel.
324
In addition, IRC Ops can use these two forms to specify the <target>:
329
The <mask> can contain the wildcard characters "*" and "?", but must
330
contain at least one dot (".") and no wildcard after the last one.
331
Then, the <message> is sent to all users matching this <mask>.
333
All warnings and errors are reported back to the initiator using
334
numeric status codes, which is the only difference to the "NOTICE"
335
command, which doesn't report back any errors or warnings at all.
337
Please note that clients often use "MSG" as an alias to PRIVMSG, and
338
a command "QUERY <nick> [<message>]" to initiate private chats. Both
339
are command extensions of the client and never sent to the server.
342
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
343
- RFC 2812, 3.3 "Sending messages"
344
- RFC 2812, 3.3.1 "Private messages"
203
346
Status and Informational Commands
204
347
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
336
479
- RFC 2812, 3.4.6 "Time message"
341
Trace a path across the IRC network of the current server, or if given
342
of a specific <server>, in a similar method to traceroute.
484
Find the route to a specific server and send information about its
485
peers. Each server that processes this command reports back to the
486
sender about it: the replies from pass-through servers form a chain
487
which shows the route to the destination.
489
<target> can be a server name, the nickname of a client connected to
490
a specific server, or a mask matching a server name in the network.
491
The server of the current connection is used when <target> is omitted.
494
- RFC 2812, 3.4.8 "Trace message"
345
497
USERHOST <nickname> [<nickname> [...]]
432
584
- RFC 2812, 3.2.7 "Invite message"
435
JOIN <channels> [<channel-keys>]
587
JOIN {<channel>[,<channel>[,...]] [<key>[,<key>[,...]]] | 0}
437
Makes the client join the <channels> (comma-separated list), specifying
438
the passwords, if needed, in the comma-separated <channel-keys> list.
439
A <channel-key> is only needed, if the <channel> mode "+k" is set.
589
Makes the client join the <channel> (comma-separated list), specifying
590
the channel keys ("passwords"). A <channel-key> is only needed if the
591
<channel> has the mode "+k" set.
441
593
If the channel(s) do not exist, then they will be created.
595
Using "JOIN 0" parts all channels at once.
598
- RFC 2812, 3.2.1 "Join message" (client protocol)
599
- RFC 2813, 4.2.1 "Join message" (server protocol)
444
602
KICK <channel>[,<channel>[,...]] <nickname>[,<nickname>[,...]] [<reason>]
455
613
- RFC 2812, 3.2.8 "Kick command"
458
LIST [<channels> [<server>]]
460
List all visible <channels> (comma-seperated list) on the current
616
LIST [<channel>[,<channel>[,...]] [<server>]]
618
List all visible <channels> (comma-separated list).
462
620
If <server> is given, the command will be forwarded to <server> for
624
- RFC 2812, 3.2.6 "List message"
466
PART <channels> [<part-message>]
627
PART <channel>[,<channel>[,...]] [<part-message>]
468
Leave <channels> (comma-separated list), optional with a
629
Leave <channel> (comma-separated list), optionally with sending a
630
<part-message> to all the other channel members.
633
- RFC 2812, 3.2.2 "Part message"
472
TOPIC <channel> <topic>
474
Set a <topic> for <channel>.
476
Only <channel> operators are able to set a <topic>.
636
TOPIC <channel> [<topic>]
638
Change or view the topic of a channel.
640
The topic for channel <channel> is returned if there is no <topic>
641
given. If the <topic> parameter is present, the topic for that
642
channel will be changed, if this action is allowed for the user
643
requesting it. If the <topic> parameter is an empty string, the
644
topic for that channel will be removed.
647
- RFC 2812, 3.2.4 "Topic message"
479
650
Administrative Commands
480
651
~~~~~~~~~~~~~~~~~~~~~~~
483
CONNECT <target server> [<port> [<remote server> [<mypwd> <peerpwd>]]]
485
Instructs the current server, or <remote server> if specified,
486
to connect to <target server>.
488
To connect <remote server> you need to have remote oper status.
489
If <port> is omitted, it uses the server port of the configuration.
490
If <mypwd> and <peerpwd> is given, it uses those passwords instead
491
of the ones in the configuration.
654
CONNECT <server> [<port> [<remote-server> [<my-pwd> <peer-pwd>]]]
656
Instructs the current server, or <remote-server> if specified,
657
to connect to the server named <server>, which must be configured
658
in the server configuration file.
660
To use this command, the user must be an IRC Operator. To establish
661
a connection on a <remote-server>, you must have remote IRC operator
664
If <port>, <my-pwd> and <peer-pwd> are given, these values override
665
the ones specified in the server configuration file.
668
- RFC 2812, 3.4.7 "Connect message"
496
673
Instructs the server to shut down.
675
To use this command, the user must be an IRC Operator.
678
- RFC 2812, 4.3 "Die message"
499
DISCONNECT [<remote server>]
501
Disconnects the current server, or <remote server> if specified.
502
To disconnect a <remote server> you need to have remote oper status.
683
Disconnect and disable a locally linked server.
685
To use this command, the user must be an IRC Operator.
688
- This command is not specified in the IRC RFCs, it is an extension
505
GLINE <nick!user@hostmask> <seconds> :<reason>
507
This command provides timed G-Lines (Network-wide bans).
692
GLINE <nick!user@hostmask> [<timeout> :<reason>]
694
This command provides timed G-Lines (network-wide bans).
508
696
If a client matches a G-Line, it cannot connect to any server on
509
the IRC network. If you put 0 as <seconds>, it makes the G-Line
512
To remove a G-Line, type "GLINE <nick!user@hostmask>".
513
To list the G-Lines, type "STATS g".
697
the IRC network for <timeout> seconds. When <timeout> is 0, it make
698
the G-Line permanent.
700
If no <timeout> and no <reason> is given, the G-Line is removed.
702
To use this command, the user must be an IRC Operator.
704
"STATS g" can be used to list all currently active G-Lines.
707
- This command is not specified in the IRC RFCs, it is an extension
516
711
KILL <nickname> <reason>
521
716
This command is used internally between servers, too, for example
522
717
to disconnect duplicate <nickname>'s after a "net split".
719
To use this command, the user must be an IRC Operator.
525
722
- RFC 2812, 3.7.1 "Kill message"
528
KLINE <nick!user@hostmask> <seconds> :<reason>
530
This command provides timed K-Lines (Server-local bans).
531
If a client matches a K-Line, it cannot connect to the issued server.
532
If you put 0 as <seconds>, it makes the K-Line permanent.
534
To remove a K-Line, type "KLINE <nick!user@hostmask>".
535
To list the K-Lines, type "STATS k".
725
KLINE <nick!user@hostmask> [<timeout> :<reason>]
727
This command provides timed K-Lines (server-local bans).
729
If a client matches a K-Line, it cannot connect to this server for
730
<timeout> seconds. When <timeout> is 0, it makes the K-Line permanent.
732
If no <timeout> and no <reason> is given, the K-Line is removed.
734
To use this command, the user must be an IRC Operator.
736
"STATS k" can be used to list all currently active K-Lines.
739
- This command is not specified in the IRC RFCs, it is an extension
538
OPER <user> <password>
540
Authenticates <user> as an IRC operator on the current server/network.
743
OPER <name> <password>
745
Authenticates a user named <name> as an IRC operator on the current
748
This operator <name> must be configured in the server configuration.
750
Please note that <name> is NOT related to a nickname at all!
753
- RFC 2812, 3.1.4 "Oper message"
545
758
Causes the server to re-read and re-process its configuration file(s).
760
While rehashing, no new connections are accepted, but all already
761
established connections stay connected.
763
To use this command, the user must be an IRC Operator.
766
- RFC 2812, 4.2 "Rehash message"
550
771
Restart the server.
773
While restarting, all connections are reset and no new connections
776
To use this command, the user must be an IRC Operator.
779
- RFC 2812, 4.4 "Restart message"
553
782
WALLOPS <message>
555
784
Sends <message> to all users with user mode "+w".
786
To use this command, the user must be an IRC Operator.
789
- RFC 2812, 4.7 "Operwall message"
558
791
IRC Service Commands
559
792
~~~~~~~~~~~~~~~~~~~~
795
SERVICE <name> <reserved1> <distribution> <type> <reserved2> <info>
796
SERVICE <name> <servertoken> <distribution> {<type>|+<modes>} <hops> <info>
798
Register a new service in the network.
800
The first form is used by directly linked services and isn't supported
801
by ngIRCd at the moment. The second form announces services connected
802
to remote "pseudo-servers" ("services hubs").
804
The <distribution> and <type> parameters are ignored by ngIRCd.
807
- RFC 2812, 3.1.6 "Service message"
808
- RFC 2813, 4.1.4 "Service message"
564
811
SERVLIST [<mask> [<type>]]
575
822
- RFC 2812, 3.5.1 "Servlist message"
825
SQUERY <target>[,<target>[,...]] <message>
827
Send a <message> to a given <target> IRC service, and report all
830
The "SQUERY" command exactly behaves like the "PRIVMSG" command, but
831
enforces that the <target> of the <message> is an IRC service.
832
Please see the help text of the "PRIVMSG" command for a detailed
833
description of the parameters!
835
If a user wants to interact with IRC services, he should use "SQUERY"
836
instead of "PRIVMSG" or "NOTICE": only "SQUERY makes sure that no
837
regular user, which uses the nickname of an IRC service, receives
838
the command in error, for example during a "net split"!
841
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
842
- RFC 2812, 3.3 "Sending messages"
843
- RFC 2812, 3.3.2 "Notice"
846
SVSNICK <oldnick> <newnick>
848
Forcefully change foreign user nicknames. This command is allowed
851
The "SVSNICK" command is forwarded to the server to which the user
852
with nickname <oldnick> is connected to, which in turn generates a
853
regular "NICK" command that then is sent to the client, so no special
854
support in the client software is required.
857
- ngIRCd GIT commit e3f300d3231f
582
860
Server Protocol Commands
588
866
CHANINFO is used by servers to inform each other about a channel:
589
867
its modes, channel key, user limits and its topic.
591
See doc/Protocol.txt for more information.
869
The CHANINFO command is allowed on server-links only.
872
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
873
- IRC+, doc/Protocol.txt
594
876
ERROR [<message> [<> [...]]]
596
Return an error message to the server. The first parameter, if given,
597
will be logged by the server, all further parameters are silently
600
This command is silently ignored on non-server and non-service links.
878
Inform a client or a server about an error condition. The first
879
parameter, if given, is logged by the server receiving the message,
880
all other parameters are silently ignored.
882
This command is silently ignored on non-server and non-service links
883
and shouldn't be used by regular IRC clients.
885
The ERROR message is also sent before terminating a regular client
889
- RFC 2812, 3.7.4 "Error message"
603
892
METADATA <target> <key> <value>
606
895
information of clients, like the hostname, the info text ("real name"),
607
896
or the user name.
609
See doc/Protocol.txt for more information.
898
The METADATA command is allowed on server-links only.
901
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
902
- IRC+, doc/Protocol.txt
905
NJOIN <channel> [<mode>]<nick>[,[<mode>]<nick>[,...]]
907
The NJOIN command is used on server-links to add users with <nick>
908
and <mode> to a <channel> while peering.
910
The NJOIN command is allowed on server-links only.
913
- RFC 2813, 4.2.2 "Njoin message"
916
SERVER <servername> <info>
917
SERVER <servername> <hopcount> <info>
918
SERVER <servername> <hopcount> <token> <info>
920
The first form registers the local connection as a new server in the
921
network, the second (RFC 1459) and third (RFC 2812) form announce a
922
new remote server in the network.
924
The SERVER command is allowed on unregistered or server-links only.
927
- RFC 1459, 4.1.4 "Server message"
928
- RFC 2813, 4.1.2 "Server message"
931
SQUIT <server> <comment>
618
933
Disconnects an IRC Server from the network.
935
This command is used on server-links, but can be used by IRC Operators
936
to forcefully disconnect servers from the network, too.
939
- RFC 2812, 3.1.8 "Squit"
940
- RFC 2813, 4.1.6 "Server quit message"