Sha256: fa17eaab1237e4e583dda1bec6cc7ab5534093bc8045404859652fb5321e9b1f
Contents?: true
Size: 977 Bytes
Versions: 21
Compression:
Stored size: 977 Bytes
Contents
# frozen_string_literal: true # require "rack-attack" module Rack class Attack class Request < ::Rack::Request def remote_ip # Cloudflare stores remote IP in CF_CONNECTING_IP header @_remote_ip ||= (env["HTTP_CF_CONNECTING_IP"] || env["action_dispatch.remote_ip"] || ip).to_s end end end end module NeetoCommonsBackend module Initializers class << self def rack_attack # IP Blacklist - comma separated blocked_ips = ENV["RACK_ATTACK_BLOCKED_IPS"].to_s.split(",") blocked_ips.each do |ip| Rack::Attack.blocklist_ip(ip) end if ENV["ENABLE_RACK_ATTACK"] == "true" (3..5).each do |level| Rack::Attack.throttle( "req/ip/#{level}", limit: (30 * (2**level)), period: (0.9 * (8**level)).to_i.seconds, &:remote_ip) end end end end end end
Version data entries
21 entries across 21 versions & 1 rubygems