我正在使用ejabberd-2.1.2服务器。如何向现有ejabberd服务器添加新名称空间。 我想添加名称空间('http://jabber.org/protocol/rosterx')XEP-0144名册项目交换。
谢谢, sathi。
答案 0 :(得分:0)
创建一个模块,将其命名为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, []}.