This page is intended for developers. If you're looking information on for how to link servers you should refer to the spanningtree module (v4 docs, v3 docs) page instead.
CAPAB
Negotiates the capabilities of the remote server. This includes data such as modes, modules, and limits.
Connection Phases
This message can be used in the following connection phases:
Connection Phase | Usable? |
---|---|
Connecting outbound | ✔️ |
Authenticating outbound | ✔️ |
Authenticating inbound | ✔️ |
Fully connected | ❌ |
Syntax
[:<sid>] CAPAB START <protocol>
[:<sid>] CAPAB CAPABILITIES :[<capability-key>=<capability-value>]+
[:<sid>] CAPAB EXTBANS :[<extban-type>:<extban-name>[=<extban-char>]]+
[:<sid>] CAPAB MODULES :[<module-name>[=<module-link-data>]]+
[:<sid>] CAPAB MODSUPPORT :[<module-name>[=<module-link-data>]]+
[:<sid>] CAPAB CHANMODES :[<mode-type>:[<mode-rank>]:<mode-name>=[<mode-prefix>]<mode-char>]+
[:<sid>] CAPAB USERMODES :[<mode-type>:[<mode-rank>]:<mode-name>=[<mode-prefix>]<mode-char>]+
[:<sid>] CAPAB END
Parameter | Description |
---|---|
<capability-key> | The name of a server capability. |
<capability-value> | The value of a server capability. |
<extban-type> | The type of extban this entry represents. |
<extban-name> | The name of the extban. |
<extban-char> | The character for this extban. |
<mode-type> | The type of mode this entry represents. |
<mode-rank> | If this mode is a prefix mode then the rank of the prefix. |
<mode-name> | The name of the mode. |
<mode-prefix> | If this mode is a prefix mode then the prefix character. |
<mode-char> | The character for this mode. |
<module-name> | The name of a module that is loaded. |
<module-link-data> | Data for checking compatibility between servers. |
<protocol> | The server protocol version to use. |
If provided the capability-key fields can be set to one of the following values:
Name | Example Value | Description |
---|---|---|
CASEMAPPING | ascii | The name of the casemapping system used for nicknames. |
CHALLENGE | jHBspL5fA4wN4Zh0i2sR | The challenge key to use for HMAC authentication. |
CHANMAX | 64 | [1205] The maximum number of channels a user can normally join. |
EXTBANS | ABCDEFabcdef | [1205] The extended bans that exist on the remote server. |
GLOBOPS | 1 | [1205] Whether the server supports the GLOBOPS extension. |
IDENTMAX | 10 | [1205] The maximum length of a username (ident). |
MAXAWAY | 200 | The maximum length of an away message. |
MAXCHANNEL | 64 | [1206+] The maximum number of channels a user can normally join. |
MAXHOST | 64 | The maximum length of a hostname. |
MAXKICK | 255 | The maximum length of a kick message. |
MAXLINE | 512 | The maximum length of a client protocol IRC line without tags. |
MAXMODES | 20 | The maximum number of non-simple modes that can be set at once. |
MAXNICK | 30 | [1206+] The maximum length of a nickname. |
MAXQUIT | 255 | The maximum length of a quit message. |
MAXREAL | 128 | The maximum length of a real name. |
MAXTOPIC | 307 | The maximum length of a channel topic. |
MAXUSER | 10 | [1206+] The maximum length of a username (ident). |
NICKMAX | 30 | [1205] The maximum length of a nickname. |
If provided the extban-type field can be set to one of the following values:
Name | Example | Description |
---|---|---|
acting | m (mute) | The extban defines a restriction. |
matching | w (gateway) | The extban matches a user. |
If provided the mode-type field can be set to one of the following values:
Name | Example | Description |
---|---|---|
list | b (ban) | The mode is a list of values. |
param | k (key) | The mode requires a parameter when setting and unsetting. |
param-set | l (limit) | The mode requires a parameter when setting. |
prefix | o (op) | The mode confers a channel privilege on users. |
simple | m (moderated) | The mode is a simple on/off flag. |
[1206+] If provided the module-link-data field is a dictionary of URL-encoded key value pairs.
If provided the protocol field can be set to one of the following values:
Protocol Version | Supported By |
---|---|
1202 | InspIRCd v2 & v3 |
1205 | InspIRCd v3 & v4 |
1206 | InspIRCd v4 |
Example Usage
Negotiates protocol 1205 (v3):
CAPAB START 1205
[1205] Negotiates required modules:
CAPAB MODULES :m_foo.so m_bar.so=wibble m_baz.so
[1206+] Negotiates required modules:
CAPAB MODULES :foo bar=key1;key2=value2 baz
[1205] Negotiates optional modules:
CAPAB MODSUPPORT :m_foo.so m_bar.so=wibble m_baz.so
[1206+] Negotiates optional modules:
CAPAB MODSUPPORT :foo bar=key1;key2=value2 baz
Negotiates channel modes:
CAPAB CHANMODES :list:ban=b param:key=k param-set:limit=l prefix:30000:op=@o simple:moderated=m
Negotiates user modes:
CAPAB CHANMODES :param-set:snomask=s simple:wallops=w
Ends capability negotiation:
CAPAB END
History
1206
The m_
prefix and .so
suffix were removed from module names in CAPAB MODULES
and CAPAB MODSUPPORT
.
Module link data was changed from a string to a dictionary of URL-encoded key value pairs.
The EXTBANS
token in CAPAB CAPABILITIES
was replaced with CAPAB EXTBANS
.
The GLOBOPS
token in CAPAB CAPABILITIES
was replaced with the globops module appearing in CAPAB MODSUPPORT
.
The following tokens in CAPAB CAPABILITIES
were renamed:
CHANMAX
→MAXCHANNEL
IDENTMAX
→MAXUSER
NICKMAX
→MAXNICK