Class: Checker
- Inherits:
-
Object
show all
- Defined in:
- lib/checker.rb
Defined Under Namespace
Modules: RBL
Classes: NotFound
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(to_check) ⇒ Checker
Returns a new instance of Checker.
19
20
21
|
# File 'lib/checker.rb', line 19
def initialize(to_check)
@ip = resolve_to_ip(to_check)
end
|
Instance Attribute Details
#ip ⇒ Object
Returns the value of attribute ip.
17
18
19
|
# File 'lib/checker.rb', line 17
def ip
@ip
end
|
Instance Method Details
#check(&blk) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# 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) ⇒ Object
59
60
61
|
# File 'lib/checker.rb', line 59
def name_to_lookup(rbl_domain)
ip.reverse.gsub(/in-addr.arpa/, rbl_domain)
end
|
#rbls ⇒ Object
55
56
57
|
# File 'lib/checker.rb', line 55
def rbls
@@rbls ||= RBL::Loader.load
end
|
#resolve_to_ip(name_to_lookup) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
|
# 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 ⇒ Object
63
64
65
|
# 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
|