Status/presence with LDAP rosters

I have reproduced my problem with Active Directory in openldap. I have done this in a Vmware server 2 beta image of RHEL4.

Users stored in the directory like uid=Lastname, First, ou= … seem to be having the problem. Users with names that are more unix like like uid=doej, ou=… seem to have no trouble. I think the problem is most likely with the backslash comma (,) being interpreted wrong. I have tried names like uid=Doe John, ou=… and those do work, so I don’'t think it is the whitespace.

I can provide the vmware image if needed.

Doug.

Hey Doug,

I can provide the vmware image if needed.

I would really like to get that image so I can debug the problem. You can send me an email with instructions on how to get the image and use it.

Thanks,

– Gato

We have names with whitespace and no commas and the presence problem persists.

“cn=Mark Hauger,ou=People,ou=Entities,ou=SAM,o=Morrison Industries,c=US”

There are no escaped punctuation.

And we have very Unixy usernames,

cn=jmcadams,ou=it…

uid=jmcadams

no spaces and no punctuation here, FWIW

Jeff

I’'m running WildFire 2.6.2 and have combed through the Roster.java script. I cannot locate the line:

RosterItem item = new RosterItem(jid, RosterItem.SUB_TO, RosterItem.ASK_NONE

at or even near line 109. Does anybody know if the line being referenced is from a previous version of WildFire? Has it changed in 2.6.2? Anybody have any idea what code can be modified in WF 2.6.2 to mitigate the Presence problem?

I can also confirm that removing the comma from the user CN/DN makes the problem go away. However, that’'s not really a good solution for some of us… I have over 20,000 users that will be Jabber powered once the Presence issue is resolved.

Thanks in Advance!

Do mean removing the commas from the CN/DN of the user logged into the jabber server, or do you mean removing commas from the CN/DN of the username with which the jabber server authenticates itself to the LDAP server?

We’'ve upgraded to the latest server: 3.0.1 (from 2.6.1)

The experience is exactly the same as before; users in the roster because of shared group do not receive presense information. The only way to determine who is signed on or not is to check the administrative console or to log off and back onto the XMPP server (which updates the roster).

Anyone know if this has been isolated to a specific configuration? Or do I just need to find an XMPP with working LDAP support? (Other than this Wildfire is awesome, but I’'ve been telling my users this is going-to-be-fixed since November 2005).

We do NOT have commas or whatever in our UIDs.

Groups are groupOfNames containing valid DNs, thus posixMode is false.

Hey whitemice,

Sorry to hear that it is still not working for you. It seems that your case is different than the ones we fixed. It would help if you can give more details about your setup so we can reproduce it and see what is going on. The other option that would help us would be for you to provide us a vmware image that includes your LDAP server setup and a wildfire instance (optional).

Thanks,

– Gato

I am seeing this in my logs -

2006.08.30 13:00:36 Trying to find a user’'s DN based on their username. uid: cn=patrick czerew,ou=people,ou=entities,ou=sam,o=morrison industries,c=us, Base DN: o=Morrison Industries,c=US…

2006.08.30 13:00:36 Creating a DirContext in LdapManager.getContext()…

2006.08.30 13:00:36 Created hashtable with context values, attempting to create context…

2006.08.30 13:00:36 … context created successfully, returning.

2006.08.30 13:00:36 Starting LDAP search…

2006.08.30 13:00:36 … search finished

2006.08.30 13:00:36 User DN based on username ‘‘cn=patrick czerew,ou=people,ou=entities,ou=sam,o=morrison industries,c=us’’ not found.

2006.08.30 13:00:36 Exception thrown when searching for userDN based on username ‘‘cn=patrick czerew,ou=people,ou=entities,ou=sam,o=morrison industries,c=us’’

org.jivesoftware.wildfire.user.UserNotFoundException: Username cn=patrick czerew,ou=people,ou=entities,ou=sam,o=morrison industries,c=us not found

at org.jivesoftware.wildfire.ldap.LdapManager.findUserDN(LdapManager.java:511)

at org.jivesoftware.wildfire.ldap.LdapManager.findUserDN(LdapManager.java:439)

at org.jivesoftware.wildfire.ldap.LdapUserProvider.loadUser(LdapUserProvider.java: 69)

at org.jivesoftware.wildfire.user.UserManager.getUser(UserManager.java:171)

at org.jivesoftware.wildfire.ldap.LdapGroupProvider.populateGroups(LdapGroupProvid er.java:483)

at org.jivesoftware.wildfire.ldap.LdapGroupProvider.getGroups(LdapGroupProvider.ja va:210)

at org.jivesoftware.wildfire.group.GroupManager.getSharedGroups(GroupManager.java: 232)

at org.jivesoftware.wildfire.roster.RosterManager.getSharedGroups(RosterManager.ja va:169)

at org.jivesoftware.wildfire.roster.Roster.

I simply removed the since the documentation says the default is false anyway.

Still seeing things like…

2006.09.07 15:02:12 Exception thrown when searching for userDN based on username ‘‘cn=anthony hoag,ou=people,ou=entities,ou=sam,o=morrison industries,c=us’’

org.jivesoftware.wildfire.user.UserNotFoundException: Username cn=anthony hoag,ou=people,ou=entities,ou=sam,o=morrison industries,c=us not found

at org.jivesoftware.wildfire.ldap.LdapManager.findUserDN(LdapManager.java:511)

at org.jivesoftware.wildfire.ldap.LdapManager.findUserDN(LdapManager.java:439)

at org.jivesoftware.wildfire.ldap.LdapUserProvider.loadUser(LdapUserProvider.java: 69)

at org.jivesoftware.wildfire.user.UserManager.getUser(UserManager.java:171)

at org.jivesoftware.wildfire.ldap.LdapGroupProvider.populateGroups(LdapGroupProvid er.java:483)

at org.jivesoftware.wildfire.ldap.LdapGroupProvider.getGroups(LdapGroupProvider.ja va:247)

at org.jivesoftware.wildfire.group.GroupManager.getGroups(GroupManager.java:256)

at org.jivesoftware.wildfire.admin.group_002dsummary_jsp._jspService(group_002dsum mary_jsp.java:153)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)