summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPetr Gotthard <petr.gotthard@honeywell.com>2015-04-15 21:07:22 -0700
committerPetr Gotthard <petr.gotthard@honeywell.com>2015-04-15 21:07:22 -0700
commit76dacb2051e637526dccc4c0407cf42a8a40c5b4 (patch)
treec6ea8ed6c6d1f23f3d4fe378ec9a8bdd0f466079 /src
parente0ae7d1867092267a99c1e1a2fac16d7dce98dde (diff)
downloadrabbitmq-server-git-76dacb2051e637526dccc4c0407cf42a8a40c5b4.tar.gz
Implement authz_socket_info structure passed to authorization plugins.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_access_control.erl2
-rw-r--r--src/rabbit_direct.erl8
2 files changed, 8 insertions, 2 deletions
diff --git a/src/rabbit_access_control.erl b/src/rabbit_access_control.erl
index 41c54b07a2..d954de0e09 100644
--- a/src/rabbit_access_control.erl
+++ b/src/rabbit_access_control.erl
@@ -41,7 +41,7 @@
rabbit_net:socket() | inet:ip_address())
-> 'ok' | 'not_allowed').
-spec(check_vhost_access/3 ::
- (rabbit_types:user(), rabbit_types:vhost(), rabbit_net:socket())
+ (rabbit_types:user(), rabbit_types:vhost(), rabbit_net:socket() | authz_socket_info())
-> 'ok' | rabbit_types:channel_exit()).
-spec(check_resource_access/3 ::
(rabbit_types:user(), rabbit_types:r(atom()), permission_atom())
diff --git a/src/rabbit_direct.erl b/src/rabbit_direct.erl
index 11233e7eb8..9c9f31d4b5 100644
--- a/src/rabbit_direct.erl
+++ b/src/rabbit_direct.erl
@@ -102,8 +102,14 @@ notify_auth_result(Username, AuthResult, ExtraProps) ->
ExtraProps,
rabbit_event:notify(AuthResult, [P || {_, V} = P <- EventProps, V =/= '']).
+authz_socket_info_direct(Infos) ->
+ #authz_socket_info{sockname={proplists:get_value(host, Infos),
+ proplists:get_value(port, Infos)},
+ peername={proplists:get_value(peer_host, Infos),
+ proplists:get_value(peer_port, Infos)}}.
+
connect1(User, VHost, Protocol, Pid, Infos) ->
- try rabbit_access_control:check_vhost_access(User, VHost, undefined) of
+ try rabbit_access_control:check_vhost_access(User, VHost, authz_socket_info_direct(Infos)) of
ok -> ok = pg_local:join(rabbit_direct, Pid),
rabbit_event:notify(connection_created, Infos),
{ok, {User, rabbit_reader:server_properties(Protocol)}}