Using DJabberd as a platform for external components

Pedro Melo melo at simplicidade.org
Fri Dec 22 19:16:46 UTC 2006


Hi,

On Dec 22, 2006, at 1:29 AM, Martin Atkins wrote:

> Pedro Melo wrote:
>> Hi,
>> currently at SAPO we use POE to write our custom external  
>> components. Unfortunately, some of our components are becoming CPU  
>> bound, so we went looking for a new solution. DJabberd stands out  
>> as a prime candidate, of course.
>
> Hi Pedro,
>
> Your plans inspired me to make a module that allows a DJabberd  
> VHost to act as a component and connect to another JEP0114-capable  
> server.
>
> In the core trunk now is a module called  
> DJabberd::Delivery::ComponentConnection. If you create your custom  
> component as a subclass of DJabberd::Component, you should then be  
> able to make use of it like this:

Yeah, this is what I was doing exactly :)

BTW, how do you disable the C2S connection in the start() method? I  
was subclassing DJabberd just to do that.

> <VHost component.example.com>
>
>     <Plugin DJabberd::Delivery::ComponentConnection>
>         RemoteAddr 123.213.132.121:21231
>         Secret password
>     </Plugin>
>
>     <Plugin YourNamespace::Jabber::SomeComponent>
> 	# ... parameters ...
>     </Plugin>
>
> </VHost>
>
> When DJabberd starts up with the above configuration it will  
> attempt to connect to the address nominated in RemoteAddr using the  
> JEP-0114 "accept" protocol and, if it succeeds, it'll route  
> outgoing messages from your component to the remote server and vice- 
> versa.

I'm assuming that it will use the VHost address to do authorization.  
If yes, then I'll send you a patch to be able to override that. Some  
servers, like Jabber.com XCP use a different name for authentication.

Also, this has some issues with some of our transports that have  
multiple hostnames but a single XEP-0114 connection. I need to check  
if VHost allows host alias.

> I've not tested this very much; in my tests, I had it connecting to  
> my own ::Component::External server implementation in a second  
> DJabberd instance, so it might not work as well against other  
> people's server implementations. I hope you'll give feedback and  
> possibly some patches to fix it in these cases.

We will test it thoroughly... :)

Many thanks Martin,
--
Pedro Melo
JID: xmpp:melo at simplicidade.org




More information about the Djabberd mailing list