Pull to refresh

ejabberd: Поиск по визитным карточкам

Instant Messaging *
В заметке ejabberd с авторизацией через LDAP я описал основные моменты по настройке сервера ejabberd. В заметке внешние программы аутентификации показал как можно использовать внешнюю программу, если не хватает функционала встроенных модулей. Теперь добавим поиск по визитным карточкам пользователей.


Подключение модулей


Для начала, коротко о подключении модулей. В конфигурации виртуального хоста (или в глобальной области) создаётся запись, следующего вида:
{modules, [
    {модуль1,  [опции_модуля1]},
    {модуль2,  [опции_модуля2]}
]},

В этой записи и надо перечислить нужные модули с параметрами.

Список модулей и параметров можно найти всё в том же Руководстве по ejabberd.

Сейчас в у меня модули сконфигурированы так:
{modules, [
  {mod_last, []},
  {mod_offline, []}
]}

Модуль mod_disco


Поддержка расширения XEP-0030: Service Discovery — поиск сервисов. Без этого модуля клиенты не смогут узнать, какие сервисы мы предлагаем:
{modules, [
  {mod_last, []},
  {mod_offline, []},
  {mod_disco, []}
]}

Модуль mod_vcard_ldap


Поддержка расширения XEP-0054: vCards — электронные визитные карточки. Модуль позволяет получать из LDAP информацию об имени, фамилии, e-mail и прочем (всё настраивается) для каждого пользователя. Отдельная прелесть его в том, что он работает даже если используется авторизация, отличная от ldap. Т. е. я могу проводить аутентификацию пользователей при помощи собственной программы, и тем не менее извлекать из LDAP полезную информацию.
{modules, [
  {mod_last, []},
  {mod_offline, []},
  {mod_disco, []},
  {mod_vcard_ldap, [
  % Здесь я буду писать опции
  ]}
]}

Если используется аутентификация через LDAP, то следующие опции можно не указывать. Их значения mod_vcard_ldap возьмёт из указанных ранее. Впрочем, если указать их явно, хуже не будет.
    {ldap_servers, ["ldap.company.local"]},
    {ldap_port, 389},
    {ldap_base, "ou=people,dc=company,dc=local"},
    {ldap_filter, "(gidNumber=100)"},
Описание этих опцией уже было в ejabberd с авторизацией через LDAP.

Ниже простой пример дальнейшей конфигурации. Использованы только самые основные свойства.
% Устанавливаем соответствия между полями vCard и атрибутами LDAP
{ldap_vcard_map, [
  {"NICKNAME", "%u", []},
  {"GIVEN", "%s", ["givenName"]},
  {"FAMILY", "%s", ["sn"]},
  {"FN", "%s %s", ["givenName", "sn"]},
  {"EMAIL", "%s", ["mail"]}
]},
% Задаём поля для поиска по карточкам и их соответствие атрибутам аккаунтов LDAP
{ldap_search_fields, [
  {"User", "%u"},
  {"Name", "givenName"},
  {"Family Name", "sn"},
  {"Email", "mail"}
]},
% Задаём какие поля vCard надо показывать в результатах поиска
{ldap_search_reported, [
  {"Full Name", "FN"},
  {"Nickname", "NICKNAME"}
]}

Перезапускаем ejabberd. А вот здесь можно проверить результат. Или воспользоваться клиентом, например Psi:

Service Discovery

И поиск по карточкам:

image
Tags:
Hubs:
Total votes 38: ↑25 and ↓13 +12
Views 5.9K
Comments Comments 4