Ejaberd проблемы с обращением к LDAP (возможно проблемы с кодировкой)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Ejaberd проблемы с обращением к LDAP

Сообщение TonnyBennet »

Здравствуйте.

Ejabberd развёрнут под Ubuntu Server. Ldap - AD Win2008Srv. Авторизация работает. Не могу разобраться с mod_shared_roster_ldap.

В AD есть группы jabber-it, jabber-sales, jabber-marketing и т.д. в которые добавлены пользователи. У групп есть кириллическое описание (поле description) aka название одела: IT отдел, Отдел продаж, Отдел маркетинга. Я хочу сделать общий список контактов, в который вывести все названия отделов на русском и в них всех сотрудников отделов (членов соответствующих групп). Пользователи разложены по различным OU в соответствии с отделами и географической принадлежностью.

По примеру Deep DIT http://ejabberd-msrl.alioth.debian.org/doc...srl.html#htoc18 я построил вот такой конфиг:


Код:

{mod_roster, []}, {mod_shared_roster_ldap, [ {ldap_servers, ["192.168.0.14"]}, {ldap_base, "dc=profit,dc=local"}, {ldap_rfilter, "(&(objectClass=group)(cn=jabber-*))"}, {ldap_filter, ""}, {ldap_gfilter, "(&(objectClass=group)(cn=jabber-*)(cn=%g))"}, {ldap_groupdesc, "description"}, {ldap_memberattr, "member"}, {ldap_ufilter, "(&(objectClass=user)(cn=%u))"}, {ldap_userdesc, "displayName"} ]},



Ростер не строится, но после включения mod_shared_roster_ldap появилась группа "Общие".

В логах ошибки:

Код:

=ERROR REPORT==== 2014-09-29 13:05:56 === E(<0.360.0>:eldap_utils:166) : failed to parse LDAP filter: ** Filter: [] ** Reason: {error,["syntax error before: ",[]]}


Она уходит если убрать {ldap_filter, ""}.


В ответах от Ldap-сервера есть невонятные вещи, вот к примеру запрос пользователей группы jabber-1c:

Код:

=INFO REPORT==== 2014-09-29 13:05:59 === D(<0.365.0>:eldap:696) : {searchRequest, {'SearchRequest',"dc=profit,dc=local",wholeSubtree, neverDerefAliases,0,5,false, {'and', [{equalityMatch, {'AttributeValueAssertion',"objectClass", "group"}}, {substrings, {'SubstringFilter',"cn", {'SubstringFilter_substrings', [{initial,"jabber-"}]}}}, {equalityMatch, {'AttributeValueAssertion',"cn","jabber-1c"}}]}, ["cn","description","member"]}} =INFO REPORT==== 2014-09-29 13:05:59 === D(<0.365.0>:eldap:767) : {searchResEntry, {'SearchResultEntry', "CN=jabber-1c,OU=Jabber,OU=Groups,DC=profit,DC=local", [{'PartialAttributeList_SEQOF',"cn", ["jabber-1c"]}, {'PartialAttributeList_SEQOF', "description", [[49,208,161,32,208,191,209,128,208,190, 208,179,209,128,208,176,208,188,208, 188,208,184,209,129,209,130,209,139]]}, {'PartialAttributeList_SEQOF',"member", [[67,78,61,208,149,208,178,208,179,208, 181,208,189,208,184,208,185,32,208, 162,208,186,208,176,209,135,44,79,85, 61,49,67,44,79,85,61,80,114,111,102, 105,116,85,115,101,114,115,44,68,67, 61,112,114,111,102,105,116,44,68,67, 61,108,111,99,97,108]]}]}}


Если вместо description запросить другое поле, в латинице - оно придёт в читабельном виде.

Также в группах, в которых много пользователей массив

Код:

[67,78,61,208,149,208,178,208,179,208, 181,208,189,208,184,208,185,32,208, 162,208,186,208,176,209,135,44,79,85, 61,49,67,44,79,85,61,80,114,111,102, 105,116,85,115,101,114,115,44,68,67, 61,112,114,111,102,105,116,44,68,67, 61,108,111,99,97,108]

повторяется по колличеству пользователей.


Мне кажется что проблема или в кодировке или в самом модуле. Ни разу не отрицаю что я и сам мог накосячить.

Подскажите пожалуйста в чём может быть проблема.
Спасибо сказали:
TonnyBennet
Сообщения: 230
ОС: Ubuntu Server 9.10

Re: Ejaberd проблемы с обращением к LDAP

Сообщение TonnyBennet »

Перечитал горы статей, мануалов и тому подобного. Модулей mod_shared_roster_ldap было несколько версий и как от версии к версии появлялся новый функционал. Как понять какя версия у меня я не могу. Заработал конфиг, с немного не той логикой на которую я рассчитывал, а именно. Сначала выбираются все пользователи, затем в обекте пользователей определяется поле по которому будут строится группы. Я выбрал поле отдел (department). Группы ростера строятся по отделам, в отделах сотрудники. В AD всем сотрудникам, которые должны попасть в какую-то определённую группу нужно указать одинаковый отдел.

Изображение

Мой конфиг:

Код:

{mod_roster, []}, {mod_shared_roster_ldap, [ {ldap_servers, ["192.168.0.14"]}, {ldap_base, "OU=ProfitUsers,DC=profit,DC=local"}, {ldap_rfilter, "(&(objectClass=user)(cn=*))"}, {ldap_groupattr, "department"}, {ldap_groupdesc, "department"}, {ldap_memberattr, "sAMAccountName"}, {ldap_userdesc, "cn"} ]},

Спасибо сказали:
Аватара пользователя
Disova
Сообщения: 59
ОС: Debian, CentOS

Re: Ejaberd проблемы с обращением к LDAP

Сообщение Disova »

Сори за оффтоп, но что за клиент?
ride it you way
Спасибо сказали: