Some comments about implementing a virtual users component

Pedro Melo melo at simplicidade.org
Mon Feb 5 12:11:36 UTC 2007


Hi,

At work I needed to implement a component for a subdomin in which all  
their users have the following behavior. It will be used to add phone  
numbers as JIDs to your roster, acting as a helper for SIP and to  
send and receive SMSs.

  * They are always online;
  * They always accept subscription requests and try to subscribe the  
JID that asks.

As a base for this I wrote a subclass of Component and  
Component::Node. This deals with all the IQ disco, and VCard stuff  
simply and effectively.

I started with the InMemory RosterStorage to deal with the roster,  
subclass it to override load_roster, so that when asked to be  
subscribed I could reply with a subscription of 'from'. This deals  
with the "always accept subscription requests" part.

I've also hooked the  PresenceChecker phase to give back a valid  
presence every time. Now they are always online.

The only thing that I wasn't able to see a way to do with current  
hooks is sending back a subscription request for each subscription.  
I've added a new phase, PresenceSubscriptionRequested but I think we  
could add hooks on all roster-change related presences....

Opinions?
--
Pedro Melo
Blog: http://www.simplicidade.org/notes/
Jabber ID: melo at simplicidade.org
Use Jabber!




More information about the Djabberd mailing list