Разрешить ejabberd_service (протокол компонентов Jabber) изменять реестр пользователя

Я пытаюсь использовать ejabberd_service (который является реализацией протокола компонентов Jabber, http://xmpp.org/extensions/xep-0114.html) для интеграции ejabberd с внешним приложением.

Вариант использования - запросить подписку и добавить элемент в реестр пользователя внешним приложением от имени пользователя. Я управляю как кластером ejabberd, так и внешним приложением, поэтому полагаю, что они оба доверяют друг другу.

Проблема заключается в том, что даже если разделы отправляются и принимаются правильно, никаких изменений в реестре пользователя не видно. Это верно, даже если я установил параметр service_check_from в ejabberd_service в значение false и добавил ejabberd_service в качестве менеджера в конфигурацию mod_roster.

Я также не вижу ошибок / предупреждений в журналах ejabberd.

Интересно, возможно ли, согласно протоколу XMPP, изменять реестр пользователя внешним доверенным приложением от имени пользователя и, если да, как настроить его в ejabberd?

2 ответа

Поддержка удаленного управления реестром включена в ejabberd начиная с версии 14.x

Протокол компонентов Jabber (XEP-0114) четко заявляет, что он не может действовать от имени пользователей. Он может отправлять только пакеты из своего собственного субдомена.

XEP-0356 Привилегированный объект может изменить это в будущем, предложив модель для доверенных компонентов с более широкими возможностями на подключенном XMPP-сервере. Это еще не реализовано в ejabberd как бы то ни было.

Я думаю, что ваш лучший вариант на данный момент - написать собственный плагин ejabberd или внедрить XEP-0356.

Другие вопросы по тегам