Provided by: biboumi_9.0-4_amd64 

NAME
biboumi - biboumi Documentation
SYNOPSIS
biboumi [config_filename]
ADMINISTRATOR DOCUMENTATION
Usage
Biboumi acts as a server, it should be run as a daemon that lives in the background for as long as it is
needed. Note that biboumi does not daemonize itself, this task should be done by your init system
(SysVinit, systemd, upstart).
When started, biboumi connects, without encryption (see Security), to the local XMPP server on the port
5347 and authenticates with the provided password. Biboumi then serves the configured hostname: this
means that all XMPP stanza with a to JID on that domain will be forwarded to biboumi by the XMPP server,
and biboumi will only send messages coming from that hostname.
To cleanly shutdown the component, send a SIGINT or SIGTERM signal to it. It will send messages to all
connected IRC and XMPP servers to indicate a reason why the users are being disconnected. Biboumi exits
when the end of communication is acknowledged by all IRC servers. If one or more IRC servers do not
respond, biboumi will only exit if it receives the same signal again or if a 2 seconds delay has passed.
Configuration
Configuration happens in different places, with different purposes:
• The main and global configuration that specifies vital settings for the daemon to run, like the
hostname, password etc. This is an admin-only configuration, and this is described in the next section.
• A TLS configuration, also admin-only, that can be either global or per-domain. See TLS configuration
section.
• Using the ad-hoc commands, each user can configure various settings for themself
Daemon configuration
The configuration file is read by biboumi as it starts. The path is specified as the only argument to the
biboumi binary.
The configuration file uses a simple format of the form option=value (note that there are no spaces
before or after the equal sign).
The values from the configuration file can be overridden by environment variables, with the name all in
upper case and prefixed with BIBOUMI_. For example, if the environment contains “BIBOUMI_PASSWORD=blah",
this will override the value of the “password” option in the configuration file.
Sending SIGUSR1, SIGUSR2 or SIGHUP (see kill(1)) to the process will force it to re-read the
configuration and make it close and re-open the log files. You can use this to change any configuration
option at runtime, or do a log rotation.
Options
A configuration file can look something like this:
hostname=biboumi.example.com
password=mypassword
xmpp_server_ip=127.0.0.1
port=5347
admin=myself@example.com
db_name=postgresql://biboumi:password@localhost/biboumi
realname_customization=true
realname_from_jid=false
log_file=
ca_file=
outgoing_bind=192.168.0.12
Here is a description of all available options
hostname
Mandatory. The hostname served by the XMPP gateway. This domain must be configured in the XMPP server as
an external component. See the manual for your XMPP server for more information. For prosody, see
http://prosody.im/doc/components#adding_an_external_component
password
Mandatory. The password used to authenticate the XMPP component to your XMPP server. This password must
be configured in the XMPP server, associated with the external component on hostname.
xmpp_server_ip
The IP address to connect to the XMPP server on. The connection to the XMPP server is unencrypted, so the
biboumi instance and the server should normally be on the same host. The default value is 127.0.0.1.
port
The TCP port to use to connect to the local XMPP component. The default value is 5347.
db_name
The name of the database to use. This option can only be used if biboumi has been compiled with a
database support (Sqlite3 and/or PostgreSQL). If the value begins with the postgresql scheme,
“postgresql://” or “postgres://”, then biboumi will try to connect to the PostgreSQL database specified
by the URI. See the PostgreSQL doc for all possible values. For example the value could be
“postgresql://user:secret@localhost”. If the value does not start with the postgresql scheme, then it
specifies a filename that will be opened with Sqlite3. For example the value could be
“/var/lib/biboumi/biboumi.sqlite”.
admin
The bare JID of the gateway administrator. This JID will have more privileges than other standard users,
for example some administration ad-hoc commands will only be available to that JID.
If you need more than one administrator, separate them with a colon (:).
fixed_irc_server
If this option contains the hostname of an IRC server (for example irc.example.org), then biboumi will
enforce the connexion to that IRC server only. This means that a JID like #chan@biboumi.example.com must
be used instead of #chan%irc.example.org@biboumi.example.com. The % character loses any meaning in the
JIDs. It can appear in the JID but will not be interpreted as a separator (thus the JID
#channel%hello@biboumi.example.com points to the channel named #channel%hello on the configured IRC
server) This option can for example be used by an administrator that just wants to let their users join
their own IRC server using an XMPP client, while forbidding access to any other IRC server.
persistent_by_default
If this option is set to true, all rooms will be persistent by default: the value of the “persistent”
option in the global configuration of each user will be “true”, but the value of each individual room
will still default to false. This means that a user just needs to change the global “persistent”
configuration option to false in order to override this.
If it is set to false (the default value), all rooms are not persistent by default.
Each room can be configured individually by each user, to override this default value. See Ad-hoc
commands.
realname_customization
If this option is set to “false” (default is “true”), the users will not be able to use the ad-hoc
commands that lets them configure their realname and username.
realname_from_jid
If this option is set to “true”, the realname and username of each biboumi user will be extracted from
their JID. The realname is their bare JID, and the username is the node-part of their JID. Note that if
realname_customization is “true”, each user will still be able to customize their realname and username,
this option just decides the default realname and username.
If this option is set to “false” (the default value), the realname and username of each user will be set
to the nick they used to connect to the IRC server.
webirc_password
Configure a password to be communicated to the IRC server, as part of the WEBIRC message (see
https://kiwiirc.com/docs/webirc). If this option is set, an additional DNS resolution of the hostname of
each XMPP server will be made when connecting to an IRC server.
log_file
A filename into which logs are written. If none is provided, the logs are written on standard output.
log_level
Indicate what type of log messages to write in the logs. Value can be from 0 to 3. 0 is debug, 1 is
info, 2 is warning, 3 is error. The default is 0, but a more practical value for production use is 1.
ca_file
Specifies which file should be used as the list of trusted CA when negociating a TLS session. By default
this value is unset and biboumi tries a list of well-known paths.
outgoing_bind
An address (IPv4 or IPv6) to bind the outgoing sockets to. If no value is specified, it will use the one
assigned by the operating system. You can for example use outgoing_bind=192.168.1.11 to force biboumi to
use the interface with this address. Note that this is only used for connections to IRC servers.
identd_port
The TCP port on which to listen for identd queries. The default is the standard value: 113. To be able
to listen on this privileged port, biboumi needs to have certain capabilities: on linux, using systemd,
this can be achieved by adding AmbientCapabilities=CAP_NET_BIND_SERVICE to the unit file. On other
systems, other solutions exist, like the portacl module on FreeBSD.
If biboumi’s identd server is properly started, it will receive queries from the IRC servers asking for
the “identity” of each IRC connection made to it. Biboumi will answer with a hash of the JID that made
the connection. This is useful for the IRC server to be able to distinguish the different users, and be
able to deal with the absuses without having to simply ban the IP. Without this identd server, moderation
is a lot harder, because all the different users of a single biboumi instance all share the same IP, and
they can’t be distinguished by the IRC servers.
To disable the built-in identd, you may set identd_port to 0.
policy_directory
A directory that should contain the policy files, used to customize Botan’s behaviour when negociating
the TLS connections with the IRC servers. If not specified, the directory is the one where biboumi’s
configuration file is located: for example if biboumi reads its configuration from
/etc/biboumi/biboumi.cfg, the policy_directory value will be /etc/biboumi.
TLS configuration
Various settings of the TLS connections can be customized using policy files. The files should be located
in the directory specified by the configuration option policy_directory. When attempting to connect to
an IRC server using TLS, biboumi will use Botan’s default TLS policy, and then will try to load some
policy files to override the values found in these files. For example, if policy_directory is
/etc/biboumi, when trying to connect to irc.example.com, biboumi will try to read
/etc/biboumi/policy.txt, use the values found to override the default values, then it will try to read
/etc/biboumi/irc.example.com.policy.txt and re-override the policy with the values found in this file.
The policy.txt file applies to all the connections, and irc.example.policy.txt will only apply (in
addition to policy.txt) when connecting to that specific server.
To see the list of possible options to configure, refer to Botan’s TLS documentation. In addition to
these Botan options, biboumi implements a few custom options listed hereafter: - verify_certificate: if
this value is set to false, biboumi will not check the certificate validity at all. The default value is
true.
By default, biboumi provides a few policy files, to work around some issues found with a few well-known
IRC servers.
Security
The connection to the XMPP server can only be made on localhost. The XMPP server is not supposed to
accept non-local connections from components. Thus, encryption is not used to connect to the local
XMPP server because it is useless.
If compiled with the Botan library, biboumi can use TLS when communicating with the IRC servers. It will
first try ports 6697 and 6670 and use TLS if it succeeds, if connection fails on both these ports, the
connection is established on port 6667 without any encryption.
Biboumi does not check if the received JIDs are properly formatted using nodeprep. This must be done by
the XMPP server to which biboumi is directly connected.
Biboumi does not provide a way to ban users from connecting to it, has no protection against flood or any
sort of abuse that your users may cause on the IRC servers. Some XMPP server however offer the
possibility to restrict what JID can access a gateway. Use that feature if you wish to grant access to
your biboumi instance only to a list of trusted users.
AUTHOR
Florent Le Coz
COPYRIGHT
2022, Florent Le Coz
8.4 Feb 09, 2022 BIBOUMI(1)