Добавление пространства имен на сервер ejabberd

Я использую сервер ejabberd-2.1.2. Как я могу добавить новое пространство имен к существующему серверу ejabberd. Я хотел бы добавить пространство имен ('http://jabber.org/protocol/rosterx') XEP-0144 Обмен элементами реестра.

Спасибо, Сати.


person Sathibabu    schedule 21.01.2011    source источник
comment
Что ты пытаешься сделать? Поможет ли индивидуальная строфа X? Вы пытаетесь добавить пользовательскую обработку строф на стороне сервера?   -  person DashK    schedule 23.01.2011


Ответы (1)


Создайте модуль, назовите его что-то вроде mod_rosterx.erl. Добавьте его в свой файл ejabberd.cfg.

Содержимое этого файла должно быть примерно таким. Вам нужно будет написать свой код в process_local_iq функциях. Кроме того, это будет обрабатывать строфы IS, адресованные серверу, а не другим клиентам. Отрегулируйте по мере необходимости!

-module(mod_rosterx).
-behavior(gen_mod).

-export([start/2, stop/1, process_local_iq/3]).

-include("ejabberd/src/ejabberd.hrl").
-include("ejabberd/src/jlib.hrl").

-define(NS_ROSTERX, "http://jabber.org/protocol/rosterx").

start(Host, Opts) ->
    IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
    mod_disco:register_feature(Host, ?NS_ROSTERX),
    gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_ROSTERX, ?MODULE, process_local_iq, IQDisc).

stop(Host) ->
    gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_ROSTERX).


process_local_iq(From, To, {iq, ID, set, NS, Language, SubElement}) ->
    {iq, ID, error, NS, Language, []};
process_local_iq(_, _, {iq, ID, get, NS, Language, SubElement}) ->
    {iq, ID, error, NS, Language, []}.
person marcc    schedule 07.02.2011
comment
не могли бы вы подробнее рассказать о том, что это будет обрабатывать строфы IS, адресованные серверу, а не другим клиентам. Отрегулируйте по мере необходимости!... это очень поможет... Спасибо - person GJain; 01.03.2015