[BACK]Return to Commands.txt CVS log [TXT][DIR] Up to [local] / ircnowd / doc

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