aboutsummaryrefslogtreecommitdiff
path: root/src/mod_vcard_ldap.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2005-09-04 01:58:47 +0000
committerAlexey Shchepin <alexey@process-one.net>2005-09-04 01:58:47 +0000
commit83191198a15690e3caed559f1dacf69461d4f761 (patch)
treee18e3ebfe85113af648ba6f16198c546b5db7af7 /src/mod_vcard_ldap.erl
parent* src/ejd2odbc.erl: Converter from mnesia to ODBC (diff)
* 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
Diffstat (limited to 'src/mod_vcard_ldap.erl')
-rw-r--r--src/mod_vcard_ldap.erl28
1 files changed, 18 insertions, 10 deletions
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 ->