From 8e2dd573bb01f1caa66674a58c2917592256b41f Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Sun, 8 Dec 2013 20:23:35 +0100 Subject: Provide the doc in markdown format The included man page is now generated from this markdown file, using ronn --- doc/biboumi.1 | 219 +++++++++++++++++++-------------------------------------- doc/biboumi.md | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 276 insertions(+), 145 deletions(-) create mode 100644 doc/biboumi.md (limited to 'doc') diff --git a/doc/biboumi.1 b/doc/biboumi.1 index c874062..5f88a16 100644 --- a/doc/biboumi.1 +++ b/doc/biboumi.1 @@ -1,192 +1,121 @@ -.TH biboumi 1 2013-11-21 +.\" generated with Ronn/v0.7.3 +.\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.SH NAME +.TH "BIBOUMI" "" "December 2013" "" "" . -\fBbiboumi\fR - XMPP gateway to IRC +.SH "NAME" +Bbiboumi \- XMPP gateway to IRC . -.SH SYNOPSIS +.SH "SYNOPSIS" +\fBbiboumi\fR [\fBconfig_file\fR] . -\fBbiboumi\fR [\fIconfig_filename\fR] -. -.SH 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. -. -.SH OPTIONS +.SH "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\. . +.SH "OPTIONS" Available options: -.TP +. +.P \fBconfig_filename\fR -Specify the file to read for configuration. See \fBCONFIG\fR section for -more details on its content. . -.SH CONFIG +.P +Specify the file to read for configuration\. See \fICONFIG\fR section for more details on its content\. +. +.SH "CONFIG" +The configuration file uses a simple format of the form \fB"option=value"\fR\. Here is a description of each possible option: . -The configuration file uses a simple format of the form -\fB"option=value"\fR. Here is a description of each possible option: -.TP +.P \fBhostname\fR (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. -.TP +. +.P +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\. +. +.P \fBpassword\fR (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 \fBhostname\fR. -. -.SH USAGE -. -When started, biboumi connects, without encryption (see \fBSECURITY\fR), to -the local XMPP server on the port \fI5347\fR and provides the configured -password to authenticate. Biboumi then serves the configured -\fIhostname\fR, this means that all XMPP stanza with a \fIto\fR JID on that -domain will be sent to biboumi, and biboumi will send only send messages -coming from this hostname. -. -When an user joins an IRC channel on an IRC server (see \fBJoin an IRC -channel\fR), 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. . -.SS "Addressing" +.P +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 \fIhostname\fR\. +. +.SH "USAGE" +When started, biboumi connects, without encryption (see \fISECURITY\fR), to the local XMPP server on the port \fB5347\fR and provides the configured password to authenticate\. Biboumi then serves the configured \fBhostname\fR, this means that all XMPP stanza with a \fBto\fR JID on that domain will be sent to biboumi, and biboumi will send only send messages coming from this hostname\. . -IRC entities are represented by XMPP JIDs. The domain part of the JID is -the domain served by biboumi, and the local part depends on the concerned -entity. +.P +When an user joins an IRC channel on an IRC server (see \fIJoin an IRC channel\fR), 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\. . -IRC channels and IRC users JIDs have a localpart formed like this: \fIname\fR, -the '\fI%\fR' separator and the \fIirc_server\fR. +.SS "Addressing" +IRC entities are represented by XMPP JIDs\. The domain part of the JID is the domain served by biboumi, and the local part depends on the concerned entity\. . -For an IRC channel, the name starts with '\fI&\fR', '\fI#\fR', '\fI+\fR' -or '\fI!\fR'. Some other gateway implementations, as well as some IRC -clients, do not require them to be started by one of these characters, -adding an implicit '\fI#\fR' in that case. Biboumi does not do that because -this gets confusing when trying to understand the difference between -\fIfoo\fR, \fI#foo\fR, and \fI##foo\fR. +.P +IRC channels and IRC users JIDs have a localpart formed like this: \fBname\fR, the \fB\'%\'\fR separator and the \fBirc_server\fR\. . -If the name starts with any other character, this represents an IRC user. +.P +For an IRC channel, the name starts with \fB\'&\'\fR, \fB\'#\'\fR, \fB\'+\'\fR or \fB\'!\'\fR\. Some other gateway implementations, as well as some IRC clients, do not require them to be started by one of these characters, adding an implicit \fB\'#\'\fR in that case\. Biboumi does not do that because this gets confusing when trying to understand the difference between \fIfoo\fR, \fI#foo\fR, and \fI##foo\fR\. . -.SS "Join an IRC channel" +.P +If the name starts with any other character, this represents an IRC user\. . -To join an IRC channel \fI#foo\fR on the IRC server \fIirc.example.com\fR, -join the XMPP MUC \fI#foo%irc.example.com@hostname\fR. +.SS "Join an IRC channel" +To join an IRC channel \fB#foo\fR on the IRC server \fBirc\.example\.com\fR, join the XMPP MUC \fB#foo%irc\.example\.com@hostname\fR\. . .SS "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 may not be the same than the order on other IRC -users’. +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 users’\. . .SS "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 an user can have a different nick on each MUC, even if these MUCs are on the same server\. . -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, -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. +.P +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\. . .SS "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 -than 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 \fI#test%irc.example.com/\fBnickname\fR). -Instead, private messages are received from and sent to the user (using a -jid like \fBnickname\fI%irc.example.com\fR). For conveniance and -compatibility with XMPP clients sending private messages to the MUC -participants, a message sent to -\fB#chan%irc.example.com@irc.example.net/Nickname\fR will be redirected to -\fBNickname%irc.example.com@irc.example.net\fR, although this is not the -prefered way to do it. +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 than 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 toNickname%irc\.example\.com@irc\.example\.net, although this is not the prefered way to do it\. . .SS "Notices" -. -Notices are received exactly like private messages. It is not possible to -send a notice. +Notices are received exactly like private messages\. It is not possible to send a notice\. . .SS "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 \fBMODES\fR) and then kick it. +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 \fIMODES\fR) and then kick it\. . .SS "Encoding" +On XMPP, the encoding is always \fBUTF\-8\fR, whereas on IRC the encoding of each message can be anything\. . -On XMPP, the encoding is always \fIUTF-8\fR, 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 -\fIiso_8859-1\fR (because this appears to be the most common case, at least -on the channels I visit) to \fIUTF-8\fR. If that conversion fails at some -point, a placeholder character '\f�\fR' is inserted to indicate this -decoding error. +.P +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 \fBiso_8859\-1\fR (because this appears to be the most common case, at least on the channels I visit) to \fBUTF\-8\fR\. If that conversion fails at some point, a placeholder character \fB\'�\'\fR is inserted to indicate this decoding error\. . -Messages are always sent in UTF-8 over IRC, no conversion is done in that -direction. +.P +Messages are always sent in UTF\-8 over IRC, no conversion is done in that direction\. . .SS "IRC modes" +One feature that doesn’t exist on XMPP but does on IRC is the \fBmodes\fR\. Although some of these modes have a correspondance in the XMPP world (for example the \fB+o\fR mode on an user corresponds to the \fBmoderator\fR 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\. . -One feature that doesn’t exist on XMPP but does on IRC is the \fImodes\fR. -Although some of these modes have a correspondance in the XMPP world (for -example the \fI+o\fR mode on an user corresponds to the \fImoderator\fR 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. +.P +To change modes, simply send a message starting with “\fB/mode\fR” 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 inteprete 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\. . -To change modes, simply send a message starting with “\fB/mode\fR” 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 -inteprete 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. +.P +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: . -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: +.P +\fB+o\fR . -.TP -.B +o -Sets the participant’s role to \fImoderator\fR. +.P +Sets the participant’s role to \fBmoderator\fR\. . -.TP -.B +a -Sets the participant’s role to \admin\fR. +.P +\fB+a\fR . -.TP -.B +v -Sets the participant’s affiliation to \fImember\fR. +.P +Sets the participant’s role to \fBadmin\fR\. . -.SH SECURITY +.P +\fB+v\fR . -Biboumi does not provide any encryption mechanism: connection to the XMPP -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 implemented although this could be useful for some -users, this is however not a high priority feature. +.P +Sets the participant’s affiliation to \fBmember\fR\. . -Biboumi also does not check if JIDs are properly formatted using nodeprep. -This must be done by the XMPP server to which biboumi is directly connected. +.SH "SECURITY" +Biboumi does not provide any encryption mechanism: connection to the XMPP 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 implemented although this could be useful for some users, this is however not a high priority feature\. . -.SH AUTHORS +.P +Biboumi also does not check if JIDs are properly formatted using nodeprep\. This must be done by the XMPP server to which biboumi is directly connected\. . +.SH "AUTHORS" Written by Florent Le Coz diff --git a/doc/biboumi.md b/doc/biboumi.md new file mode 100644 index 0000000..a251801 --- /dev/null +++ b/doc/biboumi.md @@ -0,0 +1,202 @@ +BIBOUMI 1 "2013-11-21" +====================== + +NAME +---- + +Bbiboumi - XMPP gateway to IRC + +SYNOPSIS +-------- + +`biboumi` [`config_file`] + +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. + +OPTIONS +------- + +Available options: + +`config_filename` + + Specify the file to read for configuration. See *CONFIG* section for more + details on its content. + +CONFIG +------ + +The configuration file uses a simple format of the form +`"option=value"`. Here is a description of each 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. + +`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*. + +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. + +When an 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. + +### Addressing + +IRC entities are represented by XMPP JIDs. The domain part of the JID is +the domain served by biboumi, and the local part depends on the concerned +entity. + +IRC channels and IRC users JIDs have a localpart formed like this: +`name`, the `'%'` separator and the `irc_server`. + +For an IRC channel, the name starts with `'&'`, `'#'`, `'+'` +or `'!'`. Some other gateway implementations, as well as some IRC +clients, do not require them to be started by one of these characters, +adding an implicit `'#'` in that case. Biboumi does not do that because +this gets confusing when trying to understand the difference between +*foo*, *#foo*, and *##foo*. + +If the name starts with any other character, this represents an IRC user. + +### 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@hostname`. + +### 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 may not be the same than the order on other IRC +users’. + +### 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 an 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. + +### 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 +than 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 +#chan%irc.example.com@irc.example.net/Nickname will be redirected to +Nickname%irc.example.com@irc.example.net, although this is not the prefered +way to do it. + +### Notices + +Notices are received exactly like private messages. It is not possible to +send a notice. + +### 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 *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 an 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 +inteprete 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: + +`+o` + + Sets the participant’s role to `moderator`. + +`+a` + + Sets the participant’s role to `admin`. + +`+v` + + Sets the participant’s affiliation to `member`. + +SECURITY +-------- + +Biboumi does not provide any encryption mechanism: connection to the XMPP +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 implemented although this could be useful for some +users, this is however not a high priority feature. + +Biboumi also does not check if JIDs are properly formatted using nodeprep. +This must be done by the XMPP server to which biboumi is directly connected. + +AUTHORS +------- + +Written by Florent Le Coz -- cgit v1.2.3