Здравствуйте.
Настроено так:
{mod_vcard_ldap, [
%% соответствие между полями Vcard и результатом поиска в LDAP
{ldap_vcard_map, [
{"NICKNAME", "%u", []},
{"FAMILY", "%s", ["sn"]},
{"GIVEN", "%s", ["givenName"]},
{"MIDDLE", "%s", ["initials"]},
{"FN", "%s %s %s", ["sn", "givenName", "initials"]},
{"EMAIL", "%s", ["mail"]},
{"ORGUNIT", "%s", ["ou"]},
{"PHOTO", "%s", ["jpegPhoto"]},
{"LOCALITY", "%s", ["l"]},
{"TEL", "%s", ["telephoneNumber"]}
]},
%% предлагаем искать только по этим полям
{ldap_search_fields, [
{"Пользователь", "%u"},
{"Фамилия", "sn"},
{"Имя", "givenName"},
{"Отчество", "initials"},
{"Почта", "mail"},
{"Отдел", "ou"},
{"Телефон", "telephoneNumber"}
]},
%% показываем только эти результаты
{ldap_search_reported, [
{"Полное имя", "FN"},
{"Пользователь", "NICKNAME"}
]}
]}
Аватары соответствуют стандартам по размерам и прочим характеристикам (http://www.xmpp.org/extensions/xep-0153.html#bizrules-image), хранятся в соответствующем поле jpegPhoto.
Ростер отдаётся автоматически, при подключении. Соответственно, все поля в нём заполняются автоматически и корректно (ник, статус и тд), за исключением аватары. Вот пример того, что получаю от сервера, когда подключаюсь:
<<<< user1@domain/Vacuum-IM 10:40:31 +3 <<<<
<presence from="user2@domain/123" to="user1@domain/Vacuum-IM">
<priority>30</priority>
<status>tralala</status>
<x xmlns="jabber:x:avatar">
<hash>35b6967ad4cf11b2a2b65c16017c0a0128063c22</hash>
</x>
<c xmlns="http://jabber.org/protocol/caps" node="http://vacuum-im.googlecode.com" ver="nvOfScxvX/KRll5e2pqmMEBIls0=" hash="sha-1"/>
<x xmlns="vcard-temp:x:update">
<photo/>
</x>
<delay xmlns="urn:xmpp:delay" from="user2@domain/123" stamp="2014-06-05T06:22:56Z"/>
<x xmlns="jabber:x:delay" stamp="20140605T06:22:56"/>
</presence>
Аватара не отображается. При этом, внутри vCard, если я его открою, показывается корректно. Если же я ткну «обновить Vcard», то аватар стягивается и показывается в ростере до следующего перезапуска клиента или истечения какого-то таймаута:
>>>> user1@domain/Vacuum-IM 10:51:30 +11343 >>>>
<iq type="get" to="user2@domain" id="sid_40">
<vCard xmlns="vcard-temp"/>
</iq>
<<<< user1@domain/Vacuum-IM 10:51:30 +16 <<<<
<iq from="user2@domain" type="result" to="user1@domain/Vacuum-IM" id="sid_40">
<vCard xmlns="vcard-temp">
<NICKNAME>user2</NICKNAME>
<FN>Иванов Иван Иванович</FN>
<EMAIL>
<INTERNET/>
<PREF/>
<USERID>mail@mail.mail</USERID>
</EMAIL>
<PHOTO>
<TYPE>image/jpeg</TYPE>
<BINVAL>/9j/4AAQSkZJRg…==</BINVAL>
</PHOTO>
<TEL>
<VOICE/>
<WORK/>
<NUMBER>123</NUMBER>
</TEL>
<N>
<FAMILY>Иванов</FAMILY>
<GIVEN>Иван</GIVEN>
<MIDDLE>Иванович</MIDDLE>
</N>
<ORG>
<ORGUNIT>Подразделение</ORGUNIT>
</ORG>
<ADR>
<LOCALITY>city</LOCALITY>
</ADR>
</vCard>
</iq>
Сталкивался ли кто-то с такой проблемой и как заборол?