You can grab the source from subversion and generate the javadocs from there, if you want the most current. 2.6.2 is the current stable release, so it makes sense that would be the published “standard” until the next release.
As far as I know, no such high level overview exists. I would love there to be one, but Ive never really had the time to document it myself. Indeed, I keep my modifications pretty localized and havent needed to know much outside my little corner of the world.
Ive startted putting together a reference sheet of every property used by wildfire, and documenting in one sentence what its for. I dont really have a good place to host it at the moment, but Im sure that would be useful.
Database Structure[/b]
The current database structure is very tightly integrated into a single domain concept. While some things would be easy to just “extend” by adding a domain to them, that may not make sense in all cases. A lot of system settings are stored in the database, and it will not make any sense to keep those common among all virtual servers. It might make more sense to allow wildfire to just use multiple databases and/or table prefixes. Perhaps some combination of the two?
SSL[/b]
SSL is going to be tricky. Its the same mess as with HTTP, but we do have things a little better. With TLS, its possible to negotiate a hostname first, then the certitifcate to match can be used. But with old-style SSL, the certificate comes first, and the name used on the certificate may not match the name the client is connecting to. This is a problem with the default “John Doe” certs that come with wildfire by default. But, there is an advantage (or disadvantage, depending on your perspective). Most jabber clients silently ignore SSL certificate errors. There is also the matter of the SRV records. If a client is connting as user@domain.com but the SRV records say to use the server jabber.otherdomain.com which SSL certificate should the client expect? This may be documented somewhere, but I dont know off hand. I would think if you know the hostname you are connecting to is jabber.otherdomain.com that should be the certificate you expect.
Kerberos[/b]
Ok, so its not fully implemented yet, but its my baby so I may as well speak up about it now. Kerberos authenticates both ways (client to server, and server to client). This is done via a keytab file with principals ( ie xmpp/domain.com@REALM.COM ). SSL issues aside, this should work just fine. In fact, its even acceptable to put multiple principals in the same keytab. However, Java wants to know the principal name to use via its own config file (not in the wildfire.xml) so multiples of these files (gss.conf at the moment) will be needed.
Code[/b]
Ok, some places to start looking in the code:
-
The JiveGlobals stuff. Many, many things go here to get details about this particular setup. So this object will need to be modified to handle multiple instances (one per virtual host) and a method for getting the right[/i] instance needs to be worked out. If not multiple instances, something needs to follow with the client thread (even though its not exactly one thread anymore) to indicate which virtual domain is being used to it can pull the right info.
-
The network connections. The domain is already being parsed, you just want to start doing something different with it.
-
All the database calls. Some idea of which virtual domain is being used should be taken into account.
Of course there is more. But this is some food for thought right now.