Provided by: biboumi_9.0+20231006-2_amd64 bug

NAME

       biboumi - biboumi Documentation

SYNOPSIS

       biboumi [-ht] [config_filename]

COMMAND-LINE OPTIONS

   -h, \-\-help
       Display a help message and exit.

   -t, \-\-test-config
       Do  not  run,  just  test  the  configuration  file  syntax.  Exit  with a 0 status if the
       configuration is valid, exits with a non-zero status otherwise.

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 negotiating 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
       negotiating 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

       2024, Florent Le Coz