
Не так давно стал юзать на Андроиде 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 так:
40 41 42 43 44 45 46 47 | -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/SQL-версий модуля mod_archive_odbc.erl и mod_archive_sql.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-клиента с поддержкой серверной истории:
Если знаете ещё, просьба написать в комментах!
Вот таким нехитрым образом можно получить в смартфоне историю переписки с десктопа, даже если вы только что установили клиент первый раз, или, если десктопный клиент это всё не умеет, хотя бы историю отправленную/полученную смартом ранее.






Последние комментарии