LDAP jpegPhoto on user vcard

How can I show the user’'s jpegPhoto LDAP attribute on the client? Google users have their icon shown on Spark, how can I do the same ?

Thanks!

Wildfire rocks!

Álvaro

Add the following to the vcard mapping in wildfire.xml may work:

/code

I added it, this is what I get on the error.log now:

2006.07.10 08:33:16 org.jivesoftware.wildfire.ldap.LdapVCardProvider.getLdapAttributes(LdapVCardProv ider.java:155)

java.lang.ClassCastException: [B

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.getLdapAttributes(LdapVCardPro vider.java:147)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.loadVCard(LdapVCardProvider.ja va:173)

at org.jivesoftware.wildfire.vcard.VCardManager.getOrLoadVCard(VCardManager.java:1 79)

at org.jivesoftware.wildfire.vcard.VCardManager.getVCard(VCardManager.java:172)

at org.jivesoftware.wildfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:1 07)

at org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.wildfire.IQRouter.handle(IQRouter.java:268)

at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:96)

at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)

at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:247)

at org.jivesoftware.wildfire.net.ClientSocketReader.processIQ(ClientSocketReader.j ava:51)

at org.jivesoftware.wildfire.net.SocketReader.process(SocketReader.java:213)

at org.jivesoftware.wildfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:156)

at org.jivesoftware.wildfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 62)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:123)

at java.lang.Thread.run(Thread.java:595)

2006.07.10 08:33:16 org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:68) Internal server error

java.lang.NullPointerException

at org.jivesoftware.wildfire.ldap.LdapVCardProvider$VCard.treeWalk(LdapVCardProvid er.java:272)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider$VCard.getVCard(LdapVCardProvid er.java:259)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.loadVCard(LdapVCardProvider.ja va:175)

at org.jivesoftware.wildfire.vcard.VCardManager.getOrLoadVCard(VCardManager.java:1 79)

at org.jivesoftware.wildfire.vcard.VCardManager.getVCard(VCardManager.java:172)

at org.jivesoftware.wildfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:1 07)

at org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.wildfire.IQRouter.handle(IQRouter.java:268)

at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:96)

at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)

at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:247)

at org.jivesoftware.wildfire.net.ClientSocketReader.processIQ(ClientSocketReader.j ava:51)

at org.jivesoftware.wildfire.net.SocketReader.process(SocketReader.java:213)

at org.jivesoftware.wildfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:156)

at org.jivesoftware.wildfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 62)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:123)

at java.lang.Thread.run(Thread.java:595)

2006.07.10 08:33:34 org.jivesoftware.wildfire.ldap.LdapVCardProvider.getLdapAttributes(LdapVCardProv ider.java:155)

java.lang.ClassCastException: [B

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.getLdapAttributes(LdapVCardPro vider.java:147)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.loadVCard(LdapVCardProvider.ja va:173)

at org.jivesoftware.wildfire.vcard.VCardManager.getOrLoadVCard(VCardManager.java:1 79)

at org.jivesoftware.wildfire.vcard.VCardManager.getVCard(VCardManager.java:172)

at org.jivesoftware.wildfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:1 07)

at org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.wildfire.IQRouter.handle(IQRouter.java:268)

at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:96)

at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)

at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:247)

at org.jivesoftware.wildfire.net.ClientSocketReader.processIQ(ClientSocketReader.j ava:51)

at org.jivesoftware.wildfire.net.SocketReader.process(SocketReader.java:213)

at org.jivesoftware.wildfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:156)

at org.jivesoftware.wildfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 62)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:123)

at java.lang.Thread.run(Thread.java:595)

2006.07.10 08:33:34 org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:68) Internal server error

java.lang.NullPointerException

at org.jivesoftware.wildfire.ldap.LdapVCardProvider$VCard.treeWalk(LdapVCardProvid er.java:272)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider$VCard.getVCard(LdapVCardProvid er.java:259)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.loadVCard(LdapVCardProvider.ja va:175)

at org.jivesoftware.wildfire.vcard.VCardManager.getOrLoadVCard(VCardManager.java:1 79)

at org.jivesoftware.wildfire.vcard.VCardManager.getVCard(VCardManager.java:172)

at org.jivesoftware.wildfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:1 07)

at org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.wildfire.IQRouter.handle(IQRouter.java:268)

at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:96)

at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)

at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:247)

at org.jivesoftware.wildfire.net.ClientSocketReader.processIQ(ClientSocketReader.j ava:51)

at org.jivesoftware.wildfire.net.SocketReader.process(SocketReader.java:213)

at org.jivesoftware.wildfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:156)

at org.jivesoftware.wildfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 62)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:123)

at java.lang.Thread.run(Thread.java:595)

2006.07.10 08:34:27 org.jivesoftware.wildfire.ldap.LdapVCardProvider.getLdapAttributes(LdapVCardProv ider.java:155)

