Installing Jabber for Access Grid Tool Kit 3 - A long tale

I'm not familiar with Jabber server for so long. Anyway, I used its client all day all night to access . Jabber is one of the most powerful open-source instant messaging software based on XMPP. Actually, installing Jabber should be quite easy as long as you don't need SSL support. I used to setup Jabber long time ago. At that time, it was very easy so I expected to just do it again by recent version as a backend for Access Grid Text Chat.

First of all, the target operating system was Windows Server 2003 so I looked for win32 solution. The best way to choose the right one was its comparison chart. There are 4 possible choices.

  1. Wildfire - Written in Java. It seems to be the most feature rich jabber server but I don't want to find new server with more main memory (currently 128 MB! Oops!).
  2. ejabberd - Written in Erlang. It looks like to be the most powerful jabber implementaion on earth since it was tested with 29000 concurrent users while Wildfire tested at 5000 concurrent users.
  3. Jabberd 1.4 - This is the very first open-source implementation. It is still lacking of many features. Anyway, I don't care. The features I want are SSL and MUC.
  4. Jabberd 2 - This is the next generation of Jabberd. Many features are added. However, it still misses many ones.

The first choice is not for me. I then tried ejabberd for win32. Sadly, Access Grid was unable to connect to the server due to SSL problem. I was not sure what the problem were. Note that it may cause by the incompatibility of client (Bajjer) and server.

Sadly, I didn't have time to try more on win32 platform, instead, I headed to Linux on VMware. The idea was to setup a VMware Appliance for Access Grid with all components ready to use. So the system changed to Ubuntu Edgy Eft 6.10 with 64 MB physical memory. Access Grid installed so smooth with my custom packages based on APT. The last step was Jabber again.

I still choosed ejabberd and it is available in Ubuntu repository. The installation was again quite easy by apt-get.

sudo apt-get install ejabberd

It also generated a key for SSL automatically. Anyway, I didn't know why it was so slow to start and stop. The Bajjer seemed to be able to establish secure connection to ejabberd successfully. However, I ended up with error message to inform register failure. It was time to remove.

sudo apt-get remove ejabberd

The next one I tried was Jabberd 1.4. The version I found in Ubuntu repository is 1.4.3. Note that Jabberd 2 is unavailable by now.

sudo apt-get install jabberd jabberd-muc

There was no default key-pair for SSL support so I had to generate one. Then edited /etc/jabber/jabber.xml. I found some mistaken action here again. Since the configuration file is in XML format, it is quite complex. The worst is I don't know which lines are commented or not until I careful look for begin and end comment tag. Everything works just fine except only SSL. Access Grid Venue Client always hangs whenever it tried to establish connection to the server. I used the code below to test and got the same problem.

#!/usr/bin/python

from gov.lbl.dsd.bajjer import *
stream = stream.JabberClientStream('vv3.agvv.ag.local', port=5223, use_ssl=True)

So I started Jabberd in debug mode.

/usr/sbin/jabberd -D

And I saw below messages.

Wed Dec 13 20:25:13 2006  mio_ssl.c:93 Could not create SSL Context: error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers

What is that? I searched in Google and found Bug#335836. It seems to be bug in application that not calling SSL_library_init() before using other functions. So I added a line to call SSL_library_init() in mio_ssl.c. It works! Just to note here the package is jabber-1.4.3-3ubuntu2. The SSL is broken.

The last thing I would like to mention is about domainname. Jabber relies on hostname and domainname, especially, Access Grid Venue Client. The name of the server is very important. For example, the hostname of the jabber server should be started with jabber, e.g., jabber.agvv.ag.local. And MUC module must be ran on the server with exact name conference.agvv.ag.local. Don't ask me why. I found that it was hardcoded. The real last one is to add MUC to the main server (jabber.xml).

  
    
      
      31518
      secret
    
  

Tags: , , , , , ,

Post new comment