aboutsummaryrefslogtreecommitdiff
path: root/src/mod_privilege.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_privilege.erl')
-rw-r--r--src/mod_privilege.erl35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/mod_privilege.erl b/src/mod_privilege.erl
index c65119d4c..c320afd57 100644
--- a/src/mod_privilege.erl
+++ b/src/mod_privilege.erl
@@ -36,7 +36,7 @@
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
-export([component_connected/1, component_disconnected/2,
- roster_access/2, process_message/3,
+ roster_access/2, process_message/1,
process_presence_out/1, process_presence_in/1]).
-include("ejabberd.hrl").
@@ -80,10 +80,10 @@ component_disconnected(Host, _Reason) ->
gen_server:cast(Proc, {component_disconnected, Host})
end, ?MYHOSTS).
--spec process_message(jid(), jid(), stanza()) -> stop | ok.
-process_message(#jid{luser = <<"">>, lresource = <<"">>} = From,
- #jid{lresource = <<"">>} = To,
- #message{lang = Lang, type = T} = Msg) when T /= error ->
+-spec process_message(stanza()) -> stop | ok.
+process_message(#message{from = #jid{luser = <<"">>, lresource = <<"">>} = From,
+ to = #jid{lresource = <<"">>} = To,
+ lang = Lang, type = T} = Msg) when T /= error ->
Host = From#jid.lserver,
ServerHost = To#jid.lserver,
Permissions = get_permissions(ServerHost),
@@ -91,18 +91,18 @@ process_message(#jid{luser = <<"">>, lresource = <<"">>} = From,
{ok, Access} ->
case proplists:get_value(message, Access, none) of
outgoing ->
- forward_message(From, To, Msg);
+ forward_message(Msg);
none ->
Txt = <<"Insufficient privilege">>,
Err = xmpp:err_forbidden(Txt, Lang),
- ejabberd_router:route_error(To, From, Msg, Err)
+ ejabberd_router:route_error(Msg, Err)
end,
stop;
error ->
%% Component is disconnected
ok
end;
-process_message(_From, _To, _Stanza) ->
+process_message(_Stanza) ->
ok.
-spec roster_access(boolean(), iq()) -> boolean().
@@ -137,7 +137,7 @@ process_presence_out({#presence{
if Permission == roster; Permission == managed_entity ->
To = jid:make(Host),
ejabberd_router:route(
- From, To, xmpp:set_from_to(Pres, From, To));
+ xmpp:set_from_to(Pres, From, To));
true ->
ok
end
@@ -162,7 +162,7 @@ process_presence_in({#presence{
if Permission == both; Permission == get ->
To = jid:make(Host),
ejabberd_router:route(
- From, To, xmpp:set_from_to(Pres, From, To));
+ xmpp:set_from_to(Pres, From, To));
true ->
ok
end;
@@ -218,7 +218,7 @@ handle_cast({component_connected, Host}, State) ->
"message = ~s",
[Host, RosterPerm, PresencePerm, MessagePerm]),
Msg = #message{from = From, to = To, sub_els = [Priv]},
- ejabberd_router:route(From, To, Msg),
+ ejabberd_router:route(Msg),
Permissions = dict:store(Host, [{roster, RosterPerm},
{presence, PresencePerm},
{message, MessagePerm}],
@@ -267,7 +267,7 @@ get_permissions(ServerHost) ->
dict:new()
end.
-forward_message(From, To, Msg) ->
+forward_message(#message{to = To} = Msg) ->
ServerHost = To#jid.lserver,
Lang = xmpp:get_lang(Msg),
case xmpp:get_subtag(Msg, #privilege{}) of
@@ -276,27 +276,26 @@ forward_message(From, To, Msg) ->
#message{} = NewMsg ->
case NewMsg#message.from of
#jid{lresource = <<"">>, lserver = ServerHost} ->
- ejabberd_router:route(
- xmpp:get_from(NewMsg), xmpp:get_to(NewMsg), NewMsg);
+ ejabberd_router:route(NewMsg);
_ ->
Lang = xmpp:get_lang(Msg),
Txt = <<"Invalid 'from' attribute in forwarded message">>,
Err = xmpp:err_forbidden(Txt, Lang),
- ejabberd_router:route_error(To, From, Msg, Err)
+ ejabberd_router:route_error(Msg, Err)
end;
_ ->
Txt = <<"Message not found in forwarded payload">>,
Err = xmpp:err_bad_request(Txt, Lang),
- ejabberd_router:route_error(To, From, Msg, Err)
+ ejabberd_router:route_error(Msg, Err)
catch _:{xmpp_codec, Why} ->
Txt = xmpp:format_error(Why),
Err = xmpp:err_bad_request(Txt, Lang),
- ejabberd_router:route_error(To, From, Msg, Err)
+ ejabberd_router:route_error(Msg, Err)
end;
_ ->
Txt = <<"Invalid <forwarded/> element">>,
Err = xmpp:err_bad_request(Txt, Lang),
- ejabberd_router:route_error(To, From, Msg, Err)
+ ejabberd_router:route_error(Msg, Err)
end.
get_roster_permission(ServerHost, Host) ->