Class: Castle::Extractors::IP

Inherits:
Object
  • Object
show all
Defined in:
lib/castle/extractors/ip.rb

Overview

used for extraction of ip from the request

Instance Method Summary collapse

Constructor Details

#initialize(headers) ⇒ IP

Returns a new instance of IP.

Parameters:

  • headers (Hash)


13
14
15
16
17
# File 'lib/castle/extractors/ip.rb', line 13

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

Instance Method Details

#callString

Order of headers:

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

Returns:

  • (String)


24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/castle/extractors/ip.rb', line 24

def call
  all_ips = []

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

    all_ips.push(*ips)
  end

  # fallback to first whatever ip
  all_ips.first
end