Skip to content

djabberd/DJabberd

Repository files navigation

This is the README file for DJabberd, a scalable, extensible Jabber/XMPP server.

Please refer to 'perldoc DJabberd' after installation for details.

Description

DJabberd was the answer to LiveJournal's Jabber (XMPP) server needs. We needed:

  • good performance for tons of connected users
  • ability to scale to multiple nodes
  • ability to hook into LiveJournal at all places, not just auth

Basically we wanted the swiss army knife of Jabber servers (think qpsmtpd or mod_perl), but none existed in any language. While some popular Jabber servers let us do pluggable auth, none let us get our hands into roster storage, vcards, avatars, presence, etc.

So we made DJabberd. It's a Jabber server where almost everything defers to hooks to be implemented by plugins. It does the core spec itself (including SSL, StartTLS, server-to-server, etc), but it doesn't come with any way to do authentication or storage or rosters, etc. You'll need to go pick up a plugin to do those.

You should be able to plop DJabberd into your existing systems / user- base with minimal pain. Just find a plugin that's close (if a perfect match doesn't already exist!) and tweak.

Installation

DJabberd follows the standard perl module install process

perl Makefile.PL make make test make install

The module uses no C or XS parts, so no c-compiler is required.

Documentation

The documentation for DJabberd is somewhat lacking. Although 'perldoc DJabberd' will give you the basics, and pointers for hackers, the best way to get started is by delving into a demo application.

In the demo/ directory, you'll find a fully functional demo application, which consists of:

  • A running server
  • 2 pre-configured clients
  • An echo bot that is on all clients' roster

The demo application is heavily commented, and it's suggested you read through the source code & comments to understand how it works.

Start by reading the demo/demo.conf file, and follow the classnames from there.

To start the server, type the following commands from the same directory as this README:

perl -Ilib -Idemo/lib djabberd --conffile demo/demo.conf

You can now connect to it using the standard jabber ports on your localhost. Read the demo/demo.conf file for additional notes.

For extra diagnostics from the server, you can increase the debuglevel by setting the following environment variable:

set LOGLEVEL=DEBUG

In the examples/ directory there's an example djabberd.conf configuration file and the 'sixatalk' program. 'sixatalk' is an example djabberd based server integrating with an LDAP directory.