Browse Source

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.
Loïc Hoguin 12 years ago
parent
commit
6256429dc9
2 changed files with 0 additions and 25 deletions
  1. 0 1
      guide/req.md
  2. 0 24
      src/cowboy_req.erl

+ 0 - 1
guide/req.md

@@ -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

+ 0 - 24
src/cowboy_req.erl

@@ -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) ->