[ejabberd] Roster Manipulation

Olivier Goffart ogoffart at kde.org
Tue Jan 16 14:18:08 MSK 2007


Le mardi 16 janvier 2007 10:20, PsyMonkey a écrit :
> Hi,
>
> I looked at the PyMSNt gateway and they require that the client be
> developed in a specific way so that if a :
>
> <presence from="contact%hotmail.com at msn.host.com" to="user at host.com"
> type="subscribe">
>         <x xmlns="http://delx.cjb.net/protocol/roster-subsync">
>                 <item name="Some contact" subscription="both">
>                         <group>Friends</group>
>                         <group>Colleagues</group>
>                 </item>
>         </x>
> </presence>
>
> is sent the contact is added automatically?  One thing that is great is
> that this is backward compatible, if the client/server does not support
> this feature the request will go through as a standard subscribe request. 
> O well i implemented it anyway and it does not work with psi (Jabber
> Client), you do need a client/server that supports this command i think. 
> Please note i am not an expert, just have a lot of time.  Hopefully in the
> future there will be a feature added to do what i want it to do with
> ejabberd.


Hi, the JEP, proposed by the pyMSNt author is there:
http://www.xmpp.org/extensions/inbox/rostersync.html

I had implemented it in Kopete one year ago. At this time, pyMSNt (0.10.3) was 
completely bugged regarding his own JEP (because none of the current client 
implemented it, so it was not tested at all). So I reported the problem and 
he fixed it, and also improved the JEP. Anyway I did not commit my patch. 
(and it seems that I lost the patch locally also)
The reason why I did not commit is that I don't like the philosophy behind 
that protocol.

IMO, nothing should be required to be implemented by the client.  What happen 
if I connect with a non-capable client while some contact are added and 
removed ?
Also, in order to let the gateway manage his contactlist and his groups, there 
need to exchange between the server and the gateway.

The gateway must indeed be notified if the user move a contact to a group, 
remove a contact, ...
The server must be notified when a contact has moved on the legacy server, or 
if his alias has changed, or if it was removed.

One simple solution would be to give the jabber password to the gateway,  so 
the gateway can open a c2s connection with the server, and manage itself the 
contactlist. Anyway, i don't want to give my password to someone else.  so 
this is a bad solution.

An ideal solution would be to make a protocol which allow the gateway to 
manager user's contactlist  (at least the part of user inside his server).  

example

<iq from='msn.gateway.org'  to='user at server.org' type='set' id='r1'>
  <query xmlns='http://xmpp.org/roster-gateway'>
    <item jid='jhon%msn.com at msn.gateway.org'
          name='Jhon'>
      <group>Servants</group>
    </item>
  </query>
</iq>

http://xmpp.org/roster-gateway would be exactly the same as jabber:iq:roster, 
expected that it works between the gateway and the server,  and that the 
gateway is only authorized to manage contact with the jid's host equal to his 
host, and if the subscription of the gateways is 'to' or 'both'

This is just an idea.

I know this is completely off-topic on this mailing, but since you are talking 
about that, I wanted to express my opinion :-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.jabber.ru/pipermail/ejabberd/attachments/20070116/f1089e32/attachment.pgp


More information about the ejabberd mailing list