biboumi.1.rst 20.4 KB
Newer Older
louiz’'s avatar
louiz’ committed
1 2 3 4 5 6
=======================
Biboumi(1) User Manual
=======================

.. contents:: :depth: 2

7
NAME
louiz’'s avatar
louiz’ committed
8
====
9

louiz’'s avatar
louiz’ committed
10
biboumi - XMPP gateway to IRC
11

louiz’'s avatar
louiz’ committed
12 13
Description
===========
14 15 16 17 18

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.

louiz’'s avatar
louiz’ committed
19 20
Synopsis
========
21

louiz’'s avatar
louiz’ committed
22
biboumi [*config_filename*\ ]
23

louiz’'s avatar
louiz’ committed
24 25
Options
=======
26

27
Available command line options:
28

louiz’'s avatar
louiz’ committed
29 30
config_filename
---------------
31

louiz’'s avatar
louiz’ committed
32 33
Specify the file to read for configuration. See *CONFIG* section for more
details on its content.
34

louiz’'s avatar
louiz’ committed
35 36
Configuration
=============
37 38

The configuration file uses a simple format of the form
louiz’'s avatar
louiz’ committed
39
``option=value``. Here is a description of each possible option:
40

louiz’'s avatar
louiz’ committed
41 42 43
The configuration can be re-read at runtime (you can for example change the
log level without having to restart biboumi) by sending SIGUSR1 or SIGUSR2
(see kill(1)) to the process.
44

louiz’'s avatar
louiz’ committed
45 46
hostname
--------
47

louiz’'s avatar
louiz’ committed
48 49 50 51
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
52

louiz’'s avatar
louiz’ committed
53 54
password
--------
55

louiz’'s avatar
louiz’ committed
56 57 58
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*.
59

louiz’'s avatar
louiz’ committed
60 61
xmpp_server_ip
--------------
62

louiz’'s avatar
louiz’ committed
63 64 65
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.
66

louiz’'s avatar
louiz’ committed
67 68
port
----
69

louiz’'s avatar
louiz’ committed
70 71
The TCP port to use to connect to the local XMPP component. The default
value is 5347.
72

louiz’'s avatar
louiz’ committed
73 74
admin
-----
louiz’'s avatar
louiz’ committed
75

louiz’'s avatar
louiz’ committed
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
The bare JID of the gateway administrator. This JID will have more
privileges than other standard users (the admin thus needs to check their
privileges), for example some administration ad-hoc commands will only be
available to that JID.

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".  In that
mode, the virtual channel (see `Connect to an IRC server`_) is not
available and you still need to use the ! separator to send message to an
IRC user (for example "foo!@biboumi.example.com" to send a message to
foo), although the in-room JID still work as expected
("#channel@biboumi.example.com/Nick").  On the other hand, the '%' lose
any meaning.  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.

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
--------
louiz’'s avatar
louiz’ committed
131

louiz’'s avatar
louiz’ committed
132 133
A filename into which logs are written.  If none is provided, the logs are
written on standard output.
134

louiz’'s avatar
louiz’ committed
135 136
log_level
---------
137

louiz’'s avatar
louiz’ committed
138 139 140
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.
141

louiz’'s avatar
louiz’ committed
142 143
ca_file
-------
144

louiz’'s avatar
louiz’ committed
145 146 147
Specifies which file should be use 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.
louiz’'s avatar
louiz’ committed
148

louiz’'s avatar
louiz’ committed
149 150
outgoing_bind
-------------
louiz’'s avatar
louiz’ committed
151

louiz’'s avatar
louiz’ committed
152 153 154 155 156
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.
louiz’'s avatar
louiz’ committed
157

louiz’'s avatar
louiz’ committed
158 159
Usage
=====
160

louiz’'s avatar
louiz’ committed
161 162 163 164 165
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).

louiz’'s avatar
louiz’ committed
166 167 168
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
louiz’'s avatar
louiz’ committed
169 170 171
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.
172

