All Users in a Shared Roster Group

The ability to add all registered users to everyone's roster is one of the most requested features for ejabberd. Especially small enterprises are itching to see everybody in everyone's roster. This feature is available since ejabberd 1.0.0.

Wishes for this Feature

The feature to see all users in everybody's roster has been discussed on:

Previous Solutions

Some partial and experimental solutions have been contributed since a while:

New Solution

As of version 1.0.0, ejabberd allows the administrator to add all users on a virtual host to a shared roster group. When he creates a shared roster group on a virtual host, and specifies the members, he can put @all@, and ejabberd will add all users on the current virtual host.

This feature requires internal authentication. If you use external authentication, LDAP... then adding @all@ to a shared roster group will do nothing.

Example 1: everybody can see everybody else

  1. Login on the web interface and go to 'Virtual Hosts' -> 'server' -> 'Shared Roster'
  2. Create a new Shared Roster, with identifier 'everybody'. Click on 'Add new'.
  3. Fill the formulary with this:
    • Name: EveryBody
    • Description: This group contains everybody
    • Members: @all@
    • Displayed Groups: everybody
  4. Click on Submit.
  5. When any user logins, he will have a new group in his roster, called EveryBody, and containing all the other users registered on the server.

Check in this screenshot how the group must look.

Example 2: some people (boy and boby) have everybody else on their roster

Important: note that boy and boby will not see presence from the other people. They will be on the roster, but always offline because the other people don't have boy and boby in their rosters, and don't share presence with them.
  1. Login on the web interface and go to 'Virtual Hosts' -> 'server' -> 'Shared Roster'
  2. Create a new Shared Roster, with identifier 'everybody'. Click on 'Add new'.
  3. Fill the formulary with this:
    • Name: Everybody
    • Description: This group contains everybody
    • Members: @all@
    • Displayed Groups:
  4. Click on Submit.
  5. Create a new Shared Roster, with identifier 'badboys'. Click on 'Add new'.
  6. Fill the formulary with this:
    • Name: Badboys
    • Description: Those ppl can see everybody else
    • Members: boy@server boby@server
    • Displayed Groups: everybody
  7. Click on Submit.
  8. When boy or boby login, he will have as contacts everybody else registered on the server, but they will not have him on their rosters.

Example 3: everybody has 'weatherman' and 'governor' on their roster

Important: note that people will see weatherman and governor offline, even if they are logged because weatherman and governor don't have everybody in their rosters, and don't share presence with them.
  1. Login on the web interface and go to 'Virtual Hosts' -> 'server' -> 'Shared Roster'
  2. Create a new Shared Roster, with identifier 'publicppl'. Click on 'Add new'.
  3. Fill the formulary with this:
    • Name: Public_people
    • Description: This group contains public people
    • Members: weatherman@server governor@server
    • Displayed Groups:
  4. Click on Submit.
  5. Create a new Shared Roster, with identifier 'spectators'. Click on 'Add new'.
  6. Fill the formulary with this:
    • Name: Spectators
    • Description: The spectators can see public people
    • Members: @all@
    • Displayed Groups: publicppl
  7. Click on Submit.
  8. When any user logins, he will have the public person on his roster.

Example 4: Sauron can see everybody, and everybody can see him

  1. Login on the web interface and go to 'Virtual Hosts' -> 'server' -> 'Shared Roster'
  2. Create a new Shared Roster, with identifier 'mountain'. Click on 'Add new'.
  3. Fill the formulary with this:
    • Name: mountain
    • Description: This group contains the people on top of the highest mountain
    • Members: sauron@server
    • Displayed Groups: earth
  4. Click on Submit.
  5. Create a new Shared Roster, with identifier 'earth'. Click on 'Add new'.
  6. Fill the formulary with this:
    • Name: earth
    • Description: All the people in Middle Earth
    • Members: @all@
    • Displayed Groups: mountain
  7. Click on Submit.
  8. When users login, they can see Sauron. If Sauron is online, they see him online, and viceversa.

More About Shared Roster Groups

Related Links

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

But for external auth

How do I do this when I'm using external auth?

Is there no way? This is very lacking. An application of this enormity *should* have a simple way of just listing all the connected users who are currently online, just like

./ejabberdctl connected_users

gives.

The external auth script does

The external auth script does not provide the list of registered accounts. A workaround is to enable the extauth_cache option, see the ejabberd Guide.

Regarding Shared Roster Groups, see the special member @online@.

jwt authentication with mod_shared_roster: roster not updated

Hi,

I've used jwt token for authetication from https://github.com/ParamountVentures/ejabberd-auth-jwt and it works great. Also I have enabled mod_shared_roster with @online@, just one group. So all online users should see presence from all.

Behaviour is that the users which are already logged in are not notified that new users are logged in. After logoff/login you receive the currently online users. Also i added extauth_cache: 600, but I didn't see any difference. I am using 16.01 on mac.

A

jwt with ejabbered-16.02

Hi Smoqee,
I am trying to implement wt in ejabbered
https://github.com/ParamountVentures/ejabberd-auth-jwt
but having some following issues:
1. Some warning while compiling main erl file erlc -I /some/path/ejabberd/include ejabberd_auth_jwt.erl
2. My deps folder is empty
Copy all of the .beam files from the deps subfolders to the /some/path/ejabberd/ebin folder
Can you please help me to configure this properly.

Regards
Prateek Gera

Context Sensitive Group Names

the group names are context sensitive that means to create a shared roster group that contains every user on the server that is visible to everyone on the server:
Name: EveryBody
Description: This group contains everybody
Members: @all@
Displayed Groups: EveryBody

instead of
Name: EveryBody
Description: This group contains everybody
Members: @all@
Displayed Groups: everybody

just in case anybody else is wondering why the example is not working :)

Hi,I've got just one

Hi,
I've got just one question as to this entry: how can I make a roster shared list for LDAP authentication?
Thanks.
Vialanno

everybody group doesnt show anyone - ldap - not supported

Never mind, I have a problem with reading.. its brutal, so is my foot in mouth disease.

Shared roster rooms?

Is there a way to have add a "Conference" group with all the persistent chatrooms in it?
I tried this by entering 'chatroom@conference.host.domain.com' but that did not work. The JID
shows up, but the presence is not authorized and does not look right. If I right click my roster,
I am able to add a room (pidgin) and I want this to be a part of the shared roster for everyone,
just like all the user JID's.

Not possible room bookmarks with mod_shared_roster

bmartin_3TIER wrote:

Is there a way to have add a "Conference" group with all the persistent chatrooms in it?

There isn't a way to indicate that a member is a chatroom.

bmartin_3TIER wrote:

I tried this by entering 'chatroom@conference.host.domain.com' but that did not work.

If I set this member in a Shared Roster Group, Tkabber detects that it is a chatroom and displays it accordingly.

bmartin_3TIER wrote:

I am able to add a room (pidgin)

Yes, Tkabber (and other clients) implement XEP-0048: Bookmarks or an older version of that protocol, so a user can add bookmarks of chatrooms, which are usually displayed in the roster. But those bookmarks are not real elements of the roster, so mod_shared_roster can't benefit from that protocol.

shared roster without authorization

Is it possible make shared roster without authorization ?
When I logon to incorporate jabber server, I see all registered accounts, but I need manually authorize everyone. It's not very suitable...

Thanks, paix

sorry, all ok. Just to see

sorry,

all ok. Just to see accounts online need another client relogin or server restart.

shared roster with exception

is that possible shared all user into a roster with some exception ?
member : @all@
!admin@localhost ( this is an exception)

Hmmm

Hmmm
I use svn version this @all@ feature a few weeks. And I use LDAP authentication, and I can say - All work perfectly!!! I add LDAP user, log in ejabberd and can see all jabber users, but if some one online, he must go offline, and then online back to see new user.

Howto

How do I make a roster shared list for LDAP authentication?

Re: Hmmm

nordeep wrote:
But if some one online, he must go offline, and then online back to see new user.
I have no ldap, but problem is the same.

I am seeing the exact same

I am seeing the exact same behavior in my server that I recently set up. Anyone ever find a fix for this?

This is a known problem

Hello,

We have added some improvements to shared roster in 1.1.2. However, there is still one know problem that was not fixed in 1.1.2. I have been working on it, but had to stop on this feature to work on higher priority tasks:
https://support.process-one.net/browse/EJAB-71

However, this problem will be fixed in the next version ejabberd 1.2
I am glad to see that the previous fixes helped improving the "shared roster" feature.
We are almost there.

--
Mickaël Rémond
Process-one

Syndicate content