[Kolab-devel] XMPP integration in Kolab web client
Jeroen van Meeuwen (Kolab Systems)
vanmeeuwen at kolabsys.com
Fri Jan 24 19:07:01 CET 2014
On 2014-01-23 15:31, Thomas Brüderli wrote:
> Dear all
>
> I'd like to introduce you to a possible path how to integrate XMPP into
> the Kolab web client for those how have a Jabber server running along
> with their Kolab installation.
>
Can we have the rest of the email in a restructured text format for a
HOWTO on docs.kolab.org?
> This is what you need to get started:
>
> * A Kolab 3.1 installation with Roundcube 1.0
> * A Jabber server authenticating against the same LDAP service as Kolab
> * The converse.js plugin for Roundcube [1]
> * BOSH support enabled or a BOSH proxy such as punjab [2]
>
>
> 1. Install the converse.js plugin
> ---------------------------------
>
> So first, you should install and enable the converse.js plugin for
> Roundcube. Clone the git repository from [1] and symlink it to
> /usr/share/roundcubemail/plugins/converse. Then cd into that directory
> and create a local config file by copying the sample config:
>
> cp config.inc.php.dist config.inc.php
>
> Now edit the config.inc.php file according to your setup. Consider
> adjusting the following options:
>
> $rcmail_config['converse_xmpp_bosh_prebind_url'] =
> 'http://localhost:5280/http-bind';
>
> $rcmail_config['converse_xmpp_bosh_url'] = '/http-bind';
>
> $rcmail_config['converse_xmpp_hostname'] = function($args) {
> list($user,$host) = explode('@', $args['user']);
> return $host;
> };
>
> The 'converse_xmpp_hostname' can also be a hard-coded string value if
> you run a single-domain setup.
>
>
> 1a. XMPP Authentication using UIDs
> ----------------------------------
>
> If your Jabber service authenticates on Kolab's LDAP directory with the
> user's UID, you need to adjust the converse plugin configuration
> accordingly. In a Kolab environment, Roundcube holds the user's UID in
> session data and this needs to be used as XMPP username for the
> server-side pre-binding. Your config should then look like this:
>
> $rcmail_config['converse_xmpp_username'] = function($args) {
> return $_SESSION['kolab_uid'];
> };
>
> Read the full story here: [3].
>
>
> 2. Setup an XMPP connection manager
> -----------------------------------
>
> Converse.js uses HTTP as protocol to communicate with the web server.
> Access is furthermore restricted to the host that serves the web
> client.
> If your Jabber server already supports BOSH and runs on the same host
> as
> the web client, you should be fine with the default setup.
>
> Otherwise, please read [4] to find out how to overcome cross-domain
> request restrictions with either CORS or using a proxy that forwards
> the
> XMPP HTTP requests.
>
> I managed to connect the web server with the XMPP service using the
> punjab BOSH proxy [2]. Simple HTTP proxy configurations with Apache or
> Nginx are also explained in [4] are the preferable way if your Jabber
> server already supports BOSH.
>
>
> 3. Debugging/Logging
> --------------------
>
> The Roundcube converse plugin has some limited debugging facilities.
> Enable it in config with
>
> $rcmail_config['converse_xmpp_devel_mode'] = true;
>
> The default pre-binding library only provides debug data over FirePHP.
> You can switch to the old library that will write the full XMPP payload
> into /var/log/roundcubemail/xmpp by setting
>
> $rcmail_config['converse_xmpp_old_style_prebind'] = true;
>
> This, however, is limited to PLAIN authentication only.
>
> For client-side debugging, open the browser's console to see the debug
> output from converse.js
>
> End of Setup.
>
> Here's a screenshot of how the integration will look like:
> http://i.imgur.com/fwVcIK9.png
>
> As you can see from the directions above, the installation and setup
> part of the Jabber server in conjunction with Kolab is not covered yet.
> So if somebody has already done that or is willing to dig into this,
> any
> feedback is much appreciated.
>
> It would be nice to have out-of-the-box XMPP for Kolab.org 3.2. The
> XMPP
> integration preferably would become part of the Kolab setup routine,
> namely pykolab. Extending pykolab is quite easy. There's already a set
> of different setup modules that can be used as an example for adding an
> xmpp module [5].
>
> I'd be happy to receive contributions for that!
> And if you need more hints or get stuck, I'm willing to help out.
>
> Kind regards,
> Thomas
>
>
> [1] https://github.com/priyadi/roundcube-converse.js-xmpp-plugin/
> [2] https://github.com/twonds/punjab
> [3]
> https://github.com/priyadi/roundcube-converse.js-xmpp-plugin/issues/6
> [4] https://conversejs.org/docs/html/index.html#connection-manager
> [5] http://git.kolab.org/pykolab/tree/pykolab/setup
> _______________________________________________
> devel mailing list
> devel at lists.kolab.org
> https://lists.kolab.org/mailman/listinfo/devel
Kind regards,
Jeroen van Meeuwen
--
Systems Architect, Kolab Systems AG
e: vanmeeuwen at kolabsys.com
m: +44 74 2516 3817
w: http://www.kolabsys.com
pgp: 9342 BF08
More information about the devel
mailing list