mirror of
https://github.com/samsonjs/rack-attack.git
synced 2026-03-29 10:05:51 +00:00
An alternate to fail2ban that allows clients until they hit the thresholds, then blocks them. Think of it like a throttle where you can block for more than one period.
24 lines
607 B
Ruby
24 lines
607 B
Ruby
module Rack
|
|
module Attack
|
|
class Allow2Ban < Fail2Ban
|
|
class << self
|
|
protected
|
|
def key_prefix
|
|
'allow2ban'
|
|
end
|
|
|
|
# everything the same here except we return only return true
|
|
# (blocking the request) if they have tripped the limit.
|
|
def fail!(discriminator, bantime, findtime, maxretry)
|
|
count = cache.count("#{key_prefix}:count:#{discriminator}", findtime)
|
|
if count >= maxretry
|
|
ban!(discriminator, bantime)
|
|
true
|
|
else
|
|
false
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|