mirror of
https://github.com/processone/ejabberd.git
synced 2024-06-28 22:52:27 +02:00
* src/odbc/pg.sql: Updated
* src/mod_shared_roster.erl: Updated * src/ejabberd_sm.erl: Bugfix * src/mod_roster.erl: Bugfix * src/mod_roster_odbc.erl: Likewise SVN Revision: 570
This commit is contained in:
parent
42cdf80cd4
commit
c737ce1b8c
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2006-05-26 Alexey Shchepin <alexey@sevcom.net>
|
||||||
|
|
||||||
|
* src/odbc/pg.sql: Updated
|
||||||
|
|
||||||
|
* src/mod_shared_roster.erl: Updated
|
||||||
|
|
||||||
|
* src/ejabberd_sm.erl: Bugfix
|
||||||
|
|
||||||
|
* src/mod_roster.erl: Bugfix
|
||||||
|
* src/mod_roster_odbc.erl: Likewise
|
||||||
|
|
||||||
2006-05-23 Mickael Remond <mickael.remond@process-one.net>
|
2006-05-23 Mickael Remond <mickael.remond@process-one.net>
|
||||||
|
|
||||||
* src/mod_roster.erl: The subscribe request are now resend at login as
|
* src/mod_roster.erl: The subscribe request are now resend at login as
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
-module(ejabberd_sm).
|
-module(ejabberd_sm).
|
||||||
-author('alexey@sevcom.net').
|
-author('alexey@sevcom.net').
|
||||||
-vsn('$Revision$ ').
|
|
||||||
|
|
||||||
-behaviour(gen_server).
|
-behaviour(gen_server).
|
||||||
|
|
||||||
|
@ -306,8 +305,9 @@ do_route(From, To, Packet) ->
|
||||||
{Pass, Subsc} =
|
{Pass, Subsc} =
|
||||||
case xml:get_attr_s("type", Attrs) of
|
case xml:get_attr_s("type", Attrs) of
|
||||||
"subscribe" ->
|
"subscribe" ->
|
||||||
Reason = xml:get_tag_cdata(
|
Reason = xml:get_path_s(
|
||||||
xml:get_subtag(Packet, "status")),
|
Packet,
|
||||||
|
[{elem, "status"}, cdata]),
|
||||||
{ejabberd_hooks:run_fold(
|
{ejabberd_hooks:run_fold(
|
||||||
roster_in_subscription,
|
roster_in_subscription,
|
||||||
LServer,
|
LServer,
|
||||||
|
|
|
@ -417,7 +417,7 @@ process_subscription(Direction, User, Server, JID1, Type, Reason) ->
|
||||||
AskMessage = case NewState of
|
AskMessage = case NewState of
|
||||||
{_, both} -> Reason;
|
{_, both} -> Reason;
|
||||||
{_, in} -> Reason;
|
{_, in} -> Reason;
|
||||||
{_, _} -> []
|
_ -> ""
|
||||||
end,
|
end,
|
||||||
case NewState of
|
case NewState of
|
||||||
none ->
|
none ->
|
||||||
|
@ -641,37 +641,39 @@ process_item_attrs_ws(Item, []) ->
|
||||||
Item.
|
Item.
|
||||||
|
|
||||||
get_in_pending_subscriptions(Ls, User, Server) ->
|
get_in_pending_subscriptions(Ls, User, Server) ->
|
||||||
JID = jlib:make_jid(User, Server,""),
|
JID = jlib:make_jid(User, Server, ""),
|
||||||
case mnesia:dirty_index_read(roster, {User,Server}, #roster.us) of
|
US = {JID#jid.luser, JID#jid.lserver},
|
||||||
|
case mnesia:dirty_index_read(roster, US, #roster.us) of
|
||||||
Result when list(Result) ->
|
Result when list(Result) ->
|
||||||
Ls ++ lists:map(
|
Ls ++ lists:map(
|
||||||
fun(R) ->
|
fun(R) ->
|
||||||
Message = R#roster.askmessage,
|
Message = R#roster.askmessage,
|
||||||
Status = if is_binary(Message) ->
|
Status = if is_binary(Message) ->
|
||||||
binary_to_list(Message);
|
binary_to_list(Message);
|
||||||
true ->
|
true ->
|
||||||
[]
|
""
|
||||||
end,
|
end,
|
||||||
{xmlelement, "presence", [{"from", jlib:jid_to_string(R#roster.jid)},
|
{xmlelement, "presence",
|
||||||
{"to", jlib:jid_to_string(JID)},
|
[{"from", jlib:jid_to_string(R#roster.jid)},
|
||||||
{"type", "subscribe"}],
|
{"to", jlib:jid_to_string(JID)},
|
||||||
[{xmlelement, "status", [],
|
{"type", "subscribe"}],
|
||||||
[{xmlcdata, Status}]}]}
|
[{xmlelement, "status", [],
|
||||||
end,
|
[{xmlcdata, Status}]}]}
|
||||||
lists:filter(
|
end,
|
||||||
fun(R) ->
|
lists:filter(
|
||||||
case R#roster.ask of
|
fun(R) ->
|
||||||
in -> true;
|
case R#roster.ask of
|
||||||
both -> true;
|
in -> true;
|
||||||
_ -> false
|
both -> true;
|
||||||
end
|
_ -> false
|
||||||
end,
|
end
|
||||||
Result));
|
end,
|
||||||
_ -> []
|
Result));
|
||||||
|
_ ->
|
||||||
|
Ls
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
get_jid_info(_, User, Server, JID) ->
|
get_jid_info(_, User, Server, JID) ->
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
-module(mod_roster_odbc).
|
-module(mod_roster_odbc).
|
||||||
-author('alexey@sevcom.net').
|
-author('alexey@sevcom.net').
|
||||||
-vsn('$Revision$ ').
|
|
||||||
|
|
||||||
-behaviour(gen_mod).
|
-behaviour(gen_mod).
|
||||||
|
|
||||||
|
@ -126,10 +125,10 @@ get_user_roster(Acc, {LUser, LServer}) ->
|
||||||
case catch ejabberd_odbc:sql_query(
|
case catch ejabberd_odbc:sql_query(
|
||||||
LServer,
|
LServer,
|
||||||
["select username, jid, nick, subscription, ask, "
|
["select username, jid, nick, subscription, ask, "
|
||||||
"server, subscribe, type from rosterusers "
|
"askmessage, server, subscribe, type from rosterusers "
|
||||||
"where username='", Username, "'"]) of
|
"where username='", Username, "'"]) of
|
||||||
{selected, ["username", "jid", "nick", "subscription", "ask",
|
{selected, ["username", "jid", "nick", "subscription", "ask",
|
||||||
"server", "subscribe", "type"],
|
"askmessage", "server", "subscribe", "type"],
|
||||||
Items} when is_list(Items) ->
|
Items} when is_list(Items) ->
|
||||||
JIDGroups = case catch ejabberd_odbc:sql_query(
|
JIDGroups = case catch ejabberd_odbc:sql_query(
|
||||||
LServer,
|
LServer,
|
||||||
|
@ -216,11 +215,12 @@ process_item_set(From, To, {xmlelement, _Name, Attrs, Els}) ->
|
||||||
F = fun() ->
|
F = fun() ->
|
||||||
{selected,
|
{selected,
|
||||||
["username", "jid", "nick", "subscription",
|
["username", "jid", "nick", "subscription",
|
||||||
"ask", "server", "subscribe", "type"],
|
"ask", "askmessage", "server", "subscribe", "type"],
|
||||||
Res} =
|
Res} =
|
||||||
ejabberd_odbc:sql_query_t(
|
ejabberd_odbc:sql_query_t(
|
||||||
["select username, jid, nick, subscription, "
|
["select username, jid, nick, subscription, "
|
||||||
"ask, server, subscribe, type from rosterusers "
|
"ask, askmessage, server, subscribe, type "
|
||||||
|
"from rosterusers "
|
||||||
"where username='", Username, "' "
|
"where username='", Username, "' "
|
||||||
"and jid='", SJID, "'"]),
|
"and jid='", SJID, "'"]),
|
||||||
Item = case Res of
|
Item = case Res of
|
||||||
|
@ -410,10 +410,10 @@ get_subscription_lists(_, User, Server) ->
|
||||||
case catch ejabberd_odbc:sql_query(
|
case catch ejabberd_odbc:sql_query(
|
||||||
LServer,
|
LServer,
|
||||||
["select username, jid, nick, subscription, ask, "
|
["select username, jid, nick, subscription, ask, "
|
||||||
"server, subscribe, type from rosterusers "
|
"askmessage, server, subscribe, type from rosterusers "
|
||||||
"where username='", Username, "'"]) of
|
"where username='", Username, "'"]) of
|
||||||
{selected, ["username", "jid", "nick", "subscription", "ask",
|
{selected, ["username", "jid", "nick", "subscription", "ask",
|
||||||
"server", "subscribe", "type"],
|
"askmessage", "server", "subscribe", "type"],
|
||||||
Items} when is_list(Items) ->
|
Items} when is_list(Items) ->
|
||||||
fill_subscription_lists(LServer, Items, [], []);
|
fill_subscription_lists(LServer, Items, [], []);
|
||||||
_ ->
|
_ ->
|
||||||
|
@ -458,12 +458,13 @@ process_subscription(Direction, User, Server, JID1, Type, Reason) ->
|
||||||
Item =
|
Item =
|
||||||
case ejabberd_odbc:sql_query_t(
|
case ejabberd_odbc:sql_query_t(
|
||||||
["select username, jid, nick, subscription, ask, "
|
["select username, jid, nick, subscription, ask, "
|
||||||
"server, subscribe, type from rosterusers "
|
"askmessage, server, subscribe, type "
|
||||||
|
"from rosterusers "
|
||||||
"where username='", Username, "' "
|
"where username='", Username, "' "
|
||||||
"and jid='", SJID, "';"]) of
|
"and jid='", SJID, "';"]) of
|
||||||
{selected,
|
{selected,
|
||||||
["username", "jid", "nick", "subscription", "ask",
|
["username", "jid", "nick", "subscription", "ask",
|
||||||
"server", "subscribe", "type"],
|
"askmessage", "server", "subscribe", "type"],
|
||||||
[I]} ->
|
[I]} ->
|
||||||
R = raw_to_record(LServer, I),
|
R = raw_to_record(LServer, I),
|
||||||
Groups =
|
Groups =
|
||||||
|
@ -506,7 +507,7 @@ process_subscription(Direction, User, Server, JID1, Type, Reason) ->
|
||||||
AskMessage = case NewState of
|
AskMessage = case NewState of
|
||||||
{_, both} -> Reason;
|
{_, both} -> Reason;
|
||||||
{_, in} -> Reason;
|
{_, in} -> Reason;
|
||||||
{_, _} -> []
|
_ -> ""
|
||||||
end,
|
end,
|
||||||
case NewState of
|
case NewState of
|
||||||
none ->
|
none ->
|
||||||
|
@ -770,33 +771,45 @@ process_item_attrs_ws(Item, []) ->
|
||||||
|
|
||||||
|
|
||||||
get_in_pending_subscriptions(Ls, User, Server) ->
|
get_in_pending_subscriptions(Ls, User, Server) ->
|
||||||
JID = jlib:make_jid(User, Server,""),
|
JID = jlib:make_jid(User, Server, ""),
|
||||||
case mnesia:dirty_index_read(roster, {User,Server}, #roster.us) of
|
LUser = JID#jid.luser,
|
||||||
Result when list(Result) ->
|
LServer = JID#jid.lserver,
|
||||||
|
Username = ejabberd_odbc:escape(LUser),
|
||||||
|
case catch ejabberd_odbc:sql_query(
|
||||||
|
LServer,
|
||||||
|
["select username, jid, nick, subscription, ask, "
|
||||||
|
"askmessage, server, subscribe, type from rosterusers "
|
||||||
|
"where username='", Username, "'"]) of
|
||||||
|
{selected, ["username", "jid", "nick", "subscription", "ask",
|
||||||
|
"askmessage", "server", "subscribe", "type"],
|
||||||
|
Items} when is_list(Items) ->
|
||||||
Ls ++ lists:map(
|
Ls ++ lists:map(
|
||||||
fun(R) ->
|
fun(R) ->
|
||||||
Message = R#roster.askmessage,
|
Message = R#roster.askmessage,
|
||||||
Status = if is_binary(Message) ->
|
Status = if is_binary(Message) ->
|
||||||
binary_to_list(Message);
|
binary_to_list(Message);
|
||||||
true ->
|
true ->
|
||||||
[]
|
""
|
||||||
end,
|
end,
|
||||||
{xmlelement, "presence", [{"from", jlib:jid_to_string(R#roster.jid)},
|
{xmlelement, "presence",
|
||||||
{"to", jlib:jid_to_string(JID)},
|
[{"from", jlib:jid_to_string(R#roster.jid)},
|
||||||
{"type", "subscribe"}],
|
{"to", jlib:jid_to_string(JID)},
|
||||||
[{xmlelement, "status", [],
|
{"type", "subscribe"}],
|
||||||
[{xmlcdata, Status}]}]}
|
[{xmlelement, "status", [],
|
||||||
end,
|
[{xmlcdata, Status}]}]}
|
||||||
lists:filter(
|
end,
|
||||||
fun(R) ->
|
lists:flatmap(
|
||||||
case R#roster.ask of
|
fun(I) ->
|
||||||
in -> true;
|
R = raw_to_record(LServer, I),
|
||||||
both -> true;
|
case R#roster.ask of
|
||||||
_ -> false
|
in -> [R];
|
||||||
end
|
both -> [R];
|
||||||
end,
|
_ -> []
|
||||||
Result));
|
end
|
||||||
_ -> []
|
end,
|
||||||
|
Items));
|
||||||
|
_ ->
|
||||||
|
Ls
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
|
@ -869,7 +882,7 @@ get_jid_info(_, User, Server, JID) ->
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
raw_to_record(LServer, {User, SJID, Nick, SSubscription, SAsk,
|
raw_to_record(LServer, {User, SJID, Nick, SSubscription, SAsk, SAskMessage,
|
||||||
_SServer, _SSubscribe, _SType}) ->
|
_SServer, _SSubscribe, _SType}) ->
|
||||||
case jlib:string_to_jid(SJID) of
|
case jlib:string_to_jid(SJID) of
|
||||||
error ->
|
error ->
|
||||||
|
@ -895,7 +908,8 @@ raw_to_record(LServer, {User, SJID, Nick, SSubscription, SAsk,
|
||||||
jid = LJID,
|
jid = LJID,
|
||||||
name = Nick,
|
name = Nick,
|
||||||
subscription = Subscription,
|
subscription = Subscription,
|
||||||
ask = Ask}
|
ask = Ask,
|
||||||
|
askmessage = SAskMessage}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
record_to_string(#roster{us = {User, _Server},
|
record_to_string(#roster{us = {User, _Server},
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
-module(mod_shared_roster).
|
-module(mod_shared_roster).
|
||||||
-author('alexey@sevcom.net').
|
-author('alexey@sevcom.net').
|
||||||
-vsn('$Revision: 24 $ ').
|
|
||||||
|
|
||||||
-behaviour(gen_mod).
|
-behaviour(gen_mod).
|
||||||
|
|
||||||
|
@ -16,7 +15,7 @@
|
||||||
get_user_roster/2,
|
get_user_roster/2,
|
||||||
get_subscription_lists/3,
|
get_subscription_lists/3,
|
||||||
get_jid_info/4,
|
get_jid_info/4,
|
||||||
in_subscription/5,
|
in_subscription/6,
|
||||||
out_subscription/4,
|
out_subscription/4,
|
||||||
list_groups/1,
|
list_groups/1,
|
||||||
create_group/2,
|
create_group/2,
|
||||||
|
@ -148,7 +147,7 @@ get_jid_info({Subscription, Groups}, User, Server, JID) ->
|
||||||
{Subscription, Groups}
|
{Subscription, Groups}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
in_subscription(Acc, User, Server, JID, Type) ->
|
in_subscription(Acc, User, Server, JID, Type, _Reason) ->
|
||||||
process_subscription(in, User, Server, JID, Type, Acc).
|
process_subscription(in, User, Server, JID, Type, Acc).
|
||||||
|
|
||||||
out_subscription(User, Server, JID, Type) ->
|
out_subscription(User, Server, JID, Type) ->
|
||||||
|
|
|
@ -18,7 +18,7 @@ CREATE TABLE rosterusers (
|
||||||
nick text,
|
nick text,
|
||||||
subscription character(1) NOT NULL,
|
subscription character(1) NOT NULL,
|
||||||
ask character(1) NOT NULL,
|
ask character(1) NOT NULL,
|
||||||
askmessage text,
|
askmessage text NOT NULL,
|
||||||
server character(1) NOT NULL,
|
server character(1) NOT NULL,
|
||||||
subscribe text,
|
subscribe text,
|
||||||
"type" text
|
"type" text
|
||||||
|
@ -99,4 +99,6 @@ CREATE INDEX i_vcard_search_lorgunit ON vcard_search(lorgunit);
|
||||||
-- ALTER TABLE spool ALTER COLUMN seq SET NOT NULL;
|
-- ALTER TABLE spool ALTER COLUMN seq SET NOT NULL;
|
||||||
|
|
||||||
--- To update from 1.x:
|
--- To update from 1.x:
|
||||||
-- ALTER TABLE rosterusers ADD COLUMN askmessage text AFTER ask;
|
-- ALTER TABLE rosterusers ADD COLUMN askmessage text;
|
||||||
|
-- UPDATE rosterusers SET askmessage = '';
|
||||||
|
-- ALTER TABLE rosterusers ALTER COLUMN askmessage SET NOT NULL;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user