2011-01-21 8 views
0

ejabberd-2.1.2サーバーを使用しています。既存のejabberdサーバーに新しい名前空間を追加するにはどうすればよいですか。 ネームスペース( 'http://jabber.org/protocol/rosterx')XEP-0144のロスターアイテム交換を追加したいと思います。ejabberdサーバーに名前空間を追加する

ありがとう、 sathi。

+0

何をしようとしていますか?カスタムXスタンザがこのトリックを行うでしょうか?サーバー側でカスタム・スタンザ処理を追加しようとしていますか? – DashK

答えて

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, []}. 
+0

あなたは「これはサーバーに宛てられたISスタンザを扱い、他のクライアントには送信されません。 – GJain

関連する問題