Fork me on GitHub

Campfirer Component

First, set up your jabber server to accept a new component. For instance, for ejabberd edit your /etc/ejabberd/ejabberd.cfg file like so:

%%%   ===============
%%%   LISTENING PORTS

%%
%% listen: Which ports will ejabberd listen, which service handles it
%% and what options to start it with.
%%
{listen,
 [

%% ...

  {5554, ejabberd_service, [
                            {ip, {127, 0, 0, 1}},
                            {access, all},
                            {shaper_rule, fast},
                            {host, "muc.yourdomain.com", [{password, "secretpassword"}]}
                            ]},
%% ...

Make sure to set a more secret password, change the domain to your jabber server’s domain, and restart your server. The muc domain name should be set up in your DNS records to be a CNAME for yourdomain.com and should resolve before continuing.

Next, install the twisted framework. Twisted allows campfirer to handle many connections at once in an asynchronous manner.

Then, checkout campfirer:

git clone git://github.com/bmuller/campfirer.git
cd campfirer
cp config.py.dist config.py

Then, edit the config.py file:

CONFIG = {
    'xmpp.host': 'localhost',
    'xmpp.port': 5554,
    'xmpp.muc.password': 'secretpassword',
    'xmpp.muc.host': 'muc.yourdomain.com',
    'campfire.update.interval': 5,
    #'campfirer.logdir': './logs' # set this if you want to retain your logs
    }

You can now start the twisted server to make sure the component can connect:

twistd -noy campfirer.tac

This will run campfirer in the foreground. If you’re able to connect successfully, then you can use the following to run in the background:

twistd -oy campfirer.tac

That’s it. Report issues on github.