mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Revert "Revert "Merge pull request #3640 from indirect/remote_ip""
This reverts commit 8d1a2b3ecd, because I have fixed the issues this commit caused in the next commit.
This commit is contained in:
@@ -155,10 +155,9 @@ module ActionDispatch
|
||||
@ip ||= super
|
||||
end
|
||||
|
||||
# Originating IP address, usually set by the RemoteIp middleware.
|
||||
# Originating IP address from the RemoteIp middleware.
|
||||
def remote_ip
|
||||
# Coerce the remote_ip object into a string, because to_s could return nil
|
||||
@remote_ip ||= @env["action_dispatch.remote_ip"].to_s || ip
|
||||
@remote_ip ||= @env["action_dispatch.remote_ip"]
|
||||
end
|
||||
|
||||
# Returns the unique request id, which is based off either the X-Request-Id header that can
|
||||
|
||||
@@ -55,7 +55,10 @@ module ActionDispatch
|
||||
"HTTP_X_FORWARDED_FOR=#{@env['HTTP_X_FORWARDED_FOR'].inspect}"
|
||||
end
|
||||
|
||||
client_ip || forwarded_ips.last || remote_addrs.first
|
||||
not_proxy = client_ip || forwarded_ips.last || remote_addrs.first
|
||||
|
||||
# Return first REMOTE_ADDR if there are no other options
|
||||
not_proxy || ips_from('REMOTE_ADDR', :all).first
|
||||
end
|
||||
|
||||
def to_s
|
||||
@@ -66,9 +69,9 @@ module ActionDispatch
|
||||
|
||||
protected
|
||||
|
||||
def ips_from(header)
|
||||
def ips_from(header, allow_proxies = false)
|
||||
ips = @env[header] ? @env[header].strip.split(/[,\s]+/) : []
|
||||
ips.reject{|ip| ip =~ @middleware.proxies }
|
||||
allow_proxies ? ips : ips.reject{|ip| ip =~ @middleware.proxies }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user