stytrix

How to Spectrum IM support for OF [Alternativ for Kraken]

Discussion created by stytrix on Dec 6, 2011
Latest reply on Nov 15, 2013 by Axel-F. Brand

Hey guys,

 

since Kraken is no longer supported it is a matter for time until Kraken will not work any longer. So Daniel Henninger (the guy who developed kraken) has moved to another project called Spectrum IM.*

Spectrum IM does basically the same as Kraken did but it is a standalone external component for XMPP Servers.

Daniel mentioned that it should be possible to use Spectrum IM for gateways instead of Kraken.

Therefore we started develop a plugin for OF to support Spectrum IM and Remote Roster Management.

 

********* UPDATE **********

Spectrum 1.x no longer supported, so you might better use spectrum 2.x! The Spectrum website has been updated so you might have to search for the informations you need. I am trying to keep the disscussion up to date. If you have trouble to configure your spectrum 2 as i described it you may have a closer look to gary's post:

http://community.igniterealtime.org/message/226022#226022

********* UPDATE **********

 

 

 

Currently we are in a very early stage of development and we need YOU to support us. We need some testers out there because it is impossible to test everything on our own.

 

 

To keep this as easy as possible I will provide a little HowTo setting Spectrum and Openfire up to get them work together using Remote Roster.

I am currently using Spectrum on a Ubuntu Linux machine, so you may find some linux specific configuration settings.

 



Step 1.  Installing Spectrum

Install Spectrum on your favorite machine. (Linux highly recommended)

Keep in mind that you need at least Spectrum 1.4.7 (better use Spectrum 2.x in gateway mode) and Openfire 3.7.0 to get Remote Roster support.

 

Spectrum docu: http://hanzz.github.com/libtransport/documentation/

 

        You could follow the installation routines described in the Spectrum IM wiki:

 

Installation:

Ubuntu/Debian:http://hanzz.github.com/libtransport/documentation/installation/debian_ubuntu.ht ml

CentOS/Fedora/RHEL:http://hanzz.github.com/libtransport/documentation/installation/fedora_rhel.html

Step 2. Enable external components in Openfire

     To allow Spectrum to connect to our Openfire we need to enable external components in OF. Login into your admin panel and browse to:

 

Server -> Server Settings -> External Components

    Your setting should look like this:

 

 

 

 

Step 3. Configure Spectrum

Have look at http://hanzz.github.com/libtransport/documentation/tutorials/gateway_mode.html

This should be quite easy. Specify the protocol you want to use and set up to host, port and password you set up in Step 2. If you used a shared secret just enter it. The OF default port for external components is 5275

 

!!!! You should set the component id of your spectrum config according to your protocol and openfire hostname like: icq.my-jabber-server.com Otherwise you may lost messages between your networks. Especially Sparks maps the known gateways to the subdomain of the received components. !!!!

 

In my case it looks like this for a XMPP Spectrum component:

 

 

...

# component JID

jid=xmpp.dew08299

 

# component secret

password=secret

 

# component port

port=5275

...

 

 

  Start spectrum & check if it is connected

       If your created your config file in /etc/spectrum/xmpp.cfg you could easily start spectrum using following bash command:

 

user@server:~$ spectrum -n xmpp

      -n disables the background daemon mode so we could check if everything is setup properly.

    

     Now we could check if Spectrum successfully connects to our Openfire. Open your admin panel and browse to:

 

Sessions -> Component Sessions

     If Spectrum is connected it shoud look like this:

 

 

 

 

Step 4. Installing Remote Roster Plugin

Now we would like to have Remote Roster support for our gateway. Therefore we need to get the Openfire Plugin.

The file is attached, see below. (remoteRoster.jar)

 

Open your Openfire admin panel and install the plugin via Plugins -> Plugins. There you could select your file and upload it. Openfire should automatically install the plugin but you may need to restart Openfire.

 

If it is successfully installed the plugin will appear in the Plugin Admin view:

 

 

Step 5. Enable Remote Roster plugin for specified Spectrum IM

 

     If RemoteRoster plugin is installed you will find the config menu in

 

Server -> Server Settings -> Remote Roster

 

 

 

You should see your external component with its identifier. You have to enable the external component that should get remote roster support. It is disabled by default.

 

We also implemented some hacks for Spark to get it work properly, like Kraken did. If you are using Spark within your network you should enable the Spark specific configuration.

This is highly recommended, otherwise Spark user won't be able to logout from their legacy accounts.

The feature should not harm other Clients.

 

 

Step 6. Done?

 

If everything is installed you may login to your Openfire using Spark or some other client. The transports should be available to you. When you type in some login information you might have a look at the spectrum console, started in Step 3. During the login process the following line should appear in the spectrum terminal:

  [12/06/11 13:07:52] <test@dew08299> This server supports remoter-roster XEP

 

       If you're logged in to the legacy network but you are getting a subscription request for every contact something went terribly wrong

       You may have a look to the trouble shooting section.

 

 

 

 

 

 

*) What is Remote Roster Management XEP-xxxx?

This is still a prototype of a XMPP Standard for easy roster exchange between servers and components. This is very useful for Spectrum because it is allowed to edit your Roster without asking for permissions every time. Spectrum IM will push all your contact from your legacy network to your roster if you want it to. If you want to have more information about it, you can check following websites:

 

Remote Roster Plugins currently supports 2.3, 2.4 and 2.5 of the XMPP standard. There is no implementation for 2.1 and 2.2 because it is not yet supported by Spectrum IM.

 

 

TODO

  • Whitelisting for contacts. (not every one should be allowed to use transports)
  • Non persistent contact. (contacts should disappear if your not connected to legacy network)
  • Multiple support for contacts in legacy network
  • Mirror contact remove / subs to legacy network

 

 

Troubleshooting

     Enable Debug Log in Server -> Logs and check if the plugin is loaded.

     Since there are less experiences with Spectrum and Openfire feel free to report your problems.

 

There is already a Jira Ticket for Remote Roster related problems over here:

 

We're working with Spectrum 1.4.8 & Openfire 3.7.1 (both linux vm's) and sucessfully tested xmpp, icq, aim, yahoo

 

Thanks

Special thanks to Daniel Henninger. He started the project and made the initial svn import. Thanks for answering all my more or less stupid questions.

 

 

*) Spectrum IM http://spectrum.im/

Outcomes