]> arthur.barton.de Git - ngircd-alex.git/blobdiff - doc/Protocol.txt
Make test suite compatible with Haiku
[ngircd-alex.git] / doc / Protocol.txt
index d0f0780f549a18b00f7f439d2336f7dcbcd147c7..b920b4553daa1ef88d8571847f7c015bd68d2901 100644 (file)
@@ -2,7 +2,7 @@
                      ngIRCd - Next Generation IRC Server
                            http://ngircd.barton.de/
 
                      ngIRCd - Next Generation IRC Server
                            http://ngircd.barton.de/
 
-               (c)2001-2012 Alexander Barton and Contributors.
+               (c)2001-2019 Alexander Barton and Contributors.
                ngIRCd is free software and published under the
                    terms of the GNU General Public License.
 
                ngIRCd is free software and published under the
                    terms of the GNU General Public License.
 
@@ -26,6 +26,12 @@ clients are compatible with a server configured that way, some can't even
 connect at all! Therefore this option usually isn't desired for "normal
 server operation".
 
 connect at all! Therefore this option usually isn't desired for "normal
 server operation".
 
+In addition, ngIRCd implements some "IRCv3" features. This includes:
+ - IRCv3 Client Capability Negotiation
+ - IRCv3.1 multi-prefix Extension
+ - IRCv3.2 userhost-in-names Extension
+Please see the IRCv3 homepage for more information: <https://ircv3.net>.
+
 
 II. The IRC+ Protocol
 ~~~~~~~~~~~~~~~~~~~~~
 
 II. The IRC+ Protocol
 ~~~~~~~~~~~~~~~~~~~~~
@@ -81,11 +87,17 @@ The following <serverflags> are defined at the moment:
 - H: The server supports the "enhanced server handshake", see section II.2
      for a detailed description.
 
 - H: The server supports the "enhanced server handshake", see section II.2
      for a detailed description.
 
+- M: Changing client "metadata" (hostname, real name, ...) using the
+     METADATA command is supported.
+
 - o: IRC operators are allowed to change channel- and channel-user-modes
      even if they aren't channel-operator of the affected channel.
 
 - S: The server supports the SERVICE command (on this link).
 
 - o: IRC operators are allowed to change channel- and channel-user-modes
      even if they aren't channel-operator of the affected channel.
 
 - S: The server supports the SERVICE command (on this link).
 
+- X: Server supports XOP channel modes (owner, admin, halfop) and supports
+     these user prefixes in CHANINFO commands, for example.
+
 - Z: Compressed server links are supported by the server.
 
 Example for a complete <flags> string: "ngircd|0.7.5:CZ".
 - Z: Compressed server links are supported by the server.
 
 Example for a complete <flags> string: "ngircd|0.7.5:CZ".
@@ -170,7 +182,7 @@ channel mode). In this case <limit> should be "0".
 II.4 Update webchat/proxy client information
 
      Command: WEBIRC
 II.4 Update webchat/proxy client information
 
      Command: WEBIRC
-  Parameters: <password> <username> <hostname> <ip-address>
+  Parameters: <password> <username> <hostname> <ip-address> [<ignored>]
      Used by: unregistered clients only
 
 The WEBIRC command is used by some Web-to-IRC gateways to set the correct
      Used by: unregistered clients only
 
 The WEBIRC command is used by some Web-to-IRC gateways to set the correct
@@ -180,6 +192,9 @@ first command sent to the server, even before USER and NICK commands!
 The <password> must be set in the server configuration file to prevent
 unauthorized clients to fake their identity; it is an arbitrary string.
 
 The <password> must be set in the server configuration file to prevent
 unauthorized clients to fake their identity; it is an arbitrary string.
 
+Optionally, a 5th parameter is accepted to comply with an IRCv3 extension,
+see <https://github.com/ircv3/ircv3-ideas/issues/12>, but ignored.
+
 
 II.5 Client character encoding conversion
 
 
 II.5 Client character encoding conversion
 
@@ -194,13 +209,38 @@ received from the client using the set <client-charset> to the server
 encoding (UTF-8), and all message data which is to be sent to the client
 from the server encoding (UTF-8) to <client-charset>.
 
 encoding (UTF-8), and all message data which is to be sent to the client
 from the server encoding (UTF-8) to <client-charset>.
 
-The list of supported <client-charset>'s is implementation dependent.
+The list of supported client character sets is implementation dependent.
 
 If a client sets its <client-charset> to the server encoding (UTF-8),
 it disables all conversions; the connection behaves as if no CHARCONV
 command has been sent at all in this session.
 
 
 
 If a client sets its <client-charset> to the server encoding (UTF-8),
 it disables all conversions; the connection behaves as if no CHARCONV
 command has been sent at all in this session.
 
 
+II.6 Update client "metadata"
+
+     Command: METADATA
+  Parameters: <target> <key> <value>
+     Used by: servers only
+
+The METADATA command is used on server-links to update "metadata" information
+of clients, like the hostname, the info text ("real name"), or the user name.
+
+The server updates its client database according to the received <key> and
+<value> parameters, and passes the METADATA command on to all the other
+servers in the network that support this command (see section II.1 "Register
+new server link", <serverflag> "M"), even if it doesn't support the given
+<key> itself: unknown <key> names are ignored silently!
+
+The following <key> names are defined:
+
+ - "accountname": the account name of a client (can't be empty)
+ - "certfp": the certificate fingerprint of a client (can't be empty)
+ - "cloakhost": the cloaked hostname of a client
+ - "host": the hostname of a client (can't be empty)
+ - "info": info text ("real name") of a client
+ - "user": the user name of a client (can't be empty)
+
+
 III. Numerics used by IRC+ Protocol
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 III. Numerics used by IRC+ Protocol
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~