@@ 1,4 1,4 @@
-BIBOUMI 1 "2014-02-17"
+BIBOUMI 1 "2014-06-02"
@@ 48,18 48,19 @@ The configuration file uses a simple format of the form
- The bare JID of the gateway admin. This JID will have more privileges than
- other standard users, for example some administration ad-hoc commands will
- only be available to that JID.
+ 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.
A filename into which logs are written. If none is provided, the logs are
- written on standard output
+ written on standard output.
- Indicate what type of log messages to write in the logs. Values can be
+ 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.
@@ 71,12 72,13 @@ USAGE
When started, biboumi connects, without encryption (see *SECURITY*), to the
-local XMPP server on the port `5347` and provides the configured password to
-authenticate. Biboumi then serves the configured `hostname`, this means
-that all XMPP stanza with a `to` JID on that domain will be sent to biboumi,
-and biboumi will send only send messages coming from this hostname.
+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
-When an user joins an IRC channel on an IRC server (see *Join an IRC
+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,
@@ 84,13 86,12 @@ 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.
-To cleanly shutdown the component, send the SIGINT or SIGTERM signals to it.
+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 all
-connections are closed because the remote acknowledged the end of
-communication. If the remote server does not respond, biboumi does not
-exit, unless SIGINT or SIGTERM is received again, in which case biboumi
-closes the TCP connections and exits immediately.
+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.
@@ 109,8 110,22 @@ characters, adding an implicit `'#'` in that case. Biboumi does not do that
because this gets confusing when trying to understand the difference between
the channels *foo*, *#foo*, and *##foo*.
+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.
+ `#firstname.lastname@example.org` is the #foo IRC channel, on the
+ irc.example.com IRC server, and this is served by the biboumi instance on
+ `email@example.com` is the IRC user named toto, or TotO, etc.
If compiled with Libidn, an IRC user has a bare JID representing the
-“hostname” provided by the IRC server.
+“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.
### Join an IRC channel
@@ 124,13 139,13 @@ 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
-`%firstname.lastname@example.org`. For example if you want to join the
+`%email@example.com`. For example if you want to join the
channel `#foo` on the server `irc.example.com`, but you need to authenticate
-to a bot of the server before you can join it, you can first join the room
-`%firstname.lastname@example.org` (this will effectively connect you to
-the IRC server without joining any room), then send your authentication
-message to the user `email@example.com" and finally
-join the room `#firstname.lastname@example.org`.
+to a bot of the server before you’re allowed to join it, you can first join
+the room `%email@example.com` (this will effectively
+connect you to the IRC server without joining any room), then send your
+authentication message to the user `firstname.lastname@example.org"
+and finally join the room `#email@example.com`.
### Channel messages
@@ 138,14 153,14 @@ 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 may not be the same than the order on other IRC
+displayed in your XMPP client may not be the same than the order on other
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 an user can have a different nick on each MUC,
+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
@@ 160,13 175,10 @@ 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). Using biboumi, there is no way to receive a message from a
-room participant (from a jid like #test%irc.example.com/nickname). Instead,
-private messages are received from and sent to the user (using a jid like
-nickname%irc.example.com). For conveniance and compatibility with XMPP
-clients sending private messages to the MUC participants, a message sent to
-#firstname.lastname@example.org/Nickname will be redirected to
-Nicknameemail@example.com, although this is not the prefered
-way to do it.
+room participant (from a jid like
+#firstname.lastname@example.org/nickname). Instead, private
+messages are received from and sent to the user (using a jid like
@@ 199,8 211,8 @@ direction.
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 an user corresponds to the `moderator` role
-in XMPP), it is impossible to map all these modes to an XMPP feature. To
+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.
@@ 238,6 250,23 @@ between IRC modes and XMPP features is as follow:
Sets the participant’s role to `participant` and its affiliation to `member`.
+### Ad-hoc commands
+Biboumi supports a few ad-hoc commands, as described in the XEP 0050.
+ - ping: Just respond “pong”
+ - hello: Provide a form, where the user enters their name, and biboumi
+ responds with a nice greeting.
+ - disconnect-user: Available to the administrator only. The user provides
+ a list of JIDs, and a quit message. All these 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.
@@ 246,9 275,19 @@ server MUST be made on localhost. The XMPP server is not supposed to accept
non-local connection from components, thus encryption is useless. IRC
SSL/TLS is also not yet implemented.
-Biboumi also does not check if received JIDs are properly formatted using
-nodeprep. This must be done by the XMPP server to which biboumi is directly
+Biboumi also does not check if the received JIDs are properly formatted
+using nodeprep. This must be done by the XMPP server to which biboumi is
+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.
+Biboumi does not yet 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 users.