2011-01-21 5 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