LINUX.ORG.RU
ФорумAdmin

ejabberd и mod_shared_roster_ldap без групп в LDAP

 ,


0

1

Проблема такая: Настроил я ejabberd с LDAP. Все работает, пользователи заходят, поиск работает, карточки формируются. Для полного счастья не хватает только ростера. Грабли в том, что в моем лдапе все пользователи находятся в одном OU и групп как таковых там нет. У всех пользователей есть атрибут ou, который совпадает у всех пользователей конкретного отдела. Я не могу вмешиваться в структуру лдапа, и как заставить mod_shared_roster_ldap я не могу понять.


Ответ на: комментарий от uspen

Сделал. Ростера нет, и вот такая фигня теперь пишется в лог.

=WARNING REPORT==== 2015-01-06 18:17:29 ===
W(<0.274.0>:cache_tab:473) : shrinking table:
** Table: shared_roster_ldap_group
** Processes Number: 1
** Max Size: 1000 items
** Shrink Size: 500 items
** Life Time: 300000000 microseconds
** Hits/Miss: 18160/32561
** Owner: <0.272.0>
** Cache Missed: true
** Instruction: you have to tune cacheing options if this message repeats too frequently

borism
() автор топика
Ответ на: комментарий от uspen

Ок. Ростер появился, но выкатил все значения ou что есть в каталоге, хотя нужно только то, которое совпадает с пользователем, и в каждой группе всего по одному пользователю, притом вместо uid стоит его ou, т.е. связаться с ним не получится. Хотя человекочитаемое cn на месте.

{mod_shared_roster_ldap,[
    {ldap_rfilter, "(objectClass=posixAccount)"},
    {ldap_groupdesc, "ou"},
    {ldap_auth_check, "off"} %% без этого неработало
  ]}

ЧЯДНТ?

borism
() автор топика
Ответ на: комментарий от uspen

Кажется я понял что я делал не так. Нужно передавать jid члена группы через ldap_memberattr. Проблема в том что в моем лдапе все uid вида пользователь@домен и нет поля в потом было бы только имя пользователя. Надо указать формат uid через ldap_memberattr_format. Что в моем случае будет «%u@домен».

Остался только один вопрос: Как показывать пользователю только свой отдел, а не все?

borism
() автор топика
Ответ на: комментарий от borism

Странные у тебя желания... А нафига вообще все тогда затевал...?

Не, такого я не делал, тут надо думать.

uspen ★★★★★
()
Ответ на: комментарий от uspen

Желание такое потому что 70+ отделов и 1300+ пользователей, и по большей части общаются внутри отдела. Надо выпилить VypressChat и сделать все централизованно.

Как я понял, за это отвечает ldap_gfilter. Если жестко задать

{ldap_gfilter, "(ou=мой_ou)"},
то показывает только мой отдел, но он будет показываться всем без исключения.

Значит нужно составить такой лдап фильтр, который бы выдавал всех пользователей, у которых атрибут ou совпадает с данным пользователем. Что-то типа (ou=(uid=%u)). Только я сомневаюсь что лдап вообще так умеет.

borism
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.