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:
- Ejabberd in a local network
- Automatic Roster
- "See all online"
- How shared roster?
- Wildcards in shared roster
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
- Login on the web interface and go to 'Virtual Hosts' -> 'server' -> 'Shared Roster'
- Create a new Shared Roster, with identifier 'everybody'. Click on 'Add new'.
- Fill the formulary with this:
- Name: EveryBody
- Description: This group contains everybody
- Members: @all@
- Displayed Groups: everybody
- Click on Submit.
- 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.- Login on the web interface and go to 'Virtual Hosts' -> 'server' -> 'Shared Roster'
- Create a new Shared Roster, with identifier 'everybody'. Click on 'Add new'.
- Fill the formulary with this:
- Name: Everybody
- Description: This group contains everybody
- Members: @all@
- Displayed Groups:
- Click on Submit.
- Create a new Shared Roster, with identifier 'badboys'. Click on 'Add new'.
- Fill the formulary with this:
- Name: Badboys
- Description: Those ppl can see everybody else
- Members: boy@server boby@server
- Displayed Groups: everybody
- Click on Submit.
- 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.- Login on the web interface and go to 'Virtual Hosts' -> 'server' -> 'Shared Roster'
- Create a new Shared Roster, with identifier 'publicppl'. Click on 'Add new'.
- Fill the formulary with this:
- Name: Public_people
- Description: This group contains public people
- Members: weatherman@server governor@server
- Displayed Groups:
- Click on Submit.
- Create a new Shared Roster, with identifier 'spectators'. Click on 'Add new'.
- Fill the formulary with this:
- Name: Spectators
- Description: The spectators can see public people
- Members: @all@
- Displayed Groups: publicppl
- Click on Submit.
- When any user logins, he will have the public person on his roster.
Example 4: Sauron can see everybody, and everybody can see him
- Login on the web interface and go to 'Virtual Hosts' -> 'server' -> 'Shared Roster'
- Create a new Shared Roster, with identifier 'mountain'. Click on 'Add new'.
- 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
- Click on Submit.
- Create a new Shared Roster, with identifier 'earth'. Click on 'Add new'.
- Fill the formulary with this:
- Name: earth
- Description: All the people in Middle Earth
- Members: @all@
- Displayed Groups: mountain
- Click on Submit.
- When users login, they can see Sauron. If Sauron is online, they see him online, and viceversa.
More About Shared Roster Groups
- Release notes - ejabberd 0.9 (2005-04-18)
- mod_shared_roster in the guide
- Shared Roster Groups Screenshots
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 fromhttps://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,
https://github.com/ParamountVentures/ejabberd-auth-jwt
I am trying to implement wt in ejabbered
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
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.
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.
I am able to add a room (pidgin)
Yes, Tkabber (and other clients) implementXEP-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
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.
--
Process-one
Mickaël Rémond