0

ejabberd-2.1.2 サーバーを使用しています。新しい名前空間を既存の ejabberd サーバーに追加するにはどうすればよいですか。名前空間を追加したい ('http://jabber.org/protocol/rosterx') XEP-0144 Roster Item exchange。

ありがとう、サティ。

4

1 に答える 1

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, []}.
于 2011-02-07T05:14:05.543 に答える