Sha256: b106567919abffe78a6359f0c164d5e326e73e012aa9e5bfe448234c9bc73a6b
Contents?: true
Size: 852 Bytes
Versions: 1
Compression:
Stored size: 852 Bytes
Contents
# frozen_string_literal: true module CloudflareRails # patch rack::request::helpers to use our cloudflare ips - this way request.ip is # correct inside of rack and rails module CheckTrustedProxies def cloudflare_ip?(ip) Importer.cloudflare_ips.any? do |proxy| proxy === ip rescue IPAddr::InvalidAddressError end end def trusted_proxy?(ip) cloudflare_ip?(ip) || super end def cloudflare? remote_addresses = split_header(get_header('REMOTE_ADDR')) forwarded_for = self.forwarded_for || [] # Select only the trusted prefix of REMOTE_ADDR + X_HTTP_FORWARDED_FOR trusted_proxies = (remote_addresses + forwarded_for.reverse).take_while do |ip| trusted_proxy?(ip) end trusted_proxies.any? do |ip| cloudflare_ip?(ip) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cloudflare-rails-6.2.0 | lib/cloudflare_rails/check_trusted_proxies.rb |