Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2005-07-26 07:04:26 +0400
committerAlexey Shchepin <alexey@process-one.net>2005-07-26 07:04:26 +0400
commit02d3151ee781471f12ace1c5f06f0dcdd8a669b0 (patch)
treef8e8cd21931a31fd8bb20ca11006cc616113280b /src/jd2ejd.erl
parentd520f35819ebaf9bd49375ee49e5a3598f67ffe9 (diff)
* src/jd2ejd.erl: Updated to work with ODBC
* src/mod_roster_odbc.erl: Updated * src/mod_offline_odbc.erl: Bugfix * src/mod_last_odbc.erl: Bugfix SVN Revision: 379
Diffstat (limited to 'src/jd2ejd.erl')
-rw-r--r--src/jd2ejd.erl43
1 files changed, 32 insertions, 11 deletions
diff --git a/src/jd2ejd.erl b/src/jd2ejd.erl
index 86e36a038..9e9fdcb5f 100644
--- a/src/jd2ejd.erl
+++ b/src/jd2ejd.erl
@@ -99,37 +99,55 @@ xdb_data(User, Server, {xmlcdata, _CData}) ->
ok;
xdb_data(User, Server, {xmlelement, _Name, Attrs, _Els} = El) ->
From = jlib:make_jid(User, Server, ""),
+ LServer = jlib:nameprep(Server),
case xml:get_attr_s("xmlns", Attrs) of
?NS_AUTH ->
Password = xml:get_tag_cdata(El),
ejabberd_auth:set_password(User, Server, Password),
ok;
?NS_ROSTER ->
- catch mod_roster:set_items(User, Server, El),
+ case lists:member(mod_roster_odbc,
+ gen_mod:loaded_modules(LServer)) of
+ true ->
+ catch mod_roster_odbc:set_items(User, Server, El);
+ false ->
+ catch mod_roster:set_items(User, Server, El)
+ end,
ok;
?NS_LAST ->
TimeStamp = xml:get_attr_s("last", Attrs),
Status = xml:get_tag_cdata(El),
- catch mod_last:store_last_info(User,
- Server,
- list_to_integer(TimeStamp),
- Status),
+ case lists:member(mod_last_odbc,
+ gen_mod:loaded_modules(LServer)) of
+ true ->
+ catch mod_last_odbc:store_last_info(
+ User,
+ Server,
+ list_to_integer(TimeStamp),
+ Status);
+ false ->
+ catch mod_last:store_last_info(
+ User,
+ Server,
+ list_to_integer(TimeStamp),
+ Status)
+ end,
ok;
?NS_VCARD ->
catch mod_vcard:process_sm_iq(
From,
- jlib:make_jid("", ?MYNAME, ""),
+ jlib:make_jid("", Server, ""),
#iq{type = set, xmlns = ?NS_VCARD, sub_el = El}),
ok;
"jabber:x:offline" ->
- process_offline(From, El),
+ process_offline(Server, From, El),
ok;
XMLNS ->
case xml:get_attr_s("j_private_flag", Attrs) of
"1" ->
catch mod_private:process_sm_iq(
From,
- jlib:make_jid("", ?MYNAME, ""),
+ jlib:make_jid("", Server, ""),
#iq{type = set, xmlns = ?NS_PRIVATE,
sub_el = {xmlelement, "query", [],
[jlib:remove_attr(
@@ -142,12 +160,13 @@ xdb_data(User, Server, {xmlelement, _Name, Attrs, _Els} = El) ->
end.
-process_offline(To, {xmlelement, _, _, Els}) ->
+process_offline(Server, To, {xmlelement, _, _, Els}) ->
+ LServer = jlib:nameprep(Server),
lists:foreach(fun({xmlelement, _, Attrs, _} = El) ->
FromS = xml:get_attr_s("from", Attrs),
From = case FromS of
"" ->
- jlib:make_jid("", ?MYNAME, "");
+ jlib:make_jid("", Server, "");
_ ->
jlib:string_to_jid(FromS)
end,
@@ -155,7 +174,9 @@ process_offline(To, {xmlelement, _, _, Els}) ->
error ->
ok;
_ ->
- catch mod_offline:store_packet(From, To, El)
+ ejabberd_hooks:run(offline_message_hook,
+ LServer,
+ [From, To, El])
end
end, Els).