Rewrite the whole IID usage

IRC users and channels are now distinguished by the separator used in the
IID (% or !).

ref #2468
This commit is contained in:
Florent Le Coz
2014-06-11 02:37:11 +02:00
parent 6210a9d50b
commit 7c1a38999c
8 changed files with 279 additions and 99 deletions
+26 -10
View File
@@ -101,11 +101,12 @@ signal again or if a 2 seconds delay has passed.
### Addressing
IRC entities are represented by XMPP JIDs. The domain part of the JID is
the domain served by biboumi, and the local part depends on the concerned
entity.
the domain served by biboumi (the part after the `@`, biboumi.example.com in
the examples), and the local part (the part before the `@`) depends on the
concerned entity.
IRC channels and IRC users JIDs have a localpart formed like this:
`name`, the `'%'` separator and the `irc_server`.
IRC channels have a local part formed like this:
`channel_name`%`irc_server`.
If the IRC channel you want to adress starts with the `'#'` character (or an
other character, announced by the IRC server, like `'&'`, `'+'` or `'!'`),
@@ -113,12 +114,16 @@ 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
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*, and *##foo*.
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.
The name part can also be empty (for example `%irc.example.com`), in that
The channel name can also be empty (for example `%irc.example.com`), in that
case this represents the virtual channel provided by biboumi. See *Connect
to an IRC server* for more details.
IRC users have a local part formed like this:
`user_name`!`irc_server`.
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,
@@ -131,7 +136,7 @@ Examples:
irc.example.com IRC server, and this is served by the biboumi instance on
biboumi.example.com
`toto%irc.example.com@biboumi.example.com` is the IRC user named toto, or
`toto!irc.example.com@biboumi.example.com` is the IRC user named toto, or
TotO, etc.
`irc.example.com@biboumi.example.com` is the IRC server irc.example.com.
@@ -139,9 +144,20 @@ Examples:
`%irc.example.com@biboumi.example.com` is the virtual channel provided by
biboumi, for the IRC server irc.example.com.
If compiled with Libidn, an IRC user 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.
Note: Some JIDs are valid but make no sense in the context of
biboumi:
`!irc.example.com@biboumi.example.com` is the empty-string nick on the
irc.example.com server. It makes no sense to try to send messages to it.
`#test%@biboumi.example.com`, or any other JID that does not contain an
IRC server is invalid. Any message to that kind of JID will trigger an
error, or will be ignored.
If compiled with Libidn, an IRC channel participant has a bare JID
representing the “hostname” provided by the IRC server. This JID can only
be used to set IRC modes (for example to ban a user based on its IP), or to
identify user. It cannot be used to contact that user using biboumi.
### Join an IRC channel