Настройка серверной истории в ejabberd2

ejabberd
Не так давно стал юзать на Андоиде jabber-клиент с поддержкой XEP-0136: Message Archiving (aka история на сервере). В ejabberd2 данный XEP реализуется при помощи модуля mod_archive. Казалось бы, подключить и радоваться, но, как обычно, всё не так просто [как могло бы быть]. Проблема в том, что последняя на текущий момент версия модуля реализует лишь 0.6 версию XEP'а, тогда как сам он имеет уже версию 1.2 (от 2010.06.21). И современные клиенты использовать функцию сохранения истории не могут, даже если модуль на сервере присутствует. Для того чтобы обеспечить совместимость надо отредактировать исходник модуля, чему и будет посвящен этот пост. О том, как получить исходники mod_archive, собрать и установить модуль, я здесь писать не буду, т.к. процесс ничем не отличается для всех модулей, так что читайте предыдущий пост про mod_webpresence.

Правка исходника

В новой версии XEP-0136 изменился namespace архива с http://xmpp.org/extensions/xep-0136.html#ns на urn:xmpp:archive, поэтому необходимо изменить соответствующие строки в mod_archive.erl так:
 -define(NS_ARCHIVE, 	"urn:xmpp:archive"). -define(NS_ARCHIVE_MANAGE, 	"urn:xmpp:archive:manage"). -define(NS_ARCHIVE_PREF, 	"urn:xmpp:archive:pref"). -define(NS_ARCHIVE_MANUAL, 	"urn:xmpp:archive:manual"). 

Файл ODBC-версии модуля mod_archive_odbc.erl редактируется аналогично. Некоторые клиенты могут поддерживать и оба варианта, а какие-то только старый, соответственно в них может перестать работать данная функция.

Конфиг

 {listen,		%% ТОЛЬКО для mod_archive_webview, подробнее ниже!!!  [ ...   {5280, ejabberd_http, [ 			 {request_handlers, 			 [ 			 ... 			 {["archive"], mod_archive_webview} 			 ]} 			]}  ]}.   {modules,  [   ...   {mod_archive,  [{save_default, true}]},   {mod_archive_webview, []}  ]}. 

mod_archive_webview

Дополнительный модуль для просмотра истории через браузер по адресу http://server.com:5280/archive/. Сам новый раздел в админке открывается, но дальше генерирует пустые страницы. Возможно это только у меня. Так что добавлять этот модуль или нет — решать вам.

Клиенты

Пока что мне известно лишь 2 jabber-клиента с поддержкой серверной истории:
  • EMess (4PDA) — для Android (ради чего всё это и делалось)
  • Vacuum-IM
Если знаете ещё, просьба написать в комментах!
Вот таким нехитрым образом можно иметь в смартфоне историю переписки с десктопа, даже если вы только что установили клиент первый раз, или, если десктопный клиент это всё не умеет, хотя бы историю отправленную/полученную смартом ранее.

Комментарии

Популярные сообщения из этого блога

WordPress-плагин: Embed Odnoklassniki Video (встраивание видео с Одноклассников)

Как отключить MTP в Android

Как восстановить подключение к сетевым дискам в Windows