Module: Trackguard::RackAttack
- Defined in:
- lib/trackguard/rack_attack.rb
Class Method Summary collapse
-
.configure ⇒ Object
rubocop:disable Metrics/MethodLength.
Class Method Details
.configure ⇒ Object
rubocop:disable Metrics/MethodLength
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/trackguard/rack_attack.rb', line 8 def self.configure adapter = Trackguard.adapter ::Rack::Attack.safelist("trackguard/allow local") do |req| [ "127.0.0.1", "::1" ].include?(req.ip) end ::Rack::Attack.safelist("trackguard/allow whitelisted ips") do |req| adapter.whitelisted_ip?(req.ip) end ::Rack::Attack.blocklist("trackguard/block known scanners") do |req| adapter.blocked_user_agent?(req.user_agent) end ::Rack::Attack.blocklist("trackguard/block known paths") do |req| adapter.blocked_path?(req.path) end ::Rack::Attack.blocklist("trackguard/flagged visitors") do |req| adapter.flagged_visitor?(req.ip) end ::Rack::Attack.throttle( "trackguard/requests by ip", limit: Trackguard.throttle_limit, period: Trackguard.throttle_period, &:ip ) subscribe_to_blocked_requests(adapter) end |