UMGUM.COM 

Jabberd 2 + Public Roster ( Публикация общего "ростера" для новых пользователей XMPP сервера Jabberd 2. )

5 февраля 2011  (обновлено 31 января 2015)

Эта публикация отнесена в архив. Она неактуальна.

OS: Debian GNU/Linux Lenny.

Задача: реализовать функционал публикации произвольного (заранее подготовленного) списка аккаунтов для впервые подключившихся новых пользователей сервера Jabberd2 (XMPP).

Это особенно актуально для организаций с большим штатом пользователей. Удобно: пользователь первый раз в сети, а у него в "ростере" уже есть ссылки на администраторов, руководителей, приёмную, вспомогательный персонал.

Для XMPP сервера Jabberd2 требуемый функционал реализуется просто. Необходимо создать (или изменить существующий) файл шаблона по адресу "/etc/jabberd/templates/roster.xml" и активировать возможность его использования в конфигурационном файле "/etc/jabberd/sm.xml".


Приводим файл шаблона к следующему виду:

# cat /etc/jabberd/templates/roster.xml

<query xmlns='jabber:iq:roster'>
  <item name='Helpdesk One' jid='one.support@domain.com' subscription='none'><group>Support</group></item>
  <item name='Helpdesk Two' jid='two.support@domain.com' subscription='none'><group>Support</group></item>
  ....
  <item name='Helpdesk X' jid='x.support@domain.com' subscription='none'><group>Support</group></item>
  <item name='Head of Department One' jid='one.head@domain.com' subscription='none'><group>Management</group></item>
  <item name='Head of Department Two' jid='two.head@domain.com' subscription='none'><group>Management</group></item>
  ....
  <item name='Head of Department X' jid='x.head@domain.com' subscription='none'><group>Management</group></item>
  <item name='Service personnel One' jid='one.service@domain.com' subscription='none'><group>Service</group></item>
  <item name='Service personnel Two' jid='two.service@domain.com' subscription='none'><group>Service</group></item>
  ....
  <item name='Service personnel X' jid='x.service@domain.com' subscription='none'><group>Service</group></item>
</query>

Активируем функционал применения шаблона:

# cat /etc/jabberd/sm.xml

<sm>
....
  <user>
....
    <template>
      <publish>
....
        <override-names/>
      </publish>
      <roster>/etc/jabberd/templates/roster.xml</roster>
....
    </template>
....
  </user>
....
</sm>

Перезапускаем сервер:

# /etc/init.d/jabberd restart

Теперь, при инициализации первого, после создания аккаунта, сеанса, в "ростер" пользователя будут добавлены все те аккаунты, что описаны в выше приведённом шаблоне "/etc/jabberd/templates/roster.xml".

Странно, очень странно, что разработчики не пошли далее и не расширили функционал публикации шаблона до уровня загрузки для каждой сессии, а не только первой, во время инициализации аккаунта. Было бы очень удобно поддерживать список публичных аккаунтов редактированием одного файла шаблона. Представьте, как было бы просто актуализировать "ростеры" тысячи уже давно работающих сотрудников при увольнении или устройстве на работу одного из них. Может быть, я чего-то не понял в конфигурации, и Jabberd2 поддерживает такой функционал? Было бы замечательно, если мне кто-нибудь на такую возможность указал.

Значение переменной "subscription" я оставляю в неактивном виде для того, чтобы при создании каждого нового пользователя не вызывать волну "запросов на авторизацию" к фигурантам шаблона. Кому потребуется авторизация - запросят её сами.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )