From 83191198a15690e3caed559f1dacf69461d4f761 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Sun, 4 Sep 2005 01:58:47 +0000 Subject: * src/mod_disco.erl: Functions register_sm_feature and register_sm_node replaced with hooks (thanks to Sergei Golovan) * src/mod_vcard.erl: * src/mod_vcard_ldap.erl: * src/mod_disco.erl: Now mod_disco doesn't depend on mod_configure (thanks to Sergei Golovan) * src/mod_configure.erl: Likewise SVN Revision: 408 --- src/mod_vcard_ldap.erl | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'src/mod_vcard_ldap.erl') diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl index c2bbeb298..c4c7bbd78 100644 --- a/src/mod_vcard_ldap.erl +++ b/src/mod_vcard_ldap.erl @@ -13,6 +13,7 @@ -behaviour(gen_mod). -export([start/2, init/3, stop/1, + get_sm_features/5, process_local_iq/3, process_sm_iq/3, remove_user/1]). @@ -29,6 +30,7 @@ start(Host, Opts) -> ?MODULE, process_local_iq, IQDisc), gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_VCARD, ?MODULE, process_sm_iq, IQDisc), + ejabberd_hooks:add(disco_sm_features, Host, ?MODULE, get_sm_features, 50), LDAPServers = ejabberd_config:get_local_option({ldap_servers, Host}), RootDN = ejabberd_config:get_local_option({ldap_rootdn, Host}), Password = ejabberd_config:get_local_option({ldap_password, Host}), @@ -67,10 +69,26 @@ loop(Host, ServerHost) -> stop(Host) -> gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_VCARD), gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_VCARD), + ejabberd_hooks:delete(disco_sm_features, Host, ?MODULE, get_sm_features, 50), Proc = gen_mod:get_module_proc(Host, ?PROCNAME), Proc ! stop, {wait, Proc}. +get_sm_features({error, _Error} = Acc, _From, _To, _Node, _Lang) -> + Acc; +get_sm_features(Acc, _From, _To, Node, _Lang) -> + case Node of + [] -> + case Acc of + {result, Features} -> + {result, [?NS_VCARD | Features]}; + empty -> + {result, [?NS_VCARD]} + end; + _ -> + Acc + end. + process_local_iq(_From, _To, #iq{type = Type, lang = Lang, sub_el = SubEl} = IQ) -> case Type of set -> @@ -180,16 +198,6 @@ ldap_attributes_to_vcard(Attributes,From,To) -> {xmlelement,"ORG",[],FOElts}]) }]. -is_self_request(From,To) -> - #jid{luser = RUser, lserver = RServer } = From, - #jid{luser = LUser} = To, - case RServer == ?MYNAME of - true -> - LUser == RUser; - _ -> - false - end. - process_sm_iq(From, To, #iq{type = Type, sub_el = SubEl} = IQ) -> case Type of set -> -- cgit v1.2.3