InspIRCd v4 is still early in development!
If you use this branch you may experience crashes, weird behaviour, and unannounced breaking changes.
You probably want to use InspIRCd v3 instead.
The "spanningtree" Module (v4)
Description
This module allows linking multiple servers together as part of one network.
Configuration
To load this module use the following <module>
tag:
<module name="spanningtree">
<autoconnect>
The <autoconnect>
tag defines one or more servers to attempt to connect to. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
period | Duration | None | The time period to wait between server connection attempts. |
server | Text | None | A space-delimited list of servers to attempt to connect to. |
Example Usage
Automatically connects to hub1.example.com after 120 seconds, failing over to hub2.example.com and then hub3.example.com if connecting to the previous server fails:
<autoconnect period="2m"
server="hub1.example.com hub2.example.com hub3.example.com">
<bind>
This module extends the core <bind>
tags with the following listener types:
Name | Description |
---|---|
servers | Listens for server connections. |
Example Usage
Listens for TLS encrypted server connections on the *:7002 endpoint with a TLS (SSL) profile named "Servers":
<bind address="*"
port="7002"
...
sslprofile="Servers"
type="servers">
Listens for unencrypted server connections on the 127.0.0.1:7000 endpoint:
<bind address="127.0.0.1"
port="7000"
...
type="servers">
<link>
The <link>
tag defines a server to link with. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
allowmask | Text | None | Required! One or more CIDR ranges or glob patterns that the remote server can connect from. |
bind | Text | None | The IP address to bind to when connecting to the remote server. |
fingerprint | Text | None | If defined then the TLS (SSL) client fingerprint of the remote server. |
hidden | Boolean | No | Whether the server IP address is hidden from server operators. |
name | Text | None | Required! The hostname of the IRC server. |
ipaddr | Text | None | Required for IP links! The IP address or hostname of the remote server. |
port | Number | None | Required for IP links! The port that this server connects on. |
path | Text | None | Required for UNIX links! The path of the UNIX socket that this server connects on. |
recvpass | Text | None | Required! The password that the remote server will use to log into the local server. |
sendpass | Text | None | Required! The password that the local server will use to log into the remote server. |
sslprofile | Text | None | If defined then the name of a TLS (SSL) profile to use for encrypting the connection with this server. |
statshidden | Boolean | No | Whether the server IP address is hidden in the /STATS output. |
timeout | Duration | 30s | The number of seconds to wait before declaring a server connection as having failed. |
Example Usage
A server that connects with TLS (SSL) over a IP socket:
<link allowmask="192.0.2.0/24 198.51.100.*"
bind="203.0.113.2"
fingerprint="1fba42fde3c4e76b7cca45764faf5cc1a7c903a77e0f2bc978d990280b15906f"
hidden="no"
name="hub.example.com"
ipaddr="server-1a4.example.net"
port="7000"
recvpass="incoming!password"
sendpass="outgoing!password"
sslprofile="Servers"
timeout="15s">
A server that connects insecurely over a IP socket (only possible for local connections):
<link allowmask="127.0.0.0/8"
bind="127.0.0.1"
hidden="no"
name="localhub.example.com"
ipaddr="127.0.0.1"
port="7000"
recvpass="incoming!password"
sendpass="outgoing!password"
timeout="15s">
A server that connects over a UNIX socket:
<link hidden="no"
name="services.example.com"
path="services.sock"
recvpass="incoming!password"
sendpass="outgoing!password"
timeout="15s">
<options>
This module extends the core <options>
tag with the following fields:
Name | Type | Default Value | Description |
---|---|---|---|
allowmismatch | Boolean | No | Whether optionally common modules can be loaded on one server but not the other. |
announcets | Boolean | No | Whether to announce changes in channel creation time. |
pingwarning | Duration | 15s | The number of seconds to wait before warning server operators that a server has not responded to a ping. |
serverpingfreq | Duration | 1m | The number of seconds to wait between pinging servers. |
Example Usage
<options ...
allowmismatch="no"
announcets="no"
pingwarning="15"
serverpingfreq="120">
<performance>
This module extends the core <performance>
tag with the following fields:
Name | Type | Default Value | Description |
---|---|---|---|
quietbursts | Boolean | No | Whether to inform server operators of users who connect during a network merge. |
Example Usage
<performance ...
quietbursts="yes">
<security>
This module extends the core <security>
tag with the following fields:
Name | Type | Default Value | Description |
---|---|---|---|
flatlinks | Boolean | No | Whether to flatten the output of /LINKS to avoid leaking network architecture. |
hidesplits | Boolean | No | Whether to show *.net *.split instead of the server names when a netsplit happens |
hideservices | Boolean | No | Whether to hide services servers from the output of /LINKS and /MAP . |
Example Usage
<security ...
flatlinks="no"
hidesplits="no"
hideservices="no">
<service>
The <service>
tag defines one or more services servers. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
server | Text | None | The name of a services server. You must NOT specify a server that normal users can connect to here. |
silent | Boolean | No | Whether server operators should be informed of users on this server connecting and disconnecting. |
Example Usage
Marks services.example.com as a silent services server:
<service server="services.example.com"
silent="yes">
Commands
Name | Parameter Count | Syntax | Description |
---|---|---|---|
CONNECT | 1 | <server> | Attempts to connect the local server to <server>. |
LINKS | 0 | None | Lists all servers connected to the current one. |
MAP | 0 | None | Shows a textual map of the network architecture. |
RCONNECT | 2 | <remote-server-mask> <target-server-mask> | Attempts to connect <remote-server-mask> to <target-server-mask> |
RSQUIT | 2 | <server-mask> [<reason>] | Attempts to disconnect <server-mask> from the network with <reason>. |
SQUIT | 2 | <server-mask> [<reason>] | Attempts to disconnect <server-mask> from the local server with <reason>. |
Example Usage
Connects the local server to hub.example.com:
/CONNECT hub.example.com
Connects the remote server eu-hub.example.com to us-hub.example.com:
/RCONNECT eu-hub.example.com us-hub.example.com
Disconnects the remote server eu-hub.example.com with no reason:
/RSQUIT eu-hub.example.com
Disconnects the remote server us-hub.example.com with the reason "Updating InspIRCd":
/RSQUIT us-hub.example.com :Updating InspIRCd
Disconnects the local server eu-hub.example.com with no reason:
/SQUIT eu-hub.example.com
Disconnects the local server us-hub.example.com with the reason "Updating InspIRCd":
/SQUIT us-hub.example.com :Updating InspIRCd
Server Notice Masks
Character | Description |
---|---|
l | Messages relating to server linking on the local server. |
L | Messages relating to server linking on a remote server. |
Statistics
Character | Description |
---|---|
c | Lists servers which the server may connect to or allow connections from. |
n | Lists servers which the server may connect to or allow connections from. |
Special Notes
Linking non-local servers without TLS (SSL) is a serious privacy risk and will be removed in the next major version of InspIRCd.