Annotation of ircnowd/doc/Commands.txt, Revision 1.1
1.1 ! tomglok 1:
! 2: ngIRCd - Next Generation IRC Server
! 3: http://ngircd.barton.de/
! 4:
! 5: (c)2001-2019 Alexander Barton and Contributors.
! 6: ngIRCd is free software and published under the
! 7: terms of the GNU General Public License.
! 8:
! 9: -- Commands.txt --
! 10:
! 11:
! 12: This file lists all commands available on ngIRCd. It is written in a format
! 13: that is human readable as well as machine parseable and therefore can be used
! 14: as "help text file" of the daemon.
! 15:
! 16: In short, the daemon reads this file on startup and parses it as following
! 17: when an user issues a "HELP <cmd>" command:
! 18:
! 19: 1. Search the file for a line "- <cmd>",
! 20: 2. Output all subsequent lines that start with a TAB (ASCII 9) character
! 21: to the client using NOTICE commands, treat lines containing a single "."
! 22: after the TAB as empty lines.
! 23: 3. Break at the first line not starting with a TAB character.
! 24:
! 25: This format allows to have information to each command stored in this file
! 26: which will not be sent to an IRC user requesting help which enables us to
! 27: have additional annotations stored here which further describe the origin,
! 28: implementation details, or limits of the specific command which are not
! 29: relevant to an end-user but administrators and developers.
! 30:
! 31: A special "Intro" block is returned to the user when the HELP command is
! 32: used without a command name:
! 33:
! 34:
! 35: - Intro
! 36: This is ngIRCd, a server software for Internet Relay Chat (IRC)
! 37: networks. You can find more information about ngIRCd on its homepage:
! 38: <http://ngircd.barton.de>
! 39: .
! 40: Use "HELP COMMANDS" to get a list of all available commands and
! 41: "HELP <command-name>" to get help for a specific IRC command, for
! 42: example "HELP quit" or "HELP privmsg".
! 43:
! 44:
! 45: Connection Handling Commands
! 46: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! 47:
! 48: - CAP
! 49: CAP LS
! 50: CAP LIST
! 51: CAP REQ <capabilities>
! 52: CAP ACK <capabilities>
! 53: CAP NAK <capabilities>
! 54: CAP CLEAR
! 55: CAP END
! 56: .
! 57: List, request, and clear "IRC Capabilities".
! 58: .
! 59: Using this command, an IRC client can request additional "IRC
! 60: capabilities" during login or later on, which influences the
! 61: communication between server and client. Normally, these commands
! 62: aren't directly used by humans, but automatically by their client
! 63: software. And please note that issuing such commands manually can
! 64: irritate the client software used, because of the "non-standard"
! 65: behavior of the server!
! 66: .
! 67: - CAP LS: list all available capabilities.
! 68: - CAP LIST: list active capabilities of this connection.
! 69: - CAP REQ: Request particular capabilities.
! 70: - CAP ACK: Acknowledge a set of capabilities to be enabled/disabled.
! 71: - CAP NAK: Reject a set of capabilities.
! 72: - CAP CLEAR: Clear all set capabilities.
! 73: - CAP END: Indicate end of capability negotiation during login,
! 74: ignored in an fully registered session.
! 75:
! 76: Please note that the <capabilities> must be given in a single
! 77: parameter but whitespace separated, therefore a command could look
! 78: like this: "CAP REQ :capability1 capability2 capability3" for example.
! 79:
! 80: References:
! 81: - <http://ircv3.net/specs/core/capability-negotiation-3.1.html>
! 82: - <http://ngircd.barton.de/doc/Capabilities.txt>
! 83: - doc/Capabilities.txt
! 84:
! 85: - CHARCONV
! 86: CHARCONV <client-charset>
! 87: .
! 88: Set client character set encoding to <client-charset>.
! 89: .
! 90: After receiving such a command, the server translates all message
! 91: data received from the client using the set <client-charset> to the
! 92: server encoding (UTF-8), and all message data which is to be sent to
! 93: the client from the server encoding (UTF-8) to <client-charset>.
! 94: .
! 95: This enables older clients and clients using "strange" character sets
! 96: to transparently participate in channels and direct messages to
! 97: clients using UTF-8, which should be the default today.
! 98:
! 99: References:
! 100: - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
! 101: - IRC+, doc/Protocol.txt
! 102:
! 103: - NICK
! 104: NICK <nickname>
! 105: NICK <nickname> [<hops>]
! 106: NICK <nickname> <hops> <username> <host> <servertoken> <usermodes> <realname>
! 107: .
! 108: Set or change the <nickname> of a client (first form) and register
! 109: remote clients (second and third form; servers only).
! 110:
! 111: References:
! 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)
! 115:
! 116: - PASS
! 117: PASS <password>
! 118: PASS <password> <version> <flags> [<options>]
! 119: .
! 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.
! 122: .
! 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
! 126: features.
! 127:
! 128: References:
! 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
! 134:
! 135: - PING
! 136: PING <token> [<target>]
! 137: .
! 138: Tests the presence of a connection to a client or server.
! 139: .
! 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.
! 142: .
! 143: A PING message results in a PONG reply containing the <token>, which
! 144: can be arbitrary text.
! 145:
! 146: Please note:
! 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.
! 151:
! 152: References:
! 153: - RFC 2812, 3.7.2 "Ping message"
! 154:
! 155: - PONG
! 156: PONG <target> [<token>]
! 157: .
! 158: Reply to a "PING" command, indicate that the connection is alive.
! 159: .
! 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.
! 162: .
! 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.
! 165:
! 166: References:
! 167: - RFC 2812, 3.7.3 "Pong message"
! 168:
! 169: - QUIT
! 170: QUIT [<quit-message>]
! 171: .
! 172: Terminate a user session.
! 173: .
! 174: When received from a user, the server acknowledges this by sending
! 175: an "ERROR" message back to the client and terminates the connection.
! 176: .
! 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.
! 179:
! 180: References:
! 181: - RFC 2812, 3.1.7 "Quit"
! 182: - RFC 2813, 4.1.5 "Quit"
! 183:
! 184: - USER
! 185: USER <username> <hostname> <unused> <realname>
! 186: .
! 187: Register (and authenticate) a new user session with a short <username>
! 188: and a human-readable <realname>.
! 189: .
! 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.
! 194: .
! 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.
! 198:
! 199: References:
! 200: - RFC 2812, 3.1.3 "User message"
! 201:
! 202: - WEBIRC
! 203: WEBIRC <password> <username> <hostname> <ip-address>
! 204: .
! 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.
! 207: .
! 208: It must be the very first command sent to the server, even before
! 209: USER and NICK commands!
! 210: .
! 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.
! 213:
! 214: References:
! 215: - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
! 216: - IRC+, doc/Protocol.txt
! 217:
! 218:
! 219: General Commands
! 220: ~~~~~~~~~~~~~~~~
! 221:
! 222: - AWAY
! 223: AWAY [<message>]
! 224: .
! 225: Provides the server with a message to automatically send in reply to a
! 226: PRIVMSG directed at the user, but not to a channel they are on.
! 227: .
! 228: If <message> is omitted, the away status is removed.
! 229:
! 230: References:
! 231: - RFC 2812, 4.1 "Away"
! 232:
! 233: - HELP
! 234: HELP [<command>]
! 235: .
! 236: Show help information for a specific IRC <command>. The <command> name
! 237: is case-insensitive.
! 238: .
! 239: Use the command "HELP Commands" to get a list of all available commands.
! 240:
! 241: The HELP command isn't specified by any RFC but implemented by most
! 242: daemons. If no help text could be read in, ngIRCd outputs a list of all
! 243: implemented commands when receiving a plain "HELP" command as well as
! 244: on "HELP Commands".
! 245:
! 246: ngIRCd replies using "NOTICE" commands like ircd 2.10/2.11; other
! 247: implementations are using numerics 704, 705, and 706.
! 248:
! 249: - MODE
! 250: MODE <nickname> [{+|-}<mode>[<mode>] [{+|-}<mode>[<mode>] [...]]]
! 251: MODE <channel> [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [...]]]
! 252: .
! 253: Set and get user and channel modes.
! 254: .
! 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.
! 258: .
! 259: All user and channel "modes" are indicated by single case-sensitive
! 260: characters.
! 261: .
! 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 ...
! 264: .
! 265: The mode parameters can become quite complex, especially when dealing
! 266: with channel modes that require additional arguments:
! 267: .
! 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.
! 271: .
! 272: Some examples:
! 273: .
! 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.
! 279: .
! 280: A complete list of all modes supported by ngIRCd can be found online
! 281: here: <http://ngircd.barton.de/doc/Modes.txt>.
! 282:
! 283: References:
! 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>
! 288: - doc/Modes.txt
! 289:
! 290: - NOTICE
! 291: NOTICE <target>[,<target>[,...]] <message>
! 292: .
! 293: Send a <message> to a given <target>, which can be a user or a
! 294: channel, but DON'T report any error.
! 295: .
! 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!
! 300:
! 301: References:
! 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"
! 305:
! 306: - PRIVMSG
! 307: PRIVMSG <target>[,<target>[,...]] <message>
! 308: .
! 309: Send a <message> to a given <target>, which can be a user or a
! 310: channel, and report all errors.
! 311: .
! 312: The <target> must follow one of these syntax variants:
! 313: .
! 314: - <nickname>
! 315: - <channel>
! 316: - <user>[%<host>]@<server>
! 317: - <user>%<host>
! 318: - <nickname>!<user>@<host>
! 319: .
! 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.
! 323: .
! 324: In addition, IRC Ops can use these two forms to specify the <target>:
! 325: .
! 326: - #<hostmask>
! 327: - $<servermask>
! 328: .
! 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>.
! 332: .
! 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.
! 336: .
! 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.
! 340:
! 341: References:
! 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"
! 345:
! 346: Status and Informational Commands
! 347: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! 348:
! 349: - ADMIN
! 350: ADMIN [<target>]
! 351: .
! 352: Show administrative information about an IRC server in the network.
! 353: .
! 354: <target> can be a server name, the nickname of a client connected to
! 355: a specific server, or a mask matching a server name in the network.
! 356: The server of the current connection is used when <target> is omitted.
! 357:
! 358: References:
! 359: - RFC 2812, 3.4.9 "Admin command"
! 360:
! 361: - INFO
! 362: INFO [<target>]
! 363: .
! 364: Show the version, birth & online time of an IRC server in the network.
! 365: .
! 366: <target> can be a server name, the nickname of a client connected to
! 367: a specific server, or a mask matching a server name in the network.
! 368: The server of the current connection is used when <target> is omitted.
! 369:
! 370: References:
! 371: - RFC 2812, 3.4.10 "Info command"
! 372:
! 373: - ISON
! 374: ISON <nickname> [<nickname> [...]]
! 375: .
! 376: Query online status of a list of nicknames. The server replies with
! 377: a list only containing nicknames actually connected to a server in
! 378: the network. If no nicknames of the given list are online, an empty
! 379: list is returned to the client requesting the information.
! 380:
! 381: Please note that "all" IRC daemons even parse separate nicknames in
! 382: a single parameter (like ":nick1 nick2"), and therefore ngIRCd
! 383: implements this behavior, too.
! 384:
! 385: References:
! 386: - RFC 2812, 4.9 "Ison message"
! 387:
! 388: - LINKS
! 389: LINKS [[<target>] <mask>]
! 390: .
! 391: List all servers currently registered in the network matching <mask>,
! 392: or all servers if <mask> has been omitted, as seen by the server
! 393: specified by <target> or the local server when <target> is omitted.
! 394: .
! 395: <target> can be a server name, the nickname of a client connected to
! 396: a specific server, or a mask matching a server name in the network.
! 397:
! 398: References:
! 399: - RFC 2812, 3.4.5 "Links message"
! 400:
! 401: - LUSERS
! 402: LUSERS [<mask> [<target>]]
! 403: .
! 404: Return statistics about the number of clients (users, servers,
! 405: services, ...) in the network as seen by the server <target>.
! 406: .
! 407: <target> can be a server name, the nickname of a client connected to
! 408: a specific server, or a mask matching a server name in the network.
! 409: The server of the current connection is used when <target> is omitted.
! 410:
! 411: Please note that ngIRCd ignores the <mask> parameter entirely: it
! 412: is not possible to get information for a part of the network only.
! 413:
! 414: References:
! 415: - RFC 2812, 3.4.2 "Lusers message"
! 416:
! 417: - MOTD
! 418: MOTD [<target>]
! 419: .
! 420: Show the "Message of the Day" (MOTD) of an IRC server in the network.
! 421: .
! 422: <target> can be a server name, the nickname of a client connected to
! 423: a specific server, or a mask matching a server name in the network.
! 424: The server of the current connection is used when <target> is omitted.
! 425:
! 426: References:
! 427: - RFC 2812, 3.4.1 "Motd message"
! 428:
! 429: - NAMES
! 430: NAMES [<channel>[,<channel>[,...]] [<target>]]
! 431: .
! 432: Show the list of users that are members of a particular <channel>
! 433: (and that are visible for the client requesting this information) as
! 434: seen by the server <target>. More than one <channel> can be given
! 435: separated by "," (but not whitespaces!).
! 436: .
! 437: If <channel> has been omitted, all visible users are shown, grouped
! 438: by channel name, and all visible users not being members of at least
! 439: one channel are shown as members of the pseudo channel "*".
! 440: .
! 441: <target> can be a server name, the nickname of a client connected to
! 442: a specific server, or a mask matching a server name in the network.
! 443: The server of the current connection is used when <target> is omitted.
! 444:
! 445: References:
! 446: - RFC 2812, 3.2.5 "Names message"
! 447:
! 448: - STATS
! 449: STATS [<query> [<target>]]
! 450: .
! 451: Show statistics and other information of type <query> of a particular
! 452: IRC server in the network.
! 453: .
! 454: The following <query> types are supported (case-insensitive where
! 455: applicable):
! 456: .
! 457: - g Network-wide bans ("G-Lines").
! 458: - k Server-local bans ("K-Lines").
! 459: - L Link status (servers and user links).
! 460: - l Link status (servers and own link).
! 461: - m Command usage count.
! 462: - u Server uptime.
! 463: .
! 464: <target> can be a server name, the nickname of a client connected to
! 465: a specific server, or a mask matching a server name in the network.
! 466: The server of the current connection is used when <target> is omitted.
! 467: .
! 468: To use "STATS L" the user must be an IRC Operator.
! 469:
! 470: References:
! 471: - RFC 2812, 3.4.4 "Stats message"
! 472:
! 473: - TIME
! 474: TIME [<target>]
! 475: .
! 476: Show the local time of an IRC server in the network.
! 477: .
! 478: <target> can be a server name, the nickname of a client connected to
! 479: a specific server, or a mask matching a server name in the network.
! 480: The server of the current connection is used when <target> is omitted.
! 481:
! 482: References
! 483: - RFC 2812, 3.4.6 "Time message"
! 484:
! 485: - TRACE
! 486: TRACE [<target>]
! 487: .
! 488: Find the route to a specific server and send information about its
! 489: peers. Each server that processes this command reports back to the
! 490: sender about it: the replies from pass-through servers form a chain
! 491: which shows the route to the destination.
! 492: .
! 493: <target> can be a server name, the nickname of a client connected to
! 494: a specific server, or a mask matching a server name in the network.
! 495: The server of the current connection is used when <target> is omitted.
! 496:
! 497: References:
! 498: - RFC 2812, 3.4.8 "Trace message"
! 499:
! 500: - USERHOST
! 501: USERHOST <nickname> [<nickname> [...]]
! 502: .
! 503: Show flags and the hostmasks (<user>@<host>) of the <nickname>s,
! 504: separated by spaces. The following flags are used:
! 505: .
! 506: - "-" The client is "away" (the mode "+a" is set on this client).
! 507: - "+" Client seems to be available, at least it isn't marked "away".
! 508: - "*" The client is an IRC operator (the mode "+o" is set).
! 509:
! 510: References:
! 511: - RFC 2812, 4.8 "Userhost message"
! 512:
! 513: - VERSION
! 514: VERSION [<target>]
! 515: .
! 516: Show version information about a particular IRC server in the network.
! 517: .
! 518: <target> can be a server name, the nickname of a client connected to
! 519: a specific server, or a mask matching a server name in the network.
! 520: The server of the current connection is used when <target> is omitted.
! 521: .
! 522: Please note: in normal operation, the version number ends in a dot
! 523: (".", for example "ngIRCd-20.1."). If it ends in ".1" (for example
! 524: "ngIRCd-20.1.1", same version than before!), the server is running in
! 525: debug-mode; and if it ends in ".2", the "network sniffer" is active!
! 526: Keep your privacy in mind ...
! 527:
! 528: References:
! 529: - RFC 2812, 3.4.3 "Version message"
! 530:
! 531: - WHO
! 532: WHO [<mask> ["o"]]
! 533: .
! 534: Show a list of users who match the <mask>, or all visible users when
! 535: the <mask> has been omitted. (Special case: the <mask> "0" is
! 536: equivalent to "*")
! 537: .
! 538: If the flag "o" is given, the server will only return information about
! 539: IRC Operators.
! 540:
! 541: References:
! 542: - RFC 2812, 3.6.1 "Who query"
! 543:
! 544: - WHOIS
! 545: WHOIS [<target>] <mask>[,<mask>[,...]]
! 546: .
! 547: Query information about users matching the <mask> parameter(s) as seen
! 548: by the server <target>; up to 3 <masks> are supported.
! 549: .
! 550: <target> can be a server name, the nickname of a client connected to a
! 551: specific server, or a mask matching a server name in the network. The
! 552: server of the current connection is used when <target> is omitted.
! 553:
! 554: References:
! 555: - RFC 2812, 3.6.2 "Whois query"
! 556:
! 557: - WHOWAS
! 558: WHOWAS <nickname>[,<nickname>[,...]] [<count> [<target>]]
! 559: .
! 560: Query information about nicknames no longer in use in the network,
! 561: either because of nickname changes or disconnects. The history is
! 562: searched backwards, returning the most recent entry first. If there
! 563: are multiple entries, up to <count> entries will be shown (or all of
! 564: them, if no <count> has been given).
! 565: .
! 566: <target> can be a server name, the nickname of a client connected to a
! 567: specific server, or a mask matching a server name in the network. The
! 568: server of the current connection is used when <target> is omitted.
! 569:
! 570: References:
! 571: - RFC 2812, 3.6.3 "Whowas"
! 572:
! 573:
! 574: Channel Commands
! 575: ~~~~~~~~~~~~~~~~
! 576:
! 577: - INVITE
! 578: INVITE <nickname> <channel>
! 579: .
! 580: Invite <nickname> to join channel <channel>.
! 581: .
! 582: <channel> does not have to exist, but if it does, only members of the
! 583: channel are allowed to invite other users. If the channel mode "+i"
! 584: is set, only channel "half-ops" (and above) may invite other clients,
! 585: and if channel mode "+V" is set, nobody can invite other users.
! 586:
! 587: References:
! 588: - RFC 2812, 3.2.7 "Invite message"
! 589:
! 590: - JOIN
! 591: JOIN {<channel>[,<channel>[,...]] [<key>[,<key>[,...]]] | 0}
! 592: .
! 593: Makes the client join the <channel> (comma-separated list), specifying
! 594: the channel keys ("passwords"). A <channel-key> is only needed if the
! 595: <channel> has the mode "+k" set.
! 596: .
! 597: If the channel(s) do not exist, then they will be created.
! 598: .
! 599: Using "JOIN 0" parts all channels at once.
! 600:
! 601: References:
! 602: - RFC 2812, 3.2.1 "Join message" (client protocol)
! 603: - RFC 2813, 4.2.1 "Join message" (server protocol)
! 604:
! 605: - KICK
! 606: KICK <channel>[,<channel>[,...]] <nickname>[,<nickname>[,...]] [<reason>]
! 607: .
! 608: Remove users(s) with <nickname>(s) from <channel>(s).
! 609: .
! 610: There must be either exactly one <channel> parameter and multiple
! 611: <nickname> parameters, or as many <channel> parameters as there are
! 612: <nickname> parameters. The <reason> is shown to the users being
! 613: kicked, and the nickname of the current user is used when <reason>
! 614: is omitted.
! 615:
! 616: References:
! 617: - RFC 2812, 3.2.8 "Kick command"
! 618:
! 619: - LIST
! 620: LIST [<mask>[,<mask>[,...]] [<server>]]
! 621: .
! 622: List all visible channels matching the <mask> (comma-separated list),
! 623: or all channels when no <mask> was specified.
! 624: .
! 625: If <server> is given, the command will be forwarded to <server> for
! 626: evaluation.
! 627:
! 628: References:
! 629: - RFC 2812, 3.2.6 "List message"
! 630:
! 631: - PART
! 632: PART <channel>[,<channel>[,...]] [<part-message>]
! 633: .
! 634: Leave <channel> (comma-separated list), optionally with sending a
! 635: <part-message> to all the other channel members.
! 636:
! 637: References:
! 638: - RFC 2812, 3.2.2 "Part message"
! 639:
! 640: - TOPIC
! 641: TOPIC <channel> [<topic>]
! 642: .
! 643: Change or view the topic of a channel.
! 644: .
! 645: The topic for channel <channel> is returned if there is no <topic>
! 646: given. If the <topic> parameter is present, the topic for that
! 647: channel will be changed, if this action is allowed for the user
! 648: requesting it. If the <topic> parameter is an empty string, the
! 649: topic for that channel will be removed.
! 650:
! 651: References:
! 652: - RFC 2812, 3.2.4 "Topic message"
! 653:
! 654:
! 655: Administrative Commands
! 656: ~~~~~~~~~~~~~~~~~~~~~~~
! 657:
! 658: - CONNECT
! 659: CONNECT <server> [<port> [<remote-server> [<my-pwd> <peer-pwd>]]]
! 660: .
! 661: Instructs the current server, or <remote-server> if specified,
! 662: to connect to the server named <server>, which must be configured
! 663: in the server configuration file.
! 664: .
! 665: To use this command, the user must be an IRC Operator. To establish
! 666: a connection on a <remote-server>, you must have remote IRC operator
! 667: privileges.
! 668: .
! 669: If <port>, <my-pwd> and <peer-pwd> are given, these values override
! 670: the ones specified in the server configuration file.
! 671:
! 672: References:
! 673: - RFC 2812, 3.4.7 "Connect message"
! 674:
! 675: - DIE
! 676: DIE [<message>]
! 677: .
! 678: Instructs the server to shut down.
! 679: .
! 680: The optional (and non-standard) <message> text is sent to each client
! 681: connected to this server before all connections are closed.
! 682: .
! 683: To use this command, the user must be an IRC Operator.
! 684:
! 685: References:
! 686: - RFC 2812, 4.3 "Die message"
! 687:
! 688: - DISCONNECT
! 689: DISCONNECT <server>
! 690: .
! 691: Disconnect and disable a locally linked server.
! 692: .
! 693: To use this command, the user must be an IRC Operator.
! 694:
! 695: References:
! 696: - This command is not specified in the IRC RFCs, it is an extension
! 697: of ngIRCd.
! 698:
! 699: - GLINE
! 700: GLINE <nick!user@hostmask> [<timeout> :<reason>]
! 701: .
! 702: This command provides timed G-Lines (network-wide bans).
! 703: .
! 704: If a client matches a G-Line, it cannot connect to any server on
! 705: the IRC network for <timeout> seconds. When <timeout> is 0, it make
! 706: the G-Line permanent.
! 707: .
! 708: If no <timeout> and no <reason> is given, the G-Line is removed.
! 709: .
! 710: To use this command, the user must be an IRC Operator.
! 711: .
! 712: "STATS g" can be used to list all currently active G-Lines.
! 713:
! 714: References:
! 715: - This command is not specified in the IRC RFCs, it is an extension
! 716: of ngIRCd.
! 717:
! 718: - KILL
! 719: KILL <nickname> <reason>
! 720: .
! 721: Forcibly remove all users with a given <nickname> from the IRC
! 722: network and display the given <reason> to them.
! 723: .
! 724: This command is used internally between servers, too, for example
! 725: to disconnect duplicate <nickname>'s after a "net split".
! 726: .
! 727: To use this command, the user must be an IRC Operator.
! 728:
! 729: References:
! 730: - RFC 2812, 3.7.1 "Kill message"
! 731:
! 732: - KLINE
! 733: KLINE <nick!user@hostmask> [<timeout> :<reason>]
! 734: .
! 735: This command provides timed K-Lines (server-local bans).
! 736: .
! 737: If a client matches a K-Line, it cannot connect to this server for
! 738: <timeout> seconds. When <timeout> is 0, it makes the K-Line permanent.
! 739: .
! 740: If no <timeout> and no <reason> is given, the K-Line is removed.
! 741: .
! 742: To use this command, the user must be an IRC Operator.
! 743: .
! 744: "STATS k" can be used to list all currently active K-Lines.
! 745:
! 746: References:
! 747: - This command is not specified in the IRC RFCs, it is an extension
! 748: of ngIRCd.
! 749:
! 750: - OPER
! 751: OPER <name> <password>
! 752: .
! 753: Authenticates a user named <name> as an IRC operator on the current
! 754: server/network.
! 755: .
! 756: This operator <name> must be configured in the server configuration.
! 757: .
! 758: Please note that <name> is NOT related to a nickname at all!
! 759:
! 760: References:
! 761: - RFC 2812, 3.1.4 "Oper message"
! 762:
! 763: - REHASH
! 764: REHASH
! 765: .
! 766: Causes the server to re-read and re-process its configuration file(s).
! 767: .
! 768: While rehashing, no new connections are accepted, but all already
! 769: established connections stay connected.
! 770: .
! 771: To use this command, the user must be an IRC Operator.
! 772:
! 773: References:
! 774: - RFC 2812, 4.2 "Rehash message"
! 775:
! 776: - RESTART
! 777: RESTART
! 778: .
! 779: Restart the server.
! 780: .
! 781: While restarting, all connections are reset and no new connections
! 782: are accepted.
! 783: .
! 784: To use this command, the user must be an IRC Operator.
! 785:
! 786: References:
! 787: - RFC 2812, 4.4 "Restart message"
! 788:
! 789: - WALLOPS
! 790: WALLOPS <message>
! 791: .
! 792: Sends <message> to all users with user mode "+w".
! 793: .
! 794: To use this command, the user must be an IRC Operator.
! 795:
! 796: References:
! 797: - RFC 2812, 4.7 "Operwall message"
! 798:
! 799: IRC Service Commands
! 800: ~~~~~~~~~~~~~~~~~~~~
! 801:
! 802: - SERVICE
! 803: SERVICE <name> <reserved1> <distribution> <type> <reserved2> <info>
! 804: SERVICE <name> <servertoken> <distribution> {<type>|+<modes>} <hops> <info>
! 805: .
! 806: Register a new service in the network.
! 807: .
! 808: The first form is used by directly linked services and isn't supported
! 809: by ngIRCd at the moment. The second form announces services connected
! 810: to remote "pseudo-servers" ("services hubs").
! 811: .
! 812: The <distribution> and <type> parameters are ignored by ngIRCd.
! 813:
! 814: References:
! 815: - RFC 2812, 3.1.6 "Service message"
! 816: - RFC 2813, 4.1.4 "Service message"
! 817:
! 818: - SERVLIST
! 819: SERVLIST [<mask> [<type>]]
! 820: .
! 821: List all IRC services currently registered in the network.
! 822: .
! 823: The optional <mask> and <type> parameters can be used to limit the
! 824: listing to services matching the <mask> and that are of type <type>.
! 825: .
! 826: Please note that ngIRCd doesn't use any service types at the moment
! 827: and therefore all services are of type "0".
! 828:
! 829: References:
! 830: - RFC 2812, 3.5.1 "Servlist message"
! 831:
! 832: - SQUERY
! 833: SQUERY <target>[,<target>[,...]] <message>
! 834: .
! 835: Send a <message> to a given <target> IRC service, and report all
! 836: errors.
! 837: .
! 838: The "SQUERY" command exactly behaves like the "PRIVMSG" command, but
! 839: enforces that the <target> of the <message> is an IRC service.
! 840: Please see the help text of the "PRIVMSG" command for a detailed
! 841: description of the parameters!
! 842: .
! 843: If a user wants to interact with IRC services, he should use "SQUERY"
! 844: instead of "PRIVMSG" or "NOTICE": only "SQUERY makes sure that no
! 845: regular user, which uses the nickname of an IRC service, receives
! 846: the command in error, for example during a "net split"!
! 847:
! 848: References:
! 849: - RFC 2812, 2.3.1 "Message format in Augmented BNF"
! 850: - RFC 2812, 3.3 "Sending messages"
! 851: - RFC 2812, 3.3.2 "Notice"
! 852:
! 853: - SVSNICK
! 854: SVSNICK <oldnick> <newnick>
! 855: .
! 856: Forcefully change foreign user nicknames. This command is allowed
! 857: for servers only.
! 858: .
! 859: The "SVSNICK" command is forwarded to the server to which the user
! 860: with nickname <oldnick> is connected to, which in turn generates a
! 861: regular "NICK" command that then is sent to the client, so no special
! 862: support in the client software is required.
! 863:
! 864: References:
! 865: - ngIRCd GIT commit e3f300d3231f
! 866:
! 867:
! 868: Server Protocol Commands
! 869: ~~~~~~~~~~~~~~~~~~~~~~~~
! 870:
! 871: - CHANINFO
! 872: CHANINFO <channel> +<modes> [[<key> <limit>] <topic>]
! 873: .
! 874: CHANINFO is used by servers to inform each other about a channel:
! 875: its modes, channel key, user limits and its topic.
! 876: .
! 877: Note: even when <modes> don't include "k" (key) or "l" (limit), both
! 878: parameters must be given when used; use "*" for "no key" and 0 for
! 879: "no limit" for the unused parameter in this case.
! 880: .
! 881: The CHANINFO command is allowed on server-links only.
! 882:
! 883: References:
! 884: - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
! 885: - IRC+, doc/Protocol.txt
! 886:
! 887: - ERROR
! 888: ERROR [<message> [<> [...]]]
! 889: .
! 890: Inform a client or a server about an error condition. The first
! 891: parameter, if given, is logged by the server receiving the message,
! 892: all other parameters are silently ignored.
! 893: .
! 894: This command is silently ignored on non-server and non-service links
! 895: and shouldn't be used by regular IRC clients.
! 896: .
! 897: The ERROR message is also sent before terminating a regular client
! 898: connection.
! 899:
! 900: References:
! 901: - RFC 2812, 3.7.4 "Error message"
! 902:
! 903: - METADATA
! 904: METADATA <target> <key> <value>
! 905: .
! 906: The METADATA command is used on server-links to update "metadata"
! 907: information of clients, like the hostname, the info text ("real name"),
! 908: or the user name.
! 909: .
! 910: The METADATA command is allowed on server-links only.
! 911:
! 912: References:
! 913: - IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
! 914: - IRC+, doc/Protocol.txt
! 915:
! 916: - NJOIN
! 917: NJOIN <channel> [<mode>]<nick>[,[<mode>]<nick>[,...]]
! 918: .
! 919: The NJOIN command is used on server-links to add users with <nick>
! 920: and <mode> to a <channel> while peering.
! 921: .
! 922: The NJOIN command is allowed on server-links only.
! 923:
! 924: References:
! 925: - RFC 2813, 4.2.2 "Njoin message"
! 926:
! 927: - SERVER
! 928: SERVER <servername> <info>
! 929: SERVER <servername> <hopcount> <info>
! 930: SERVER <servername> <hopcount> <token> <info>
! 931: .
! 932: The first form registers the local connection as a new server in the
! 933: network, the second (RFC 1459) and third (RFC 2812) form announce a
! 934: new remote server in the network.
! 935: .
! 936: The SERVER command is allowed on unregistered or server-links only.
! 937:
! 938: References:
! 939: - RFC 1459, 4.1.4 "Server message"
! 940: - RFC 2813, 4.1.2 "Server message"
! 941:
! 942: - SQUIT
! 943: SQUIT <server> <comment>
! 944: .
! 945: Disconnects an IRC Server from the network.
! 946: .
! 947: This command is used on server-links, but can be used by IRC Operators
! 948: to forcefully disconnect servers from the network, too.
! 949:
! 950: References:
! 951: - RFC 2812, 3.1.8 "Squit"
! 952: - RFC 2813, 4.1.6 "Server quit message"
! 953:
! 954: Dummy Commands
! 955: ~~~~~~~~~~~~~~
! 956:
! 957: - SUMMON
! 958: SUMMON <user> [<target> [<channel>]]
! 959: .
! 960: This command was intended to call people into IRC who are directly
! 961: connected to the terminal console of the IRC server -- but is
! 962: deprecated today. Therefore ngIRCd doesn't really implement this
! 963: command and always returns an error message, regardless of the
! 964: parameters given.
! 965:
! 966: References:
! 967: - RFC 2812, 4.5 "Summon message"
! 968:
! 969: - USERS
! 970: USERS [<target>]
! 971: .
! 972: This command was intended to list users directly logged in into the
! 973: console of the IRC server -- but is deprecated today. Therefore ngIRCd
! 974: doesn't really implement this command and always returns an error
! 975: message, regardless of the parameters given.
! 976:
! 977: References:
! 978: - RFC 2812, 4.6 "Users"
! 979:
! 980: - GET
! 981: GET [...]
! 982: .
! 983: Fake HTTP GET command. When received, the connection is shut down
! 984: immediately again to protect against crazy web browsers ...
! 985:
! 986: References:
! 987: - ngIRCd GIT commit 33e8c2480649
! 988:
! 989: - POST
! 990: POST [...]
! 991: .
! 992: Fake HTTP POST command. When received, the connection is shut down
! 993: immediately again to protect against crazy web browsers ...
! 994:
! 995: References:
! 996: - ngIRCd GIT commit 33e8c2480649
CVSweb