0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-15 04:30:25 +00:00

Remove cowboy_req:peer_addr/1

This kind of function is highly dependent on the proxy used,
therefore parsing was added for x-forwarded-for instead and we
just let users write the function that works for them. The code
can be easily extracted if anyone was using the function.
This commit is contained in:
Loïc Hoguin 2013-04-11 14:42:57 +02:00
parent 67beb4d01d
commit 6256429dc9
2 changed files with 0 additions and 25 deletions

View file

@ -33,7 +33,6 @@ The following access functions are defined in `cowboy_req`:
* `method/1`: the request method (`<<"GET">>`, `<<"POST">>`...) * `method/1`: the request method (`<<"GET">>`, `<<"POST">>`...)
* `version/1`: the HTTP version (`{1,0}` or `{1,1}`) * `version/1`: the HTTP version (`{1,0}` or `{1,1}`)
* `peer/1`: the peer address and port number * `peer/1`: the peer address and port number
* `peer_addr/1`: the peer address guessed using the request headers
* `host/1`: the hostname requested * `host/1`: the hostname requested
* `host_info/1`: the result of the `[...]` match on the host * `host_info/1`: the result of the `[...]` match on the host
* `port/1`: the port number used for the connection * `port/1`: the port number used for the connection

View file

@ -46,7 +46,6 @@
-export([method/1]). -export([method/1]).
-export([version/1]). -export([version/1]).
-export([peer/1]). -export([peer/1]).
-export([peer_addr/1]).
-export([host/1]). -export([host/1]).
-export([host_info/1]). -export([host_info/1]).
-export([port/1]). -export([port/1]).
@ -230,29 +229,6 @@ version(Req) ->
peer(Req) -> peer(Req) ->
{Req#http_req.peer, Req}. {Req#http_req.peer, Req}.
%% @doc Returns the peer address calculated from headers.
-spec peer_addr(Req) -> {inet:ip_address(), Req} when Req::req().
peer_addr(Req = #http_req{}) ->
{RealIp, Req1} = header(<<"x-real-ip">>, Req),
{ForwardedForRaw, Req2} = header(<<"x-forwarded-for">>, Req1),
{{PeerIp, _PeerPort}, Req3} = peer(Req2),
ForwardedFor = case ForwardedForRaw of
undefined ->
undefined;
ForwardedForRaw ->
case re:run(ForwardedForRaw, "^(?<first_ip>[^\\,]+)",
[{capture, [first_ip], binary}]) of
{match, [FirstIp]} -> FirstIp;
_Any -> undefined
end
end,
{ok, PeerAddr} = if
is_binary(RealIp) -> inet_parse:address(binary_to_list(RealIp));
is_binary(ForwardedFor) -> inet_parse:address(binary_to_list(ForwardedFor));
true -> {ok, PeerIp}
end,
{PeerAddr, Req3}.
%% @doc Return the host binary string. %% @doc Return the host binary string.
-spec host(Req) -> {binary(), Req} when Req::req(). -spec host(Req) -> {binary(), Req} when Req::req().
host(Req) -> host(Req) ->