[ejabberd] Shared Roster / Groups with External Authentication: Possible?

Tom Lancaster tom at tnhvietnam.com
Fri Jan 20 16:08:56 MSK 2012


For the benefit of anyone reading this thread in the future, what I
ended up doing was using ejabberd's ejabberdctl commands (including
mod_muc_admin in the ejabberd.cfg in order to get control over room
administration).

I highly recommend this approach over external authentication,
particularly in the case of web apps. Using ejabberd's native user
system performance has been great. When I was experimenting with
exernal auth to my web app, it was terrible. I think it's because
ejabberd loads the whole application environment each time it has to
authenticate, which it does often.

If anyone is interested I've put my PHP wrapper for ejabberdctl on
github - feel free to use it and add to it (I've only implemented the
commands that interest me: user administration, shared roster admin,
muc admin).

git clone git at github.com:tomlancaster/Ejabberd-Wrapper-PHP.git

Very much a work in progress, but I hope it saves someone a couple of hours.

Tom

On Thu, Jan 12, 2012 at 12:15 PM, 郎咸武 <langxianzhe at gmail.com> wrote:
> I'm really interested to know how other developers have gone about integrating ejabberd with social websites.
>
> i using  exmpp and nitrogen
>
> Tom Lancaster <tom at tnhvietnam.com>编写:
>
>>Ok, still no luck adding users from external auth to a shared roster.
>>So now I step back and ask the question:
>>
>>How do sites like mine deal with ejabberd auth when they want to
>>mirror groups from the website in ejabberd to allow subsets of site
>>users to converse with each other?
>>
>>I assumed that external authentication would be the way to go, but
>>I've been down that alley for several weeks and it seems not to
>>support the features I need.
>>
>>Do I need to manually add my site users to ejabberd on registration?
>>What happens when they change their password?
>>
>>I'm really interested to know how other developers have gone about
>>integrating ejabberd with social websites.
>>
>>Again, thank you for your time.
>>
>>Regards,
>>
>>Tom
>>
>>On Thu, Jan 5, 2012 at 8:15 PM, Tom Lancaster <tom at tnhvietnam.com> wrote:
>>> Incidentally, here is some output from ejabberd.log around the time I
>>> tried to connect to everybody at muc.chat.xemzi.com :
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.594.0>:ejabberd_c2s:1194) : broadcast
>>> [{privacy_list,{userlist,"invisible",
>>>                         [{listitem,jid,
>>>                                    {"everybody","muc.chat.xemzi.com",[]},
>>>                                    allow,1,false,false,false,false,true},
>>>                          {listitem,none,none,deny,2,false,false,false,false,
>>>                                    true}],
>>>                         false},
>>>               "invisible"}]
>>>
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.594.0>:ejabberd_c2s:1400) : Send XML on stream = "<iq
>>> from='growler at chat.xemzi.com' to='growler at chat.xemzi.com/Ostrich'
>>> id='push2561196467' type='set'><query xmlns='jabber:iq:privacy'><list
>>> name='invisible'/></query></iq>"
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.594.0>:ejabberd_c2s:1400) : Send XML on stream = "<iq
>>> from='growler at chat.xemzi.com' to='growler at chat.xemzi.com/Ostrich'
>>> id='iChat_175B2077' type='result'/>"
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.593.0>:ejabberd_receiver:320) : Received XML on stream =
>>> "<presence to=\"everybody at muc.chat.xemzi.com/growler\"><x
>>> xmlns=\"http://jabber.org/protocol/muc\"><history
>>> maxstanzas=\"25\"/></x>\n</presence>\n"
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.593.0>:shaper:61) : State: {maxrate,1000,17.51430112697342,
>>>                                    1325768941245865}, Size=137
>>> M=69.10516432874128, I=346.669
>>>
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.594.0>:ejabberd_router:301) : route
>>>        from {jid,"growler","chat.xemzi.com","Ostrich","growler",
>>>                  "chat.xemzi.com","Ostrich"}
>>>        to {jid,"everybody","muc.chat.xemzi.com","growler","everybody",
>>>                "muc.chat.xemzi.com","growler"}
>>>        packet {xmlelement,"presence",
>>>                   [{"to","everybody at muc.chat.xemzi.com/growler"}],
>>>                   [{xmlelement,"x",
>>>                        [{"xmlns","http://jabber.org/protocol/muc"}],
>>>                        [{xmlelement,"history",[{"maxstanzas","25"}],[]}]},
>>>                    {xmlcdata,<<"\n">>}]}
>>>
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.594.0>:ejabberd_local:286) : local route
>>>        from {jid,"growler","chat.xemzi.com","Ostrich","growler",
>>>                  "chat.xemzi.com","Ostrich"}
>>>        to {jid,"everybody","muc.chat.xemzi.com","growler","everybody",
>>>                "muc.chat.xemzi.com","growler"}
>>>        packet {xmlelement,"presence",
>>>
>>> ....
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.594.0>:ejabberd_sm:394) : session manager
>>>        from {jid,"growler","chat.xemzi.com","Ostrich","growler",
>>>                  "chat.xemzi.com","Ostrich"}
>>>        to {jid,"everybody","muc.chat.xemzi.com","growler","everybody",
>>>                "muc.chat.xemzi.com","growler"}
>>>        packet {xmlelement,"presence",
>>>                           [{"to","everybody at muc.chat.xemzi.com/growler"}],
>>>                           [{xmlelement,[...],...},{xmlcdata,...}]}
>>>
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.594.0>:ejabberd_sm:488) : packet droped
>>>
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.593.0>:ejabberd_receiver:320) : Received XML on stream = "<iq
>>> type=\"error\" to=\"growler at chat.xemzi.com\"
>>> id=\"push2561196467\"><error type=\"501\">Cl
>>> ient has no handler for IQ type set namespace
>>> jabber:iq:privacy</error>\n</iq>\n"
>>>
>>> =INFO REPORT==== 2012-01-05 20:09:01 ===
>>> D(<0.593.0>:shaper:61) : State: {maxrate,1000,206.34798465641498,
>>>                                    1325768941592541}, Size=163
>>> M=90.87604429712994, I=1.316
>>>
>>>
>>>
>>> On Thu, Jan 5, 2012 at 8:08 PM, Tom Lancaster <tom at tnhvietnam.com> wrote:
>>>> On Thu, Jan 5, 2012 at 7:32 PM, Badlop <badlop at gmail.com> wrote:
>>>>> 2012/1/3 Tom Lancaster <tom at tnhvietnam.com>:
>>>>>> I have been wracking my brain and reading everything I can to
>>>>>> establish whether I can accomplish the following using ejabberd:
>>>>>>
>>>>>> 1) Everyone in a shared roster (ie: all users of my website can see
>>>>>> each other through an xmpp client)
>>>>>
>>>>> See:
>>>>>
>>>>> http://www.ejabberd.im/shared-roster-all#example1
>>>>
>>>>
>>>> From that page: "This feature requires internal authentication. If you
>>>> use external authentication, LDAP... then adding @all@ to a shared
>>>> roster group will do nothing."
>>>>
>>>> Which is why I'm asking if there is any way at all to do shared roster
>>>> groups with external authentication. In your previous email you said
>>>> that @all@ would in fact work, in contradiction of the above linked
>>>> page. I've followed those instructions and I'm not getting any kind of
>>>> shared roster on iChat or Adium. This is sort of why I'm asking what I
>>>> should expect to see on the client end if it was working: is there
>>>> anything special I need to do to see the shared contacts from the
>>>> server? I'm not seeing anyone show up in my buddy list.
>>>>
>>>> Thanks again for your time, and please excuse my confusion - I think I
>>>> may be incorrectly conflating "group" and "group chat" which is why
>>>> I'm asking if I need to make my client join a "group chat" in order to
>>>> see the shared contacts.
>>>>>
>>>>>
>>>>> ---
>>>>> Badlop
>>>>> ProcessOne
>>>>> _______________________________________________
>>>>> ejabberd mailing list
>>>>> ejabberd at jabber.ru
>>>>> http://lists.jabber.ru/mailman/listinfo/ejabberd
>>_______________________________________________
>>ejabberd mailing list
>>ejabberd at jabber.ru
>>http://lists.jabber.ru/mailman/listinfo/ejabberd
> _______________________________________________
> ejabberd mailing list
> ejabberd at jabber.ru
> http://lists.jabber.ru/mailman/listinfo/ejabberd


More information about the ejabberd mailing list