1Biboumi(1)                                                          Biboumi(1)
2
3
4
5       depth  2
6

NAME

8       biboumi - XMPP gateway to IRC
9

Description

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

Synopsis

16       biboumi [config_filename]
17

Options

19       Available command line options:
20
21   config_filename
22       Specify the file to read for configuration.  See the Configuration sec‐
23       tion for more details on its content.
24

Configuration

26       The configuration file uses a simple format of the form option=value.
27
28       The values from the configuration file can be overridden by environment
29       variables, with the name all in upper case and prefixed with "BIBOUMI".
30       For example, if the environment contains “BIBOUMI_PASSWORD=blah",  this
31       will  override  the value of the “password” option in the configuration
32       file.
33
34       Sending SIGUSR1 or SIGUSR2 (see kill(1)) to the process will  force  it
35       to  re-read  the  configuration  and  make it close and re-open the log
36       files.  You can use this to change any configuration option at runtime,
37       or do a log rotation.
38
39       Here is a description of every possible option:
40
41   hostname
42       Mandatory.   The hostname served by the XMPP gateway.  This domain must
43       be configured in the XMPP server as an  external  component.   See  the
44       manual  for  your  XMPP  server for more information.  For prosody, see
45       <http://prosody.im/doc/components#adding_an_external_component>
46
47   password
48       Mandatory.  The password used to authenticate  the  XMPP  component  to
49       your XMPP server.  This password must be configured in the XMPP server,
50       associated with the external component on hostname.
51
52   xmpp_server_ip
53       The IP address to connect to the XMPP server on.  The connection to the
54       XMPP  server  is  unencrypted,  so  the biboumi instance and the server
55       should normally be on the same host.  The default value is 127.0.0.1.
56
57   port
58       The TCP port to use to connect to the local XMPP  component.   The  de‐
59       fault value is 5347.
60
61   db_name
62       The  name  of the database to use.  This option can only be used if bi‐
63       boumi has been compiled with a database support (Sqlite3  and/or  Post‐
64       greSQL).   If  the  value  begins  with  the  postgresql scheme, “post‐
65       gresql://” or “postgres://”, then biboumi will try to  connect  to  the
66       PostgreSQL  database  specified  by  the  URI.   See <https://www.post
67       gresql.org/docs/current/static/libpq-connect.html#idm46428693970032>
68       for  all  possible  values.   For  example  the  value  could be “post‐
69       gresql://user:<secret@localhost>”.  If the value does  not  start  with
70       the postgresql scheme, then it specifies a filename that will be opened
71       with Sqlite3.  For example the value could be  “/var/lib/biboumi/bibou‐
72       mi.sqlite”.
73
74   admin
75       The  bare  JID  of  the gateway administrator.  This JID will have more
76       privileges than other standard users, for example  some  administration
77       ad-hoc commands will only be available to that JID.
78
79       If  you  need  more  than one administrator, separate them with a colon
80       (:).
81
82   fixed_irc_server
83       If this option contains the hostname of  an  IRC  server  (for  example
84       irc.example.org),  then  biboumi will enforce the connexion to that IRC
85       server only.  This means that a JID like #chan@biboumi.example.com must
86       be  used  instead  of #chan%irc.example.org@biboumi.example.com.  The %
87       character loses any meaning in the JIDs.  It can appear in the JID  but
88       will not be interpreted as a separator (thus the JID #channel%hello@bi‐
89       boumi.example.com points to the channel  named  #channel%hello  on  the
90       configured IRC server) This option can for example be used by an admin‐
91       istrator that just wants to let their users join their own  IRC  server
92       using an XMPP client, while forbidding access to any other IRC server.
93
94   persistent_by_default
95       If this option is set to true, all rooms will be persistent by default:
96       the value of the “persistent” option in  the  global  configuration  of
97       each  user  will  be “true”, but the value of each individual room will
98       still default to false.  This means that a user just  needs  to  change
99       the global “persistent” configuration option to false in order to over‐
100       ride this.
101
102       If it is set to false (the default value), all rooms are not persistent
103       by default.
104
105       Each room can be configured individually by each user, to override this
106       default value.  See Ad-hoc commands.
107
108   realname_customization
109       If this option is set to “false” (default is “true”),  the  users  will
110       not  be  able to use the ad-hoc commands that lets them configure their
111       realname and username.
112
113   realname_from_jid
114       If this option is set to “true”, the realname and username of each  bi‐
115       boumi  user  will  be  extracted from their JID.  The realname is their
116       bare JID, and the username is the node-part of their JID.  Note that if
117       realname_customization  is “true”, each user will still be able to cus‐
118       tomize their realname and username, this option just  decides  the  de‐
119       fault realname and username.
120
121       If  this option is set to “false” (the default value), the realname and
122       username of each user will be set to the nick they used to  connect  to
123       the IRC server.
124
125   webirc_password
126       Configure  a  password to be communicated to the IRC server, as part of
127       the WEBIRC message (see  <https://kiwiirc.com/docs/webirc>).   If  this
128       option  is  set,  an  additional DNS resolution of the hostname of each
129       XMPP server will be made when connecting to an IRC server.
130
131   log_file
132       A filename into which logs are written.  If none is provided, the  logs
133       are written on standard output.
134
135   log_level
136       Indicate  what type of log messages to write in the logs.  Value can be
137       from 0 to 3.  0 is debug, 1 is info, 2 is warning, 3 is error.  The de‐
138       fault is 0, but a more practical value for production use is 1.
139
140   ca_file
141       Specifies  which file should be used as the list of trusted CA when ne‐
142       gociating a TLS session.  By default this value is  unset  and  biboumi
143       tries a list of well-known paths.
144
145   outgoing_bind
146       An address (IPv4 or IPv6) to bind the outgoing sockets to.  If no value
147       is specified, it will use the one assigned  by  the  operating  system.
148       You  can for example use outgoing_bind=192.168.1.11 to force biboumi to
149       use the interface with this address.  Note that this is only  used  for
150       connections to IRC servers.
151
152   identd_port
153       The TCP port on which to listen for identd queries.  The default is the
154       standard value: 113.  To be able to listen on this privileged port, bi‐
155       boumi needs to have certain capabilities: on linux, using systemd, this
156       can be achieved by adding  AmbientCapabilities=CAP_NET_BIND_SERVICE  to
157       the  unit file.  On other systems, other solutions exist, like the por‐
158       tacl module on FreeBSD.
159
160       If biboumi’s identd server is properly started, it will receive queries
161       from  the  IRC servers asking for the “identity” of each IRC connection
162       made to it.  Biboumi will answer with a hash of the JID that  made  the
163       connection.   This  is  useful for the IRC server to be able to distin‐
164       guish the different users, and be able to deal with the absuses without
165       having to simply ban the IP.  Without this identd server, moderation is
166       a lot harder, because all the different users of a single  biboumi  in‐
167       stance  all  share  the same IP, and they can’t be distinguished by the
168       IRC servers.
169
170       To disable the built-in identd, you may set identd_port to 0.
171
172   policy_directory
173       A directory that should contain the policy  files,  used  to  customize
174       Botan’s  behaviour  when  negociating  the TLS connections with the IRC
175       servers.  If not specified, the directory is the  one  where  biboumi’s
176       configuration file is located: for example if biboumi reads its config‐
177       uration from /etc/biboumi/biboumi.cfg, the policy_directory value  will
178       be /etc/biboumi.
179

TLS configuration

181       Various  settings of the TLS connections can be customized using policy
182       files.  The files should be located in the directory specified  by  the
183       configuration  option  policy_directory.  When attempting to connect to
184       an IRC server using TLS, biboumi will use Botan’s default  TLS  policy,
185       and  then  will  try  to  load some policy files to override the values
186       found in these files.  For example, if policy_directory is  /etc/bibou‐
187       mi, when trying to connect to irc.example.com, biboumi will try to read
188       /etc/biboumi/policy.txt, use the values found to override  the  default
189       values,  then  it  will  try to read /etc/biboumi/irc.example.com.poli‐
190       cy.txt and re-override the policy with the values found in this file.
191
192       The policy.txt file applies  to  all  the  connections,  and  irc.exam‐
193       ple.policy.txt  will  only  apply (in addition to policy.txt) when con‐
194       necting to that specific server.
195
196       To see the list of possible options to configure, refer to Botan’s  TLS
197       documentation    (https://botan.randombit.net/manual/tls.html#tls-poli‐
198       cies).
199
200       By default, biboumi provides a few policy files, to  work  around  some
201       issues found with a few well-known IRC servers.
202

Usage

204       Biboumi  acts  as  a server, it should be run as a daemon that lives in
205       the background for as long as it is needed.  Note that biboumi does not
206       daemonize  itself,  this  task  should  be  done  by  your  init system
207       (SysVinit, systemd, upstart).
208
209       When started, biboumi connects, without encryption (see  Security),  to
210       the  local XMPP server on the port 5347 and authenticates with the pro‐
211       vided password.  Biboumi then  serves  the  configured  hostname:  this
212       means  that  all  XMPP stanza with a to JID on that domain will be for‐
213       warded to biboumi by the XMPP server, and biboumi will only  send  mes‐
214       sages coming from that hostname.
215
216       When  a  user  joins  an  IRC channel on an IRC server (see Join an IRC
217       channel), biboumi connects to the remote IRC server,  sets  the  user’s
218       nick  as  requested,  and then tries to join the specified channel.  If
219       the same user subsequently tries to connect to an other channel on  the
220       same  server,  the  same IRC connection is used.  If, however, an other
221       user wants to join an IRC channel on  that  same  IRC  server,  biboumi
222       opens  a  new connection to that server.  Biboumi connects once to each
223       IRC server, for each user on it.
224
225       Additionally, if one user is using more than one clients (with the same
226       bare  JID), they can join the same IRC channel (on the same server) be‐
227       hind one single nickname.  Biboumi will forward all the  messages  (the
228       channel  ones  and  the  private ones) and the presences to all the re‐
229       sources behind that nick.  There is no need to have multiple  nicknames
230       and  multiple connections to be able to take part in a conversation (or
231       idle) in a channel from a mobile client while  the  desktop  client  is
232       still connected, for example.
233
234       To  cleanly  shutdown the component, send a SIGINT or SIGTERM signal to
235       it.  It will send messages to all connected IRC and XMPP servers to in‐
236       dicate  a  reason  why the users are being disconnected.  Biboumi exits
237       when the end of communication is acknowledged by all IRC  servers.   If
238       one  or  more  IRC servers do not respond, biboumi will only exit if it
239       receives the same signal again or if a 2 seconds delay has passed.
240
241   Addressing
242       IRC entities are represented by XMPP JIDs.  The domain part of the  JID
243       is  the  domain  served by biboumi (the part after the @, biboumi.exam‐
244       ple.com in the examples), and the local part (the part  before  the  @)
245       depends on the concerned entity.
246
247       IRC  channels  and IRC users have a local part formed like this: name %
248       irc_server.
249
250       name can be a channel name or an user nickname.   The  distinction  be‐
251       tween  the two is based on the first character: by default, if the name
252       starts with '#' or '&' (but this can be overridden by the server, using
253       the  ISUPPORT  extension) then it’s a channel name, otherwise this is a
254       nickname.
255
256       There is two ways to address an IRC user, using a local part like this:
257       nickname  %  irc_server or by using the in-room address of the partici‐
258       pant, like this: channel_name  %  irc_server  @  biboumi.example.com  /
259       Nickname
260
261       The  second  JID  is  available only to be compatible with XMPP clients
262       when the user wants to send a private message to the participant  Nick‐
263       name in the room channel_name%irc_server@biboumi.example.com.
264
265       On  XMPP, the node part of the JID can only be lowercase.  On the other
266       hand, IRC nicknames are case-insensitive, this means that the nicknames
267       toto,  Toto, tOtO and TOTO all represent the same IRC user.  This means
268       you can talk to the user toto, and this will work.
269
270       Also note that some IRC nicknames or channels  may  contain  characters
271       that  are not allowed in the local part of a JID (for example '@').  If
272       you need to send a message to a nick containing such a  character,  you
273       can   use  a  jid  like  %irc.example.com@biboumi.example.com/Annoying‐
274       Nickn@me, because the JID  AnnoyingNickn@me%irc.example.com@biboumi.ex‐
275       ample.com  would  not  work.  And if you need to address a channel that
276       contains  such  invalid  characters,  you  have  to  use   jid-escaping
277       (http://www.xmpp.org/extensions/xep-0106.html#escaping),   and  replace
278       each of these characters with their escaped  version,  for  example  to
279       join the channel #b@byfoot, you need to use the following JID: #b\40by‐
280       foot%irc.example.com@biboumi.example.com.
281
282       Examples:
283
284       · #foo%irc.example.com@biboumi.example.com is the #foo IRC channel,  on
285         the irc.example.com IRC server, and this is served by the biboumi in‐
286         stance on biboumi.example.com
287
288       · toto%irc.example.com@biboumi.example.com is the IRC user named  toto,
289         or TotO, etc.
290
291       · irc.example.com@biboumi.example.com   is  the  IRC  server  irc.exam‐
292         ple.com.
293
294       Note: Some JIDs are valid but make no sense in the context of biboumi:
295
296       · #test%@biboumi.example.com, or any other JID that does not contain an
297         IRC  server is invalid.  Any message to that kind of JID will trigger
298         an error, or will be ignored.
299
300       If compiled with Libidn, an IRC channel participant has a bare JID rep‐
301       resenting the “hostname” provided by the IRC server.  This JID can only
302       be used to set IRC modes (for example to ban a user based on  its  IP),
303       or  to identify user.  It cannot be used to contact that user using bi‐
304       boumi.
305
306   Join an IRC channel
307       To join an IRC channel #foo on the IRC server irc.example.com, join the
308       XMPP MUC #foo%irc.example.com@biboumi.example.com.
309
310   Connect to an IRC server
311       The  connection  to  the IRC server is automatically made when the user
312       tries to join any channel on that IRC server.  The connection is closed
313       whenever the last channel on that server is left by the user.
314
315   Roster
316       You  can add some JIDs provided by biboumi into your own roster, to re‐
317       ceive presence from them.  Biboumi  will  always  automatically  accept
318       your requests.
319
320   Biboumi’s JID
321       By  adding the component JID into your roster, the user will receive an
322       available presence whenever it is started, and an unavailable  presence
323       whenever  it is being shutdown.  This is useful to quickly view if that
324       biboumi instance is started or not.
325
326   IRC server JID
327       These presence will appear online in the user’s  roster  whenever  they
328       are connected to that IRC server (see Connect to an IRC server for more
329       details).  This is useful to keep track of which server an user is con‐
330       nected  to: this  is  sometimes  hard  to remember, when they have many
331       clients, or if they are using persistent channels.
332
333   Channel messages
334       On XMPP, unlike on IRC, the displayed order of the messages is the same
335       for  all  participants  of a MUC.  Biboumi can not however provide this
336       feature, as it cannot know whether the IRC server has received and for‐
337       warded  the  messages to other users.  This means that the order of the
338       messages displayed in your XMPP client may not be the same as the order
339       on other IRC users’.
340
341   History
342       Public  channel  messages are saved into archives, inside the database,
343       unless the record_history option is set to false by that user (see  Ad-
344       hoc  commands).  Private messages (messages that are sent directly to a
345       nickname, not a channel) are never stored in the database.
346
347       A channel history can be retrieved by using Message archive  management
348       (MAM)  (https://xmpp.org/extensions/xep-0313.htm)  on  the channel JID.
349       The results can be filtered by start and end dates.
350
351       When a channel is joined, if the client doesn’t specify any limit,  bi‐
352       boumi  sends the max_history_length last messages found in the database
353       as the MUC history.  If a client wants to only use MAM for the archives
354       (because  it’s  more convenient and powerful), it should request to re‐
355       ceive no history by using an attribute maxchars='0'  or  maxstanzas='0'
356       as defined in XEP 0045, and do a proper MAM request instead.
357
358       Note:  the maxchars attribute is ignored unless its value is exactly 0.
359       Supporting it properly would be very hard and would introduce a lot  of
360       complexity for almost no benefit.
361
362       For a given channel, each user has her or his own archive.  The content
363       of the archives are never shared, and thus a user can not  use  someone
364       else’s  archive  to get the messages that they didn’t receive when they
365       were offline.  Although this feature would  be  very  convenient,  this
366       would introduce a very important privacy issue: for example if a bibou‐
367       mi gateway is used by two users, by querying the archive one user would
368       be  able to know whether or not the other user was in a room at a given
369       time.
370
371   List channels
372       You can list the IRC channels on a given IRC server by sending an  XMPP
373       disco  items  request on the IRC server JID.  The number of channels on
374       some servers is huge so the result stanza may be very big, unless  your
375       client supports result set management (XEP 0059)
376
377   Nicknames
378       On  IRC,  nicknames are server-wide.  This means that one user only has
379       one single nickname at one given time on all the channels of a  server.
380       This  is  different from XMPP where a user can have a different nick on
381       each MUC, even if these MUCs are on the same server.
382
383       This means that the nick you choose when joining your first IRC channel
384       on  a given IRC server will be your nickname in all other channels that
385       you join on that same IRC server.  If you explicitely change your nick‐
386       name  on  one channel, your nickname will be changed on all channels on
387       the same server as well.  Joining a new channel with a different  nick,
388       however, will not change your nick.  The provided nick will be ignored,
389       in order to avoid changing your nick on the whole  server  by  mistake.
390       If you want to have a different nickname in the channel you’re going to
391       join, you need to do it explicitly with the NICK command before joining
392       the channel.
393
394   Private messages
395       Private  messages  are handled differently on IRC and on XMPP.  On IRC,
396       you talk directly to one server-user: toto on the channel #foo  is  the
397       same  user  as  toto on the channel #bar (as long as these two channels
398       are on the same IRC server).  By default you will receive private  mes‐
399       sages  from the “global” user (aka nickname%irc.example.com@biboumi.ex‐
400       ample.com), unless you previously sent a message to an in-room partici‐
401       pant  (something  like  #test%irc.example.com@biboumi.example.com/nick‐
402       name), in which case future messages from that same user  will  be  re‐
403       ceived from that same “in-room” JID.
404
405   Notices
406       Notices are received exactly like private messages.  It is not possible
407       to send a notice.
408
409   Topic
410       The topic can be set and retrieved seemlessly.  The  unique  difference
411       is  that if an XMPP user tries to set a multiline topic, every line re‐
412       turn (\n) will be replaced by a space, because the IRC server  wouldn’t
413       accept it.
414
415   Invitations
416       If  the  invited  JID is a user JID served by this biboumi instance, it
417       will forward the invitation to the target nick, over  IRC.   Otherwise,
418       the  mediated  instance  will directly be sent to the invited JID, over
419       XMPP.
420
421       Example: if the user wishes to invite the  IRC  user  “FooBar”  into  a
422       room, they can invite one of the following “JIDs” (one of them is not a
423       JID, actually):
424
425       · foobar%anything@biboumi.example.com
426
427       · <anything@biboumi.example.com/FooBar>
428
429       · FooBar
430
431       (Note that the “anything” parts are simply ignored because  they  carry
432       no  additional meaning for biboumi: we already know which IRC server is
433       targeted using the JID of the target channel.)
434
435       Otherwise, any valid JID can be used, to invite any XMPP user.
436
437   Kicks and bans
438       Kicks are transparently translated from one protocol to another.   How‐
439       ever  banning  an  XMPP  participant has no effect.  To ban an user you
440       need to set a mode +b on that user nick or host  (see  IRC  modes)  and
441       then kick it.
442
443   Encoding
444       On  XMPP,  the encoding is always UTF-8, whereas on IRC the encoding of
445       each message can be anything.
446
447       This means that biboumi has to convert everything coming from IRC  into
448       UTF-8 without knowing the encoding of the received messages.  To do so,
449       it checks if each message is UTF-8 valid, if not it  tries  to  convert
450       from  iso_8859-1  (because  this appears to be the most common case, at
451       least on the channels I visit) to UTF-8.  If that conversion  fails  at
452       some  point,  a  placeholder character '�' is inserted to indicate this
453       decoding error.
454
455       Messages are always sent in UTF-8 over IRC, no conversion  is  done  in
456       that direction.
457
458   IRC modes
459       One  feature  that  doesn’t exist on XMPP but does on IRC is the modes.
460       Although some of these modes have a correspondance in  the  XMPP  world
461       (for example the +o mode on a user corresponds to the moderator role in
462       XMPP), it is impossible to map all these modes to an XMPP feature.   To
463       circumvent this problem, biboumi provides a raw notification when modes
464       are changed, and lets the user change the modes directly.
465
466       To change modes, simply send a message starting with  “/mode”  followed
467       by the modes and the arguments you want to send to the IRC server.  For
468       example “/mode +aho louiz”.  Note that your XMPP client may  interprete
469       messages  begining with “/” like a command.  To actually send a message
470       starting with a slash, you may need to start your message with “//mode”
471       or “/say /mode”, depending on your client.
472
473       When  a  mode is changed, the user is notified by a message coming from
474       the MUC bare JID, looking like “Mode #foo [+ov] [toto tutu]”.  In addi‐
475       tion, if the mode change can be translated to an XMPP feature, the user
476       will be notified of this XMPP event as well.  For example if a mode “+o
477       toto”  is received, then toto’s role will be changed to moderator.  The
478       mapping between IRC modes and XMPP features is as follow:
479
480       +q     Sets the participant’s role to moderator and its affiliation  to
481              owner.
482
483       +a     Sets  the participant’s role to moderator and its affiliation to
484              owner.
485
486       +o     Sets the participant’s role to moderator and its affiliation  to
487              admin.
488
489       +h     Sets  the participant’s role to moderator and its affiliation to
490              member.
491
492       +v     Sets the participant’s role to participant and  its  affiliation
493              to member.
494
495       Similarly,  when  a biboumi user changes some participant's affiliation
496       or role, biboumi translates that in an IRC mode change.
497
498       Affiliation set to none
499              Sets mode to -vhoaq
500
501       Affiliation set to member
502              Sets mode to +v-hoaq
503
504       Role set to moderator
505              Sets mode to +h-oaq
506
507       Affiliation set to admin
508              Sets mode to +o-aq
509
510       Affiliation set to owner
511              Sets mode to +a-q
512
513   Ad-hoc commands
514       Biboumi supports a few ad-hoc commands, as described in the  XEP  0050.
515       Different ad-hoc commands are available for each JID type.
516
517   On the gateway itself (e.g on the JID biboumi.example.com):
518       · ping: Just respond “pong”
519
520       · hello:  Provide a form, where the user enters their name, and biboumi
521         responds with a nice greeting.
522
523       · disconnect-user: Only available to the administrator.  The user  pro‐
524         vides a list of JIDs, and a quit message.  All the selected users are
525         disconnected from all the IRC servers to which they  were  connected,
526         using the provided quit message.  Sending SIGINT to biboumi is equiv‐
527         alent to using this command by selecting all the connected  JIDs  and
528         using  the  “Gateway shutdown” quit message, except that biboumi does
529         not exit when using this ad-hoc command.
530
531       · disconnect-from-irc-servers: Disconnect a single  user  from  one  or
532         more IRC server.  The user is immediately disconnected by closing the
533         socket, no message is sent to the IRC server,  but  the  user  is  of
534         course  notified with an XMPP message.  The administrator can discon‐
535         nect any user, while the other users can only disconnect themselves.
536
537       · configure: Lets each user configure some options that applies global‐
538         ly.   The provided configuration form contains these fields: * Record
539         History: whether or not history messages should be saved in the data‐
540         base.   * Max history length: The maximum number of lines in the his‐
541         tory that the server is allowed to send when joining a channel.
542
543                · Persistent: Overrides the value specified in each individual
544                  channel.   If  this  option is set to true, all channels are
545                  persistent, whether or not their specific value is  true  or
546                  false.   This  option is true by default for everyone if the
547                  persistent_by_default configuration option is  true,  other‐
548                  wise  it’s false.  See below for more details on what a per‐
549                  sistent channel is.  This value is
550
551   On a server JID (e.g on the JID <chat.freenode.org@biboumi.example.com>)
552       · configure: Lets each user configure some options that applies to  the
553         concerned IRC server.  The provided configuration form contains these
554         fields:
555
556                · Address: This address (IPv4, IPv6 or hostname) will be used,
557                  when  biboumi connects to this server.  This is a very handy
558                  way to have a custom name for a network, and be able to edit
559                  the  address to use if one endpoint for that server is dead,
560                  but continue using the same JID.  For example, a user  could
561                  configure  the  server “<freenode@biboumi.example.com>”, set
562                  “chat.freenode.net” in its “Address” field,  and  then  they
563                  would be able to use “freenode” as the network name forever:
564                  if “chat.freenode.net” breaks for some  reason,  it  can  be
565                  changed  to  “irc.freenode.org”  instead, and the user would
566                  not need to change all their bookmarks and settings.
567
568                · Realname: The customized “real name” as it  will  appear  on
569                  the  user’s  whois.  This option is not available if biboumi
570                  is configured with realname_customization to false.
571
572                · Username: The “user” part in your user@host.  This option is
573                  not  available  if  biboumi is configured with realname_cus‐
574                  tomization to false.
575
576                · In encoding: The incoming encoding.   Any  received  message
577                  that is not proper UTF-8 will be converted will be converted
578                  from the configured In encoding into UTF-8.  If the  conver‐
579                  sion  fails  at some point, some characters will be replaced
580                  by the placeholders.
581
582                · Out encoding: Currently ignored.
583
584                · After-connection IRC commands: Raw IRC commands that will be
585                  sent  one by one to the server immediately after the connec‐
586                  tion has been successful.  It can for  example  be  used  to
587                  identify  yourself using NickServ, with a command like this:
588                  PRIVMSG NickServ :identify PASSWORD.
589
590                · Ports: The list of TCP ports to use when connecting to  this
591                  IRC  server.  This list will be tried in sequence, until the
592                  connection succeeds for one of them.  The connection made on
593                  these  ports will not use TLS, the communication will be in‐
594                  secure.  The default list contains 6697 and 6670.
595
596                · TLS ports: A second list of ports to try when connecting  to
597                  the  IRC  server.   The  only difference is that TLS will be
598                  used if the connection is established on one of these ports.
599                  All  the  ports  in this list will be tried before using the
600                  other plain-text ports list.  To entirely disable  any  non-
601                  TLS connection, just remove all the values from the “normal”
602                  ports list.  The default list contains 6697.
603
604                · Verify certificate: If set to true (the default value), when
605                  connecting  on a TLS port, the connection will be aborted if
606                  the certificate is not valid (for example if it’s not signed
607                  by  a  known authority, or if the domain name doesn’t match,
608                  etc).  Set it to false if you want to connect  on  a  server
609                  with a self-signed certificate.
610
611                · SHA-1  fingerprint  of  the TLS certificate to trust: if you
612                  know the hash of the certificate that the server is supposed
613                  to  use, and you only want to accept this one, set its SHA-1
614                  hash in this field.
615
616                · Nickname: A nickname that will be used instead of the  nick‐
617                  name  provided  in the initial presence sent to join a chan‐
618                  nel.  This can be used if the user always wants to have  the
619                  same nickname on a given server, and not have to bother with
620                  setting that nick in all the bookmarks on that server.   The
621                  nickname  can still manually be changed with a standard nick
622                  change presence.
623
624                · Server password: A password that will be sent just after the
625                  connection, in a PASS command.  This is usually used in pri‐
626                  vate servers, where you’re only allowed to  connect  if  you
627                  have  the password.  Note that, although this is NOT a pass‐
628                  word that will be sent to NickServ (or some author authenti‐
629                  cation service), some server (notably Freenode) use it as if
630                  it was sent to NickServ to identify your nickname.
631
632       · get-irc-connection-info: Returns some information about the IRC serv‐
633         er,  for  the executing user.  It lets the user know if they are con‐
634         nected to this server, from what port, with or without  TLS,  and  it
635         gives  the  list of joined IRC channel, with a detailed list of which
636         resource is in which channel.
637
638   On a channel JID (e.g  on  the  JID  #test%chat.<freenode.org@biboumi.exam‐
639       ple.com>)
640       · configure:  Lets each user configure some options that applies to the
641         concerned IRC channel.  Some of these options, if not configured  for
642         a specific channel, defaults to the value configured at the IRC serv‐
643         er level.  For example the encoding can be  specified  for  both  the
644         channel  and the server.  If an encoding is not specified for a chan‐
645         nel, the encoding configured in the  server  applies.   The  provided
646         configuration  form contains these fields: * In encoding: see the op‐
647         tion with the same name in the server configuration form.  * Out  en‐
648         coding:  Currently  ignored.   *  Persistent: If set to true, biboumi
649         will stay in this channel even when all the XMPP resources have  left
650         the  room.  I.e.  it will not send a PART command, and will stay idle
651         in the channel until the connection is forcibly  closed.   If  a  re‐
652         source comes back in the room again, and if the archiving of messages
653         is enabled for this room, the client will receive the  messages  that
654         where  sent in this channel.  This option can be used to make biboumi
655         act as an IRC bouncer.  * Record History: whether or not history mes‐
656         sages should be saved in the database, for this specific channel.  If
657         the value is “unset” (the default), then the value configured global‐
658         ly  is used.  This option is there, for example, to be able to enable
659         history recording globally while disabling  it  for  a  few  specific
660         “private” channels.
661
662   Raw IRC messages
663       Biboumi  tries to support as many IRC features as possible, but doesn’t
664       handle everything yet (or ever).  In order to let the user send any ar‐
665       bitrary  IRC  message, biboumi forwards any XMPP message received on an
666       IRC Server JID (see Addressing) as a raw command to that IRC server.
667
668       For example, to WHOIS the user Foo on the server irc.example.com, a us‐
669       er  can  send  the message “WHOIS Foo” to irc.example.com@biboumi.exam‐
670       ple.com.
671
672       The message will be forwarded as is, without  any  modification  appart
673       from adding \r\n at the end (to make it a valid IRC message).  You need
674       to have a little bit of understanding of the IRC protocol to  use  this
675       feature.
676

Security

678       The  connection  to the XMPP server can only be made on localhost.  The
679       XMPP server is not supposed to accept non-local connections from compo‐
680       nents.  Thus, encryption is not used to connect to the local XMPP serv‐
681       er because it is useless.
682
683       If compiled with the Botan library, biboumi can use TLS  when  communi‐
684       cating with the IRC servers.  It will first try ports 6697 and 6670 and
685       use TLS if it succeeds, if connection fails on both  these  ports,  the
686       connection is established on port 6667 without any encryption.
687
688       Biboumi  does not check if the received JIDs are properly formatted us‐
689       ing nodeprep.  This must be done by the XMPP server to which biboumi is
690       directly connected.
691
692       Note  if  you  use a biboumi that you have no control on: remember that
693       the administrator of the gateway you use is able to view all  your  IRC
694       conversations, whether you’re using encryption or not.  This is exactly
695       as if you were running your IRC client on someone else’s server.   Only
696       use  biboumi if you trust its administrator (or, better, if you are the
697       administrator) or if you don’t intend to have any private conversation.
698
699       Biboumi does not provide a way to ban users from connecting to it,  has
700       no  protection  against  flood or any sort of abuse that your users may
701       cause on the IRC servers.  Some XMPP server however offer the possibil‐
702       ity to restrict what JID can access a gateway.  Use that feature if you
703       wish to grant access to your biboumi instance only to a list of trusted
704       users.
705
706
707
708User Manual                       2020-08-03                        Biboumi(1)
Impressum