Module: Clickwrap::TrustedProxyConfiguration
- Defined in:
- lib/clickwrap/trusted_proxy_configuration.rb
Overview
Produces a stable digest from the effective trusted-proxy rules themselves. A sentence such as "Cloudflare proxies" is not configuration evidence; the normalized address ranges and regular expressions are.
Constant Summary collapse
- SCHEMA =
"clickwrap.trusted-proxy-configuration.v1"
Class Method Summary collapse
- .digest_for(trusted_proxies, source: "host_configuration") ⇒ Object
- .digest_for_rails_application(application) ⇒ Object
Class Method Details
.digest_for(trusted_proxies, source: "host_configuration") ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/clickwrap/trusted_proxy_configuration.rb', line 13 def digest_for(trusted_proxies, source: "host_configuration") entries = collection(trusted_proxies).map { |entry| normalize(entry) } entries.sort_by! { |entry| CanonicalJson.generate(entry) } payload = { "schema" => SCHEMA, "source" => source.to_s, "entries" => entries } Digest.digest_canonical(payload) end |
.digest_for_rails_application(application) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/clickwrap/trusted_proxy_configuration.rb', line 25 def digest_for_rails_application(application) configured = application.config.action_dispatch.trusted_proxies if configured.nil? require "action_dispatch/middleware/remote_ip" configured = ActionDispatch::RemoteIp::TRUSTED_PROXIES source = "rails_default_trusted_proxies" else source = "rails_application_config_action_dispatch_trusted_proxies" end digest_for(configured, source: source) end |