February 17th, 2006

belize

Quick update

Today (yesterday): kinda wrote a Jabber server. Or a Jabber server base class, really, so you can subclass it and deal with auth, roster, presence, etc, all how you want.

Artur and I quickly evaluated all the open source Jabber servers a couple weeks ago and none were extensible enough for things besides auth. So yesterday he comes in and says, "Dude, why don't we write our own, how hard can it be?" Answer so far: not hard at all. A half day of hacking (and learning Perl XML stuff) and I got something working a lot more than I'd thought.

The server begins:

use strict;
use Getopt::Long;
use Carp;
use Danga::Socket;
use IO::Socket::INET;
use POSIX ();
use XML::SAX ();
use XML::SAX::Expat::Incremental 0.04;
use XML::XPath;
use XML::XPath::Builder;
use XML::Filter::Tee;

... So you know it's good! ;P

Tomorrow (today) day: Work on it more. Wrap up email.

Tomorrow (today) evening: Fly to Belize and put all dork stuff out of my mind for 10 days as I swim with the fishes. (literally)
belize

Jabber server status

Done:
-- Authentication (digest)
-- Authentication plugin against LiveJournal
-- Inter-user messaging (single node server)

Not done:
-- roster stuff
-- multi-node (but I have a plan which ignores this whole issue: not doing multi-node... making the subclasses deal with it! subclasses of the server must deal with routing messages. then LJ does something fancy, and small users use single-node)
-- server-to-server (shouldn't be that hard?)

Really fun: Jesse and I logged in using our LiveJournal usernames/passwords and chatted, complete with HTML! :P