louiz’'s avatar
louiz’ committed
173 174
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
175 176 177 178 179 180
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.

louiz’'s avatar
louiz’ committed
181
To cleanly shutdown the component, send a SIGINT or SIGTERM signal to it.
louiz’'s avatar
louiz’ committed
182
It will send messages to all connected IRC and XMPP servers to indicate a
louiz’'s avatar
louiz’ committed
183 184 185 186
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.
louiz’'s avatar
louiz’ committed
187

louiz’'s avatar
louiz’ committed
188 189
Addressing
----------
190 191

IRC entities are represented by XMPP JIDs.  The domain part of the JID is
louiz’'s avatar
louiz’ committed
192 193
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
louiz’'s avatar
louiz’ committed
194
concerned entity.
195

louiz’'s avatar
louiz’ committed
196
IRC channels have a local part formed like this:
louiz’'s avatar
louiz’ committed
197
``channel_name`` % ``irc_server``.
198

louiz’'s avatar
louiz’ committed
199 200
If the IRC channel you want to adress starts with the ``'#'`` character (or an
other character, announced by the IRC server, like ``'&'``, ``'+'`` or ``'!'``),
louiz’'s avatar
louiz’ committed
201 202
then you must include it in the JID.  Some other gateway implementations, as
well as some IRC clients, do not require them to be started by one of these
louiz’'s avatar
louiz’ committed
203
characters, adding an implicit ``'#'`` in that case.  Biboumi does not do that
204
because this gets confusing when trying to understand the difference between
louiz’'s avatar
louiz’ committed
205 206 207
the channels *#foo*, and *##foo*. Note that biboumi does not use the
presence of these special characters to identify an IRC channel, only the
presence of the separator `%` is used for that.
louiz’'s avatar
louiz’ committed
208

louiz’'s avatar
louiz’ committed
209
The channel name can also be empty (for example ``%irc.example.com``), in that
louiz’'s avatar
louiz’ committed
210 211 212
case this represents the virtual channel provided by biboumi.  See *Connect
to an IRC server* for more details.

213
There is two ways to address an IRC user, using a local part like this:
louiz’'s avatar
louiz’ committed
214
``nickname`` ! ``irc_server``
215
or by using the in-room address of the participant, like this:
louiz’'s avatar
louiz’ committed
216
``channel_name`` % ``irc_server`` @ ``biboumi.example.com`` / ``Nickname``
217 218

The second JID is available only to be compatible with XMPP clients when the
louiz’'s avatar
louiz’ committed
219 220
user wants to send a private message to the participant ``Nickname`` in the
room ``channel_name%irc_server@biboumi.example.com``.
221

louiz’'s avatar
louiz’ committed
222 223 224 225 226
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.

227 228 229
Also note that some IRC nicknames 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 have to use a jid like
louiz’'s avatar
louiz’ committed
230 231
``%irc.example.com@biboumi.example.com/AnnoyingNickn@me``, because the JID
``AnnoyingNickn@me!irc.example.com@biboumi.example.com`` would not work.
232

louiz’'s avatar
louiz’ committed
233 234
Examples:

louiz’'s avatar
louiz’ committed
235
* ``#foo%irc.example.com@biboumi.example.com`` is the #foo IRC channel, on the
louiz’'s avatar
louiz’ committed
236 237 238
  irc.example.com IRC server, and this is served by the biboumi instance on
  biboumi.example.com

louiz’'s avatar
louiz’ committed
239
* ``toto!irc.example.com@biboumi.example.com`` is the IRC user named toto, or
louiz’'s avatar
louiz’ committed
240 241
  TotO, etc.

louiz’'s avatar
louiz’ committed
242
* ``irc.example.com@biboumi.example.com`` is the IRC server irc.example.com.
louiz’'s avatar
louiz’ committed
243

