class Checker
Attributes
ip[RW]
Public Class Methods
new(to_check)
click to toggle source
# File lib/checker.rb, line 19 def initialize(to_check) @ip = resolve_to_ip(to_check) end
Public Instance Methods
check() { |{ rbl: rbl_domain, ttl: ttl, result: rbl_response_code, message: rbl_txt_message }| ... }
click to toggle source
# File lib/checker.rb, line 36 def check(&blk) rbls.each do |line| rbl_domain = line.strip name = name_to_lookup rbl_domain answer = resolver.query(name).answer if answer.length > 0 rbl_response_code = answer.first.address text = resolver.query(name, Net::DNS::TXT).answer rbl_txt_message = text.first.nil? ? "" : text.first.txt ttl = text.first.nil? ? 0 : text.first.ttl yield({ rbl: rbl_domain, ttl: ttl, result: rbl_response_code, message: rbl_txt_message }) else yield({ rbl: rbl_domain, ttl: ttl, result: "", message: 'Not Listed' }) end end end
name_to_lookup(rbl_domain)
click to toggle source
# File lib/checker.rb, line 59 def name_to_lookup(rbl_domain) ip.reverse.gsub(/in-addr.arpa/, rbl_domain) end
rbls()
click to toggle source
# File lib/checker.rb, line 55 def rbls @@rbls ||= RBL::Loader.load end
resolve_to_ip(name_to_lookup)
click to toggle source
# File lib/checker.rb, line 23 def resolve_to_ip name_to_lookup begin IPAddr.new(name_to_lookup) rescue ArgumentError => e answer = Resolver(name_to_lookup).answer if answer.empty? raise NotFound.new(name_to_lookup) else answer.first.address end end end
resolver()
click to toggle source
# File lib/checker.rb, line 63 def resolver @resolver ||= Net::DNS::Resolver.new(:nameservers => ['8.8.8.8','8.8.4.4'] * 10, :log_file => nil) end