mirror of
https://github.com/processone/ejabberd.git
synced 2024-10-05 14:51:05 +02:00
Corrected mod_blocking hooks return value, activate "Blocked Contacts" privacy list after it is changed
This commit is contained in:
parent
39acf823ef
commit
5746c08f72
@ -64,7 +64,7 @@ process_iq_get(_, From, _To,
|
|||||||
sub_el = {xmlelement, "blocklist", _, _}},
|
sub_el = {xmlelement, "blocklist", _, _}},
|
||||||
_) ->
|
_) ->
|
||||||
#jid{luser = LUser, lserver = LServer} = From,
|
#jid{luser = LUser, lserver = LServer} = From,
|
||||||
process_blocklist_get(LUser, LServer);
|
{stop, process_blocklist_get(LUser, LServer)};
|
||||||
|
|
||||||
process_iq_get(Acc, _, _, _, _) ->
|
process_iq_get(Acc, _, _, _, _) ->
|
||||||
Acc.
|
Acc.
|
||||||
@ -72,6 +72,7 @@ process_iq_get(Acc, _, _, _, _) ->
|
|||||||
process_iq_set(_, From, _To, #iq{xmlns = ?NS_BLOCKING,
|
process_iq_set(_, From, _To, #iq{xmlns = ?NS_BLOCKING,
|
||||||
sub_el = {xmlelement, SubElName, _, SubEls}}) ->
|
sub_el = {xmlelement, SubElName, _, SubEls}}) ->
|
||||||
#jid{luser = LUser, lserver = LServer} = From,
|
#jid{luser = LUser, lserver = LServer} = From,
|
||||||
|
Res =
|
||||||
case {SubElName, xml:remove_cdata(SubEls)} of
|
case {SubElName, xml:remove_cdata(SubEls)} of
|
||||||
{"block", []} ->
|
{"block", []} ->
|
||||||
{error, ?ERR_BAD_REQUEST};
|
{error, ?ERR_BAD_REQUEST};
|
||||||
@ -85,7 +86,8 @@ process_iq_set(_, From, _To, #iq{xmlns = ?NS_BLOCKING,
|
|||||||
process_blocklist_unblock(LUser, LServer, JIDs);
|
process_blocklist_unblock(LUser, LServer, JIDs);
|
||||||
_ ->
|
_ ->
|
||||||
{error, ?ERR_BAD_REQUEST}
|
{error, ?ERR_BAD_REQUEST}
|
||||||
end;
|
end,
|
||||||
|
{stop, Res};
|
||||||
|
|
||||||
process_iq_set(Acc, _, _, _) ->
|
process_iq_set(Acc, _, _, _) ->
|
||||||
Acc.
|
Acc.
|
||||||
@ -196,9 +198,10 @@ process_blocklist_block(LUser, LServer, JIDs) ->
|
|||||||
{atomic, {error, _} = Error} ->
|
{atomic, {error, _} = Error} ->
|
||||||
Error;
|
Error;
|
||||||
{atomic, {ok, Default, List}} ->
|
{atomic, {ok, Default, List}} ->
|
||||||
|
UserList = make_userlist(Default, List),
|
||||||
broadcast_list_update(LUser, LServer, Default, List),
|
broadcast_list_update(LUser, LServer, Default, List),
|
||||||
broadcast_blocklist_event(LUser, LServer, {block, JIDs}),
|
broadcast_blocklist_event(LUser, LServer, {block, JIDs}),
|
||||||
{result, []};
|
{result, [], UserList};
|
||||||
_ ->
|
_ ->
|
||||||
{error, ?ERR_INTERNAL_SERVER_ERROR}
|
{error, ?ERR_INTERNAL_SERVER_ERROR}
|
||||||
end.
|
end.
|
||||||
@ -238,9 +241,10 @@ process_blocklist_unblock_all(LUser, LServer) ->
|
|||||||
{atomic, ok} ->
|
{atomic, ok} ->
|
||||||
{result, []};
|
{result, []};
|
||||||
{atomic, {ok, Default, List}} ->
|
{atomic, {ok, Default, List}} ->
|
||||||
broadcast_list_update(LUser, LServer, Default, List),
|
UserList = make_userlist(Default, List),
|
||||||
|
broadcast_list_update(LUser, LServer, Default, UserList),
|
||||||
broadcast_blocklist_event(LUser, LServer, unblock_all),
|
broadcast_blocklist_event(LUser, LServer, unblock_all),
|
||||||
{result, []};
|
{result, [], UserList};
|
||||||
_ ->
|
_ ->
|
||||||
{error, ?ERR_INTERNAL_SERVER_ERROR}
|
{error, ?ERR_INTERNAL_SERVER_ERROR}
|
||||||
end.
|
end.
|
||||||
@ -284,22 +288,24 @@ process_blocklist_unblock(LUser, LServer, JIDs) ->
|
|||||||
{atomic, ok} ->
|
{atomic, ok} ->
|
||||||
{result, []};
|
{result, []};
|
||||||
{atomic, {ok, Default, List}} ->
|
{atomic, {ok, Default, List}} ->
|
||||||
broadcast_list_update(LUser, LServer, Default, List),
|
UserList = make_userlist(Default, List),
|
||||||
|
broadcast_list_update(LUser, LServer, Default, UserList),
|
||||||
broadcast_blocklist_event(LUser, LServer, {unblock, JIDs}),
|
broadcast_blocklist_event(LUser, LServer, {unblock, JIDs}),
|
||||||
{result, []};
|
{result, [], UserList};
|
||||||
_ ->
|
_ ->
|
||||||
{error, ?ERR_INTERNAL_SERVER_ERROR}
|
{error, ?ERR_INTERNAL_SERVER_ERROR}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
broadcast_list_update(LUser, LServer, Name, List) ->
|
make_userlist(Name, List) ->
|
||||||
NeedDb = is_list_needdb(List),
|
NeedDb = is_list_needdb(List),
|
||||||
|
#userlist{name = Name, list = List, needdb = NeedDb}.
|
||||||
|
|
||||||
|
broadcast_list_update(LUser, LServer, Name, UserList) ->
|
||||||
ejabberd_router:route(
|
ejabberd_router:route(
|
||||||
jlib:make_jid(LUser, LServer, ""),
|
jlib:make_jid(LUser, LServer, ""),
|
||||||
jlib:make_jid(LUser, LServer, ""),
|
jlib:make_jid(LUser, LServer, ""),
|
||||||
{xmlelement, "broadcast", [],
|
{xmlelement, "broadcast", [],
|
||||||
[{privacy_list,
|
[{privacy_list, UserList, Name}]}).
|
||||||
#userlist{name = Name, list = List, needdb = NeedDb},
|
|
||||||
Name}]}).
|
|
||||||
|
|
||||||
broadcast_blocklist_event(LUser, LServer, Event) ->
|
broadcast_blocklist_event(LUser, LServer, Event) ->
|
||||||
JID = jlib:make_jid(LUser, LServer, ""),
|
JID = jlib:make_jid(LUser, LServer, ""),
|
||||||
|
Loading…
Reference in New Issue
Block a user