louiz’'s avatar
louiz’ committed
244
* ``%irc.example.com@biboumi.example.com`` is the virtual channel provided by
louiz’'s avatar
louiz’ committed
245
  biboumi, for the IRC server irc.example.com.
louiz’'s avatar
louiz’ committed
246

louiz’'s avatar
louiz’ committed
247 248 249
Note: Some JIDs are valid but make no sense in the context of
biboumi:

louiz’'s avatar
louiz’ committed
250
* ``!irc.example.com@biboumi.example.com`` is the empty-string nick on the
louiz’'s avatar
louiz’ committed
251 252
  irc.example.com server. It makes no sense to try to send messages to it.

louiz’'s avatar
louiz’ committed
253
* ``#test%@biboumi.example.com``, or any other JID that does not contain an
louiz’'s avatar
louiz’ committed
254 255 256 257 258 259 260
  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.
261

louiz’'s avatar
louiz’ committed
262 263
Join an IRC channel
-------------------
264

louiz’'s avatar
louiz’ committed
265 266
To join an IRC channel ``#foo`` on the IRC server ``irc.example.com``,
join the XMPP MUC ``#foo%irc.example.com@biboumi.example.com``.
267

louiz’'s avatar
louiz’ committed
268 269
Connect to an IRC server
------------------------
270 271 272 273 274 275

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.  To be able to stay
connected to an IRC server without having to be in a real IRC channel,
biboumi provides a virtual channel on the jid
louiz’'s avatar
louiz’ committed
276 277
``%irc.example.com@biboumi.example.com``.  For example if you want to join the
channel ``#foo`` on the server ``irc.example.com``, but you need to authenticate
louiz’'s avatar
louiz’ committed
278
to a bot of the server before you’re allowed to join it, you can first join
louiz’'s avatar
louiz’ committed
279
the room ``%irc.example.com@biboumi.example.com`` (this will effectively
louiz’'s avatar
louiz’ committed
280
connect you to the IRC server without joining any room), then send your
louiz’'s avatar
louiz’ committed
281 282
authentication message to the user ``bot!irc.example.com@biboumi.example.com``
and finally join the room ``#foo%irc.example.com@biboumi.example.com``.
283

louiz’'s avatar
louiz’ committed
284 285
Channel messages
----------------
286 287 288 289 290

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
louiz’'s avatar
louiz’ committed
291 292
displayed in your XMPP client may not be the same than the order on other
IRC users’.
293

louiz’'s avatar
louiz’ committed
294 295
List channels
-------------
louiz’'s avatar
louiz’ committed
296 297 298 299 300 301

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, and biboumi does not (yet) support result set management (XEP 0059)
so the result stanza may be very big.

louiz’'s avatar
louiz’ committed
302 303
Nicknames
---------
304 305 306

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
louiz’'s avatar
louiz’ committed
307
different from XMPP where a user can have a different nick on each MUC,
308 309 310 311 312 313 314
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.
315 316 317 318 319
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.
320

louiz’'s avatar
louiz’ committed
321 322
Private messages
----------------
323 324 325

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
louiz’'s avatar
louiz’ committed
326
as toto on the channel #bar (as long as these two channels are on the same
327 328 329
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
louiz’'s avatar
louiz’ committed
330
\#test%irc.example.com@biboumi.example.com/nickname), in which case future
331
messages from that same user will be received from that same “in-room” JID.
332

louiz’'s avatar
louiz’ committed
333 334
Notices
-------
335 336 337 338

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

louiz’'s avatar
louiz’ committed
339 340
Kicks and bans
--------------
341 342 343

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
louiz’'s avatar
louiz’ committed
344
mode +b on that user nick or host (see `IRC modes`_) and then kick it.
345

louiz’'s avatar
louiz’ committed
346 347
Encoding
--------
348

