Class: Rack::Dedos::Filters::Spamhaus
- Defined in:
- lib/rack/dedos/filters/spamhaus.rb
Constant Summary collapse
- QUERY_DOMAIN =
'zen.spamhaus.org'.freeze
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
#app, #cache, #details, #logger, #options
Instance Method Summary collapse
- #allowed?(request, ip) ⇒ Boolean
-
#initialize ⇒ Spamhaus
constructor
A new instance of Spamhaus.
- #name ⇒ Object
Methods inherited from Base
Constructor Details
#initialize ⇒ Spamhaus
Returns a new instance of Spamhaus.
16 17 18 19 20 21 |
# File 'lib/rack/dedos/filters/spamhaus.rb', line 16 def initialize(...) super @resolver = ConnectionPool.new(size: 5, timeout: 1) do Resolv::DNS.new.tap { _1.timeouts = [1, 2] } end end |
Instance Method Details
#allowed?(request, ip) ⇒ Boolean
23 24 25 26 27 28 29 30 |
# File 'lib/rack/dedos/filters/spamhaus.rb', line 23 def allowed?(request, ip) @resolver.with do |resolver| resolver.getresources(domain_for(ip), Resolv::DNS::Resource::IN::A).empty? end rescue => error logger.error("request from #{ip} allowed due to error: #{error.}") true end |
#name ⇒ Object
12 13 14 |
# File 'lib/rack/dedos/filters/spamhaus.rb', line 12 def name :spamhaus end |