Provided by: biboumi_8.3-1build3_amd64 bug

NAME

       biboumi - XMPP gateway to IRC

Description

       Biboumi  is  an  XMPP  gateway that connects to IRC servers and translates between the two
       protocols.  It can be used to access IRC channels  using  any  XMPP  client  as  if  these
       channels were XMPP MUCs.

Synopsis

       biboumi [config_filename]

Options

       Available command line options:

   config_filename
       Specify  the  file  to  read  for  configuration.   See the Configuration section for more
       details on its content.

Configuration

       The configuration file uses a simple format of the form option=value.

       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  or  SIGUSR2  (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.

       Here is a description of every possible option:

   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
       <https://www.postgresql.org/docs/current/static/libpq-connect.html#idm46428693970032>  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
       (https://botan.randombit.net/manual/tls.html#tls-policies).

       By default, biboumi provides a few policy files, to work around some issues found  with  a
       few well-known IRC servers.

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.

       When  a  user  joins  an  IRC  channel on an IRC server (see Join an IRC channel), biboumi
       connects to the remote IRC server, sets the user’s nick as requested, and  then  tries  to
       join  the  specified  channel.  If the same user subsequently tries to connect to an other
       channel on the same server, the same IRC connection is used.  If, however, an  other  user
       wants  to  join  an IRC channel on that same IRC server, biboumi opens a new connection to
       that server.  Biboumi connects once to each IRC server, for each user on it.

       Additionally, if one user is using more than one clients (with the same  bare  JID),  they
       can  join  the  same IRC channel (on the same server) behind one single nickname.  Biboumi
       will forward all the messages (the channel ones and the private ones) and the presences to
       all  the  resources  behind  that  nick.   There is no need to have multiple nicknames and
       multiple connections to be able to take part in a conversation (or idle) in a channel from
       a mobile client while the desktop client is still connected, for example.

       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.

   Addressing
       IRC  entities  are  represented  by  XMPP  JIDs.  The domain part of the JID is the domain
       served by biboumi (the part after the @, biboumi.example.com in  the  examples),  and  the
       local part (the part before the @) depends on the concerned entity.

       IRC channels and IRC users have a local part formed like this: name % irc_server.

       name  can be a channel name or an user nickname.  The distinction between the two is based
       on the first character: by default, if the name starts with '#' or '&' (but  this  can  be
       overridden  by  the  server,  using  the  ISUPPORT  extension)  then  it’s a channel name,
       otherwise this is a nickname.

       There is two ways to address an IRC user,  using  a  local  part  like  this:  nickname  %
       irc_server  or  by using the in-room address of the participant, like this: channel_name %
       irc_server @ biboumi.example.com / Nickname

       The second JID is available only to be compatible with XMPP clients when the user wants to
       send    a    private    message    to    the    participant    Nickname    in   the   room
       channel_name%irc_server@biboumi.example.com.

       On XMPP, the node part of the JID can only be lowercase.  On the other hand, IRC nicknames
       are  case-insensitive,  this  means  that  the  nicknames  toto,  Toto,  tOtO and TOTO all
       represent the same IRC user.  This means you can talk to the  user  toto,  and  this  will
       work.

       Also  note that some IRC nicknames or channels may contain characters that are not allowed
       in the local part of a JID (for example '@').  If you need to send a  message  to  a  nick
       containing      such      a      character,     you     can     use     a     jid     like
       %irc.example.com@biboumi.example.com/AnnoyingNickn@me,       because        the        JID
       AnnoyingNickn@me%irc.example.com@biboumi.example.com  would  not work.  And if you need to
       address a channel that contains such invalid characters,  you  have  to  use  jid-escaping
       (http://www.xmpp.org/extensions/xep-0106.html#escaping),   and   replace   each  of  these
       characters with their escaped version, for example to join the channel #b@byfoot, you need
       to use the following JID: #b\40byfoot%irc.example.com@biboumi.example.com.

       Examples:

       • #foo%irc.example.com@biboumi.example.com is the #foo IRC channel, on the irc.example.com
         IRC server, and this is served by the biboumi instance on biboumi.example.com

       • toto%irc.example.com@biboumi.example.com is the IRC user named toto, or TotO, etc.

       • irc.example.com@biboumi.example.com is the IRC server irc.example.com.

       Note: Some JIDs are valid but make no sense in the context of biboumi:

       • #test%@biboumi.example.com, or any other JID that does not  contain  an  IRC  server  is
         invalid.  Any message to that kind of JID will trigger an error, or will be ignored.

       If  compiled  with  Libidn,  an  IRC  channel  participant has a bare JID representing the
       “hostname” provided by the IRC server.  This JID can only be used to set  IRC  modes  (for
       example to ban a user based on its IP), or to identify user.  It cannot be used to contact
       that user using biboumi.

   Join an IRC channel
       To join an IRC channel  #foo  on  the  IRC  server  irc.example.com,  join  the  XMPP  MUC
       #foo%irc.example.com@biboumi.example.com.

   Connect to an IRC server
       The  connection  to  the  IRC server is automatically made when the user tries to join any
       channel on that IRC server.  The connection is closed whenever the last  channel  on  that
       server is left by the user.

   Roster
       You  can  add some JIDs provided by biboumi into your own roster, to receive presence from
       them.  Biboumi will always automatically accept your requests.

   Biboumi’s JID
       By adding the component JID into your roster, the user will receive an available  presence
       whenever  it  is started, and an unavailable presence whenever it is being shutdown.  This
       is useful to quickly view if that biboumi instance is started or not.

   IRC server JID
       These presence will appear online in the user’s roster whenever they are connected to that
       IRC  server (see Connect to an IRC server for more details).  This is useful to keep track
       of which server an user is connected to: this is sometimes hard  to  remember,  when  they
       have many clients, or if they are using persistent channels.

   Channel messages
       On  XMPP,  unlike  on  IRC,  the  displayed  order  of  the  messages  is the same for all
       participants of a MUC.  Biboumi can not however provide this feature, as  it  cannot  know
       whether the IRC server has received and forwarded the messages to other users.  This means
       that the order of the messages displayed in your XMPP client may not be the  same  as  the
       order on other IRC users’.

   History
       Public  channel  messages  are  saved  into  archives,  inside  the  database,  unless the
       record_history option is set to  false  by  that  user  (see  Ad-hoc  commands).   Private
       messages  (messages  that are sent directly to a nickname, not a channel) are never stored
       in the database.

       A  channel  history  can  be  retrieved  by  using  Message   archive   management   (MAM)
       (https://xmpp.org/extensions/xep-0313.htm)  on  the  channel  JID.   The  results  can  be
       filtered by start and end dates.

       When a channel is joined, if the client doesn’t  specify  any  limit,  biboumi  sends  the
       max_history_length  last  messages  found in the database as the MUC history.  If a client
       wants to only use MAM for the archives (because it’s more  convenient  and  powerful),  it
       should  request to receive no history by using an attribute maxchars='0' or maxstanzas='0'
       as defined in XEP 0045, and do a proper MAM request instead.

       Note: the maxchars attribute is ignored unless its value  is  exactly  0.   Supporting  it
       properly would be very hard and would introduce a lot of complexity for almost no benefit.

       For  a  given  channel, each user has her or his own archive.  The content of the archives
       are never shared, and thus a user can not use someone else’s archive to get  the  messages
       that  they  didn’t  receive  when  they were offline.  Although this feature would be very
       convenient, this would introduce a very important privacy issue: for example if a  biboumi
       gateway  is  used  by  two  users,  by querying the archive one user would be able to know
       whether or not the other user was in a room at a given time.

   List channels
       You can list the IRC channels on a given IRC server by sending an XMPP disco items request
       on  the  IRC  server  JID.   The  number of channels on some servers is huge so the result
       stanza may be very big, unless your client supports result set management (XEP 0059)

   Nicknames
       On IRC, nicknames are server-wide.  This means that one user only has one single  nickname
       at  one  given  time on all the channels of a server.  This is different from XMPP where a
       user can have a different nick on each MUC, even if these MUCs are on the same server.

       This means that the nick you choose when joining your first IRC channel  on  a  given  IRC
       server  will be your nickname in all other channels that you join on that same IRC server.
       If you explicitely change your nickname on one channel, your nickname will be  changed  on
       all  channels  on  the  same server as well.  Joining a new channel with a different nick,
       however, will not change your nick.  The provided nick will be ignored, in order to  avoid
       changing  your  nick  on  the  whole  server  by mistake.  If you want to have a different
       nickname in the channel you’re going to join, you need to do it explicitly with  the  NICK
       command before joining the channel.

   Private messages
       Private messages are handled differently on IRC and on XMPP.  On IRC, you talk directly to
       one server-user: toto on the channel #foo is the same user as toto on the channel #bar (as
       long  as  these  two  channels  are  on the same IRC server).  By default you will receive
       private        messages        from         the         “global”         user         (aka
       <nickname%irc.example.com@biboumi.example.com>),  unless  you previously sent a message to
       an              in-room              participant              (something              like
       #<test%irc.example.com@biboumi.example.com/nickname>),  in which case future messages from
       that same user will be received from that same “in-room” JID.

   Notices
       Notices are received exactly like private messages.  It is not possible to send a notice.

   Topic
       The topic can be set and retrieved seemlessly.  The unique difference is that if  an  XMPP
       user  tries  to set a multiline topic, every line return (\n) will be replaced by a space,
       because the IRC server wouldn’t accept it.

   Invitations
       If the invited JID is a user JID served by this biboumi  instance,  it  will  forward  the
       invitation  to  the target nick, over IRC.  Otherwise, the mediated instance will directly
       be sent to the invited JID, over XMPP.

       Example: if the user wishes to invite the IRC user “FooBar” into a room, they  can  invite
       one of the following “JIDs” (one of them is not a JID, actually):

       • <foobar%anything@biboumi.example.com>

       • <anything@biboumi.example.com/FooBar>

       • FooBar

       (Note  that  the  “anything”  parts  are  simply  ignored because they carry no additional
       meaning for biboumi: we already know which IRC server is targeted using  the  JID  of  the
       target channel.)

       Otherwise, any valid JID can be used, to invite any XMPP user.

   Kicks and bans
       Kicks  are transparently translated from one protocol to another.  However banning an XMPP
       participant has no effect.  To ban an user you need to set a mode +b on that user nick  or
       host (see IRC modes) and then kick it.

   Encoding
       On  XMPP, the encoding is always UTF-8, whereas on IRC the encoding of each message can be
       anything.

       This means that biboumi has to convert everything  coming  from  IRC  into  UTF-8  without
       knowing  the  encoding  of  the received messages.  To do so, it checks if each message is
       UTF-8 valid, if not it tries to convert from iso_8859-1 (because this appears  to  be  the
       most common case, at least on the channels I visit) to UTF-8.  If that conversion fails at
       some point, a placeholder character '�' is inserted to indicate this decoding error.

       Messages are always sent in UTF-8 over IRC, no conversion is done in that direction.

   IRC modes
       One feature that doesn’t exist on XMPP but does on IRC is the  modes.   Although  some  of
       these  modes  have  a  correspondance in the XMPP world (for example the +o mode on a user
       corresponds to the moderator role in XMPP), it is impossible to map all these modes to  an
       XMPP  feature.  To circumvent this problem, biboumi provides a raw notification when modes
       are changed, and lets the user change the modes directly.

       To change modes, simply send a message starting with “/mode” followed by the modes and the
       arguments  you want to send to the IRC server.  For example “/mode +aho louiz”.  Note that
       your XMPP client may interprete messages begining with “/” like a  command.   To  actually
       send  a message starting with a slash, you may need to start your message with “//mode” or
       “/say /mode”, depending on your client.

       When a mode is changed, the user is notified by a message coming from the  MUC  bare  JID,
       looking  like  “Mode  #foo  [+ov]  [toto  tutu]”.   In addition, if the mode change can be
       translated to an XMPP feature, the user will be notified of this XMPP event as well.   For
       example  if  a  mode “+o toto” is received, then toto’s role will be changed to moderator.
       The mapping between IRC modes and XMPP features is as follow:

       +q     Sets the participant’s role to moderator and its affiliation to owner.

       +a     Sets the participant’s role to moderator and its affiliation to owner.

       +o     Sets the participant’s role to moderator and its affiliation to admin.

       +h     Sets the participant’s role to moderator and its affiliation to member.

       +v     Sets the participant’s role to participant and its affiliation to member.

       Similarly, when a biboumi user changes some participant's  affiliation  or  role,  biboumi
       translates that in an IRC mode change.

       Affiliation set to none
              Sets mode to -vhoaq

       Affiliation set to member
              Sets mode to +v-hoaq

       Role set to moderator
              Sets mode to +h-oaq

       Affiliation set to admin
              Sets mode to +o-aq

       Affiliation set to owner
              Sets mode to +a-q

   Ad-hoc commands
       Biboumi  supports  a  few ad-hoc commands, as described in the XEP 0050.  Different ad-hoc
       commands are available for each JID type.

   On the gateway itself (e.g on the JID biboumi.example.com):
       • ping: Just respond “pong”

       • hello: Provide a form, where the user enters their name, and  biboumi  responds  with  a
         nice greeting.

       • disconnect-user: Only available to the administrator.  The user provides a list of JIDs,
         and a quit message.  All the selected users are disconnected from all the IRC servers to
         which  they  were connected, using the provided quit message.  Sending SIGINT to biboumi
         is equivalent to using this command by selecting all the connected JIDs  and  using  the
         “Gateway  shutdown”  quit  message,  except  that  biboumi does not exit when using this
         ad-hoc command.

       • disconnect-from-irc-servers: Disconnect a single user from one or more IRC server.   The
         user  is  immediately  disconnected by closing the socket, no message is sent to the IRC
         server, but the user is of course notified with an XMPP message.  The administrator  can
         disconnect any user, while the other users can only disconnect themselves.

       • configure:  Lets  each  user configure some options that applies globally.  The provided
         configuration form contains these fields: *  Record  History:  whether  or  not  history
         messages  should  be saved in the database.  * Max history length: The maximum number of
         lines in the history that the server is allowed to send when joining a channel.

                • Persistent: Overrides the value specified in each individual channel.  If  this
                  option  is  set  to  true,  all  channels  are persistent, whether or not their
                  specific value is true or false.  This option is true by default  for  everyone
                  if  the  persistent_by_default  configuration  option  is  true, otherwise it’s
                  false.  See below for more details on what a persistent channel is.  This value
                  is

   On a server JID (e.g on the JID <chat.freenode.org@biboumi.example.com>)
       • configure:  Lets  each  user  configure  some  options that applies to the concerned IRC
         server.  The provided configuration form contains these fields:

                • Address: This address (IPv4, IPv6 or  hostname)  will  be  used,  when  biboumi
                  connects  to this server.  This is a very handy way to have a custom name for a
                  network, and be able to edit the address to use if one endpoint for that server
                  is  dead, but continue using the same JID.  For example, a user could configure
                  the server “<freenode@biboumi.example.com>”,  set  “chat.freenode.net”  in  its
                  “Address”  field,  and then they would be able to use “freenode” as the network
                  name forever: if “chat.freenode.net” breaks for some reason, it can be  changed
                  to  “irc.freenode.org” instead, and the user would not need to change all their
                  bookmarks and settings.

                • Realname: The customized “real name” as it will appear  on  the  user’s  whois.
                  This    option    is    not   available   if   biboumi   is   configured   with
                  realname_customization to false.

                • Username: The “user” part in your user@host.  This option is not  available  if
                  biboumi is configured with realname_customization to false.

                • In  encoding:  The  incoming encoding.  Any received message that is not proper
                  UTF-8 will be converted will be converted from the configured In encoding  into
                  UTF-8.  If the conversion fails at some point, some characters will be replaced
                  by the placeholders.

                • Out encoding: Currently ignored.

                • After-connection IRC commands: Raw IRC commands that will be sent one by one to
                  the  server  immediately  after the connection has been successful.  It can for
                  example be used to identify yourself using NickServ, with a command like  this:
                  PRIVMSG NickServ :identify PASSWORD.

                • Ports:  The  list of TCP ports to use when connecting to this IRC server.  This
                  list will be tried in sequence, until the connection succeeds for one of  them.
                  The  connection made on these ports will not use TLS, the communication will be
                  insecure.  The default list contains 6697 and 6670.

                • TLS ports: A second list of ports to try when connecting  to  the  IRC  server.
                  The  only  difference is that TLS will be used if the connection is established
                  on one of these ports.  All the ports in this list will be tried  before  using
                  the  other  plain-text ports list.  To entirely disable any non-TLS connection,
                  just remove all the values from the “normal”  ports  list.   The  default  list
                  contains 6697.

                • Verify  certificate:  If  set to true (the default value), when connecting on a
                  TLS port, the connection will be aborted if the certificate is not  valid  (for
                  example  if it’s not signed by a known authority, or if the domain name doesn’t
                  match, etc).  Set it to false if you  want  to  connect  on  a  server  with  a
                  self-signed certificate.

                • SHA-1  fingerprint of the TLS certificate to trust: if you know the hash of the
                  certificate that the server is supposed to use, and you  only  want  to  accept
                  this one, set its SHA-1 hash in this field.

                • Nickname:  A nickname that will be used instead of the nickname provided in the
                  initial presence sent to join a channel.  This can be used if the  user  always
                  wants  to have the same nickname on a given server, and not have to bother with
                  setting that nick in all the bookmarks on that server.  The nickname can  still
                  manually be changed with a standard nick change presence.

                • Server  password:  A password that will be sent just after the connection, in a
                  PASS command.  This is usually used  in  private  servers,  where  you’re  only
                  allowed to connect if you have the password.  Note that, although this is NOT a
                  password that will be sent to NickServ (or some author authentication service),
                  some server (notably Freenode) use it as if it was sent to NickServ to identify
                  your nickname.

       • get-irc-connection-info:  Returns  some  information  about  the  IRC  server,  for  the
         executing  user.   It lets the user know if they are connected to this server, from what
         port, with or without TLS, and it gives the list of joined IRC channel, with a  detailed
         list of which resource is in which channel.

   On a channel JID (e.g on the JID #test%chat.<freenode.org@biboumi.example.com>)
       • configure:  Lets  each  user  configure  some  options that applies to the concerned IRC
         channel.  Some of these options, if not configured for a specific channel,  defaults  to
         the value configured at the IRC server level.  For example the encoding can be specified
         for both the channel and the server.  If an encoding is not specified for a channel, the
         encoding  configured  in  the  server applies.  The provided configuration form contains
         these fields: *  In  encoding:  see  the  option  with  the  same  name  in  the  server
         configuration  form.   * Out encoding: Currently ignored.  * Persistent: If set to true,
         biboumi will stay in this channel even when all the XMPP resources have left  the  room.
         I.e.   it  will  not  send  a  PART command, and will stay idle in the channel until the
         connection is forcibly closed.  If a resource comes back in the room again, and  if  the
         archiving  of  messages  is  enabled for this room, the client will receive the messages
         that where sent in this channel.  This option can be used to make biboumi act as an  IRC
         bouncer.   *  Record  History:  whether  or  not history messages should be saved in the
         database, for this specific channel.  If the value is “unset” (the  default),  then  the
         value  configured  globally  is  used.  This option is there, for example, to be able to
         enable history recording globally while  disabling  it  for  a  few  specific  “private”
         channels.

   Raw IRC messages
       Biboumi  tries  to support as many IRC features as possible, but doesn’t handle everything
       yet (or ever).  In order to let the user send any arbitrary IRC message, biboumi  forwards
       any  XMPP  message received on an IRC Server JID (see Addressing) as a raw command to that
       IRC server.

       For example, to WHOIS the user Foo on the server irc.example.com,  a  user  can  send  the
       message “WHOIS Foo” to irc.example.com@biboumi.example.com.

       The  message  will be forwarded as is, without any modification appart from adding \r\n at
       the end (to make it a valid IRC message).  You need to have a little bit of  understanding
       of the IRC protocol to use this feature.

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.

       Note  if you use a biboumi that you have no control on: remember that the administrator of
       the gateway you use is able to view all  your  IRC  conversations,  whether  you’re  using
       encryption  or  not.   This  is  exactly as if you were running your IRC client on someone
       else’s server.  Only use biboumi if you trust its administrator (or, better,  if  you  are
       the administrator) or if you don’t intend to have any private conversation.

       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.