louiz’'s avatar
louiz’ committed
349
On XMPP, the encoding is always ``UTF-8``, whereas on IRC the encoding of
350 351 352 353 354
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
louiz’'s avatar
louiz’ committed
355 356 357
``iso_8859-1`` (because this appears to be the most common case, at least
on the channels I visit) to ``UTF-``.  If that conversion fails at some
point, a placeholder character ``'�'`` is inserted to indicate this
358 359 360 361 362
decoding error.

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

louiz’'s avatar
louiz’ committed
363 364
IRC modes
---------
365

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

louiz’'s avatar
louiz’ committed
373
To change modes, simply send a message starting with “``/mode``” followed by
louiz’'s avatar
louiz’ committed
374 375 376 377 378
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.
379 380 381 382 383 384 385 386

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:

louiz’'s avatar
louiz’ committed
387 388
``+q``
  Sets the participant’s role to ``moderator`` and its affiliation to ``owner``.
louiz’'s avatar
louiz’ committed
389

louiz’'s avatar
louiz’ committed
390 391
``+a``
  Sets the participant’s role to ``moderator`` and its affiliation to ``owner``.
louiz’'s avatar
louiz’ committed
392

louiz’'s avatar
louiz’ committed
393 394
``+o``
  Sets the participant’s role to ``moderator`` and its affiliation to  ``admin``.
395

louiz’'s avatar
louiz’ committed
396 397
``+h``
  Sets the participant’s role to ``moderator`` and its affiliation to  ``member``.
398

louiz’'s avatar
louiz’ committed
399 400
``+v``
  Sets the participant’s role to `participant` and its affiliation to ``member``.
401

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

louiz’'s avatar
louiz’ committed
404
Affiliation set to ``none``
405 406
  Sets mode to -vhoaq

louiz’'s avatar
louiz’ committed
407
Affiliation set to ``member``
408 409
  Sets mode to +v-hoaq

louiz’'s avatar
louiz’ committed
410
Role set to ``moderator``
411 412
  Sets mode to +h-oaq

louiz’'s avatar
louiz’ committed
413
Affiliation set to ``admin``
414 415
  Sets mode to +o-aq

louiz’'s avatar
louiz’ committed
416
Affiliation set to ``owner``
417 418
  Sets mode to +a-q

louiz’'s avatar
louiz’ committed
419 420
Ad-hoc commands
---------------
louiz’'s avatar
louiz’ committed
421 422

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

louiz’'s avatar
louiz’ committed
425 426
On the gateway itself (e.g on the JID biboumi.example.com):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
louiz’'s avatar
louiz’ committed
427

louiz’'s avatar
louiz’ committed
428
- ping: Just respond “pong”
louiz’'s avatar
louiz’ committed
429

louiz’'s avatar
louiz’ committed
430 431
- hello: Provide a form, where the user enters their name, and biboumi
  responds with a nice greeting.
louiz’'s avatar
louiz’ committed
432

louiz’'s avatar
louiz’ committed
433 434 435 436 437 438 439
- 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.
louiz’'s avatar
louiz’ committed
440

louiz’'s avatar
louiz’ committed
441 442 443 444 445
- 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.
446

louiz’'s avatar
louiz’ committed
447 448
On a server JID (e.g on the JID chat.freenode.org@biboumi.example.com)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
449

louiz’'s avatar
louiz’ committed
450 451
- Configure: Lets each user configure some options that applies to the
  concerned IRC server.
452

louiz’'s avatar
louiz’ committed
453 454
On a channel JID (e.g on the JID #test%chat.freenode.org@biboumi.example.com)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
455

louiz’'s avatar
louiz’ committed
456 457 458 459 460 461
- 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.
462

louiz’'s avatar
louiz’ committed
463 464
Raw IRC messages
----------------
louiz’'s avatar
louiz’ committed
465 466 467 468 469 470 471 472 473 474 475 476 477

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.

louiz’'s avatar
louiz’ committed
478 479
Security
========
480

481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506
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 serveres.  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.