java.lang.ClassCastException: [B

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.getLdapAttributes(LdapVCardPro vider.java:147)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.loadVCard(LdapVCardProvider.ja va:173)

at org.jivesoftware.wildfire.vcard.VCardManager.getOrLoadVCard(VCardManager.java:1 79)

at org.jivesoftware.wildfire.vcard.VCardManager.getVCard(VCardManager.java:172)

at org.jivesoftware.wildfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:1 07)

at org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.wildfire.IQRouter.handle(IQRouter.java:268)

at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:96)

at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)

at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:247)

at org.jivesoftware.wildfire.net.ClientSocketReader.processIQ(ClientSocketReader.j ava:51)

at org.jivesoftware.wildfire.net.SocketReader.process(SocketReader.java:213)

at org.jivesoftware.wildfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:156)

at org.jivesoftware.wildfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 62)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:123)

at java.lang.Thread.run(Thread.java:595)

2006.07.10 08:34:27 org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:68) Internal server error

java.lang.NullPointerException

at org.jivesoftware.wildfire.ldap.LdapVCardProvider$VCard.treeWalk(LdapVCardProvid er.java:272)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider$VCard.getVCard(LdapVCardProvid er.java:259)

at org.jivesoftware.wildfire.ldap.LdapVCardProvider.loadVCard(LdapVCardProvider.ja va:175)

at org.jivesoftware.wildfire.vcard.VCardManager.getOrLoadVCard(VCardManager.java:1 79)

at org.jivesoftware.wildfire.vcard.VCardManager.getVCard(VCardManager.java:172)

at org.jivesoftware.wildfire.handler.IQvCardHandler.handleIQ(IQvCardHandler.java:1 07)

at org.jivesoftware.wildfire.handler.IQHandler.process(IQHandler.java:48)

at org.jivesoftware.wildfire.IQRouter.handle(IQRouter.java:268)

at org.jivesoftware.wildfire.IQRouter.route(IQRouter.java:96)

at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:67)

at org.jivesoftware.wildfire.net.SocketReader.processIQ(SocketReader.java:247)

at org.jivesoftware.wildfire.net.ClientSocketReader.processIQ(ClientSocketReader.j ava:51)

at org.jivesoftware.wildfire.net.SocketReader.process(SocketReader.java:213)

at org.jivesoftware.wildfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:156)

at org.jivesoftware.wildfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 62)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:123)

at java.lang.Thread.run(Thread.java:595)

Of course, I do have a jpegPhoto on LDAP. Do we have size constraints ?

Thanks!

No, it’'s not the size issue.

Just the LdapVCardProvider in wildfire might be unable to read octet-string fields (It probably can’'t be converted into String objects).

That’'s the reason of the occurance of ClassCastException.

Solution: Before any kind of investigation or fix is done by Jive software, writing / finding another vCardProvider would help.

You mean start using vcards on the SQL database ? That kind if defeats the whole point of having a LDAP doesn’‘t it ? I will need to type in all user’'s data on the database, and find some way to keep it in sync…

that doesn’'t look too good.

You mean start using vcards on the SQL database ?[/quote]

NO I didn’'t mean that. What I mean is in some way change the default LDAP vCard provider, such that it can read JPEG image data.

Hey guys,

This is a cool feature idea. The following page has details about how to pull the data out of LDAP:

http://java.sun.com/products/jndi/tutorial/ldap/misc/attrs.html

I’‘ll see if it’'s possible to make this work (filed as JM-773)…

Thanks,

Matt

Ah… now I got it. I thought this was already implemented.

I have voted for it.

Thank you!

Álvaro

So I’'m correct in interpreting this as there being no way right now for Wildfire 3.0 to pull some form of a photo from LDAP for vCard purposes–right?

Swad,

That’‘s correct. Until we add the new feature, it’'s not possible to pull the photo from LDAP.

-Matt

Thanks for the reply. I went ahead and tossed my vote into the mix.

Is the feature in 3.0.1 ?

(Display a photo based on a vcard mapping where the url is stored on the user leaf in ldap) ?

TIA !

Regards.

Nope, the feature has not been implemented yet. You can track the status by visiting the issue (linked above).

Regards,

Matt

I think this is just like http://www.jivesoftware.org/issues/browse/JM-460

isn’'t it ?

No… The two are not the same… JM-460 is suggesting that some fields from the vCard be stored in the database while others get pulled from LDAP… JM-773 is suggesting that we pull the image directly from LDAP… Both sound good but JM-460 is better suited for Active Directory since there is no out-of-th-box method of storing an image in Active Directory… I’'m not sure about other LDAP servers but the UI for Active Directory does not have a way of adding an image to a user account… .Therefor it would be pretty difficult for one to get the image stored in and A/D LDAP server for JM-773 to work…

I use http://www-unix.mcs.anl.gov/~gawor/ldap/ and PHP LDAP Admin to manage the LDAP contacts.

We wrote a small portal in PHP that lists people’'s name, phone number, email e there a link for them to upload their photo.

LDAP is really great for that.