Class: Castle::IPs::Extract

Inherits:
Object
  • Object
show all
Defined in:
lib/castle/ips/extract.rb

Overview

used for extraction of ip from the request

Constant Summary collapse

%w[X-Forwarded-For].freeze

Instance Method Summary collapse

Constructor Details

#initialize(headers, config = nil) ⇒ Extract

Returns a new instance of Extract.

Parameters:



18
19
20
21
22
23
24
25
# File 'lib/castle/ips/extract.rb', line 18

def initialize(headers, config = nil)
  config ||= Castle.config
  @headers = headers
  @ip_headers = config.ip_headers.empty? ? DEFAULT : config.ip_headers
  @proxies = config.trusted_proxies + Castle::Configuration::TRUSTED_PROXIES
  @trust_proxy_chain = config.trust_proxy_chain
  @trusted_proxy_depth = config.trusted_proxy_depth
end

Instance Method Details

#callString

Order of headers:

.... list of headers defined by ip_headers
X-Forwarded-For
Remote-Addr

Returns:

  • (String)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/castle/ips/extract.rb', line 32

def call
  all_ips = []

  @ip_headers.each do |ip_header|
    ips = ips_from(ip_header)
    ip_value = remove_proxies(ips)

    return ip_value if ip_value

    all_ips.push(*ips)
  end

  # fallback to first listed ip
  all_ips.first
end