This is out-dated documentation. Please go to http://jabberd.org/ for up-to-date documentation.

Jabber Component Admin Guide

This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later (the latest version is presently available at http://www.opencontent.org/openpub/).

Abstract

Information about server-side components that administrators can run to add functions to a Jabber server.

This should be rewritten to explain how using external components in general work. No direct instructions for JUD/MUC/... as these projects should document themselves. Keep jabberd2 and other servers in mind.


Table of Contents

Introduction
Adding Text Conferencing
Adding JUD
Running Services in Separate Processes
A Note About Gateways

Introduction

A jabberd server is a beautiful thing all by itself. However, you can add functionality to your Jabber service by supplementing jabberd with various server components. For example, the conferencing component enables the users of your server to engage in multi-user chat (a.k.a. groupchat), and the Jabber User Directory component (JUD) enables you to set up a directory of users on your server. These components work with the core Jabber server (usually jabberd) to provide additional Jabber-related functionality. Another category of component consists of gateways or transports, which enable Jabber users to exchange messages and presence with users of legacy IM systems such as AOL, ICQ, MSN, and Yahoo.

Adding Text Conferencing

Text conferencing is the ability to join a chatroom and exchange text messages with other occupants of the room. The most advanced Jabber protocol for this is called "multi-user chat", which supports advanced features such as room moderation (kick, ban, etc.) and password-protected rooms.

Note

If you want your conference rooms to be accessible to users of other Jabber servers, the sub-domain conference.your.domain.name must be resolvable to a DNS address (probably to the same IP as your.domain.name, although you can run it on a separate machine if you'd like). You may need to have your local DNS tables updated with this information. (If you are using a dynamic DNS service such as dyndns.org, make sure you enable the wildcard option so that subdomains will be resolved.) If users of other Jabber servers do not need to access conference rooms on your conferencing service, then its hostname does not have to be a fully qualified domain name.

The server-side software that impelements multi-user chat is mu-conference. As of this writing, the current version is 0.3, so download muconference-0.3.tar.gz to your /path/to/jabber/ directory. Then do the following:

  1. gzip -d muconference-0.3.tar.gz

  2. tar -xvf muconference-0.3.tar (this will create a muconference-0.3/ sub-directory)

  3. cd mu-conference/

  4. make (for non-GNU systems, use GNU make by typing gmake)

The conferencing code should now be installed on your system (i.e., you should see a conference.so file in the mu-conference/ directory). The next step is to configure your Jabber server to run conferencing, so open jabber.xml and edit it in accordance with the README. (New instructions on the way!)

Now restart the Jabber server. You should see "Groupchat" as a service on the server when you connect with a Jabber client. You should also be able to type a conference room name into the interface for joining a conference room and then join that room (see the Jabber User Guide for details).



Comments

I have installed the jabberd1.4-3 on redhat9,I have added the JUD service ,but when I want search the user in client's contact search function,it show "not reasult found",I have found the jabberd server showed"not found global.xdb", why?
Posted by joyshm on 2004-09-23 21:22

Probably no user registered with JUD? JUD does NOT search for Jabber accounts on the server, it only searches for users that have registered explicitely with JUD.
Posted by Maqi (admin) on 2004-09-24 07:56



Adding JUD

JUD stands for Jabber User Directory. The main instance of JUD lives at jabber.org, and anyone can add their name to the user database there so that people can find them (note: JUD is an opt-in database; user information is never added to JUD automatically on registration). In addition to the JUD instance at jabber.org, you can define a JUD instance that lives on your own Jabber server so that your users can register with a directory on your server. To do that, you can use the JUD code that is available at http://jud.jabberstudio.org/. Here's how:

  1. gzip -d jud-0.4.tar.gz

  2. tar -xvf jud-0.4.tar (this will create a jud-0.4/ sub-directory)

  3. cd jud-0.4/

  4. make (for non-GNU systems, use GNU make by typing gmake)

The JUD code should now be installed on your system (i.e., you should see a jud.so file in the jud-0.4/ directory). The next step is to configure your Jabber server to run JUD, so open jabber.xml and make the following edits...

As we saw with conferencing, first you need to identify the Jabber User Directory in the <browse/> section of jabber.xml so that users of your server can discover that you have an instance of JUD on your server (and of course you also need to replace 'localhost' with the hostname of your Jabber server). You do this by adding the following line to the <browse/> section of your jabber.xml file:

<service id='sessions'>
  ...
  <jsm>
    ...
    <browse>
      ...
      <service 
          type="jud" 
          jid="jud.localhost" 
          name="localhost User Directory">
        <ns>jabber:iq:search</ns>
        <ns>jabber:iq:register</ns>
      </service>
      ...
    </browse>
    ...
  </jsm>
  ...
</service>

Now you need to actually define the service by adding a <service/> element to jabber.xml (a good place is after the <service/> definition for groupchat and before the closing </jabber> tag).

<service id="jud">
  <host>jud.yourjabberhostname</host>
  <load><jud>./jud-0.4/jud.so</jud></load>
  <jud xmlns="jabber:config:jud">
    <vCard>
      <FN>User Directory on yourjabberhostname</FN>
      <DESC>This service provides a simple user directory service.</DESC>
      <URL>http://yourjabberhostname/</URL>
    </vCard>
  </jud>
</service>

Restart your Jabber server and give JUD a try by adding your own user information to your JUD instance.



Running Services in Separate Processes

The foregoing discussion assumed that you wanted to run conferencing and JUD in the same jabberd process as the main server. While that will get you up and running quickly, you might need a more scalable solution or just want to isolate these services from your core server (e.g., enabling you to stop and start services without stopping the core server). The jabberd server makes this fairly easy by enabling you to run each service in its own process.

The main concept here is that you need to have a separate configuration file for each service that you want to run in a separate process, then start each process separately using the jabberd command to point to the relevant XML files. Perhaps you are running your main jabberd process for the core server, a separate process for conferencing, and another separate process for JUD. In this case you will have three configuration files (we'll call them main.xml, conf.xml, and jud.xml), and you will start the processes by typing the following three commands:

  1. ./jabberd/jabberd -c main.xml

  2. ./jabberd/jabberd -c conf.xml

  3. ./jabberd/jabberd -c jud.xml

For detailed examples of how to properly set up your configuration files in order to run separate processes, please refer to the sample configuration files.



A Note About Gateways

The Jabber Glossary defines a "gateway" or "transport" as a server-side component that acts as a proxy for a Jabber user's account on a non-Jabber IM network. By definition, you must have an MSN account in order to register with, and then chat with MSN users through, the MSN gateway. Although any level of interoperability is appealing to many users, it's important to recognize that without common standards in the IM world (as we have in email with SMTP), the existing gateways will always remain merely clever hacks that are at the mercy of arbitrary protocol changes by the non-Jabber networks. In short, gateways take us out of the technical realm of Jabber protocol, and into the political realm of attempts at interoperability.

A future version of this document will contain detailed information about installation and configuration of the Jabber gateways. Until then, the best strategy is to download the software and follow the instructions in the README. The following four gateways are the ones most commonly requested: