class Rack::Attack::Fail2Ban
Public Class Methods
banned?(discriminator)
click to toggle source
# File lib/rack/attack/fail2ban.rb, line 25 def banned?(discriminator) cache.read("#{key_prefix}:ban:#{discriminator}") ? true : false end
filter(discriminator, options) { || ... }
click to toggle source
# File lib/rack/attack/fail2ban.rb, line 5 def filter(discriminator, options) 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 banned?(discriminator) # Return true for blacklist true elsif yield fail!(discriminator, bantime, findtime, maxretry) end end
reset(discriminator, options)
click to toggle source
# File lib/rack/attack/fail2ban.rb, line 18 def reset(discriminator, options) findtime = options[:findtime] or raise ArgumentError, "Must pass findtime option" cache.reset_count("#{key_prefix}:count:#{discriminator}", findtime) # Clear ban flag just in case it's there cache.delete("#{key_prefix}:ban:#{discriminator}") end
Protected Class Methods
fail!(discriminator, bantime, findtime, maxretry)
click to toggle source
# File lib/rack/attack/fail2ban.rb, line 34 def fail!(discriminator, bantime, findtime, maxretry) count = cache.count("#{key_prefix}:count:#{discriminator}", findtime) if count >= maxretry ban!(discriminator, bantime) end true end
key_prefix()
click to toggle source
# File lib/rack/attack/fail2ban.rb, line 30 def key_prefix 'fail2ban' end
Private Class Methods
ban!(discriminator, bantime)
click to toggle source
# File lib/rack/attack/fail2ban.rb, line 45 def ban!(discriminator, bantime) cache.write("#{key_prefix}:ban:#{discriminator}", 1, bantime) end
cache()
click to toggle source
# File lib/rack/attack/fail2ban.rb, line 49 def cache Rack::Attack.cache end