reorder logic to not repeatedly extend ban after more failed requests

This commit is contained in:
madlep 2013-06-14 12:49:53 +10:00
parent 3f1c98a868
commit 94a304b815

View file

@ -6,14 +6,15 @@ module Rack
bantime = options[:bantime] or raise ArgumentError, "Must pass bantime option"
findtime = options[:findtime] or raise ArgumentError, "Must pass findtime option"
maxretry = options[:maxretry] or raise ArgumentError, "Must pass maxretry option"
if yield
if banned?(discriminator)
# Return true for blacklist
true
elsif yield
fail!(name, discriminator, bantime, findtime, maxretry)
else
banned?(discriminator)
end
end
private
def fail!(name, discriminator, bantime, findtime, maxretry)
count = cache.count("#{name}:#{discriminator}", findtime)
@ -24,7 +25,7 @@ module Rack
# Return true for blacklist
true
end
def ban!(discriminator, bantime)
cache.write("fail2ban:#{discriminator}", 1, bantime)
end