Разрешить 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.