dnstraverse 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/dnstraverse +6 -6
- data/lib/dnstraverse/fingerprint.rb +9 -3
- data/lib/dnstraverse/referral.rb +2 -0
- data/lib/dnstraverse/traverser.rb +5 -1
- data/lib/dnstraverse/version.rb +1 -1
- metadata +4 -4
data/bin/dnstraverse
CHANGED
@@ -56,7 +56,7 @@ def progress_main(args)
|
|
56
56
|
stage = args[:stage]
|
57
57
|
return if r.refid.empty?
|
58
58
|
case stage
|
59
|
-
|
59
|
+
when :answer then
|
60
60
|
if o[:verbose] then
|
61
61
|
for warning in r.warnings do
|
62
62
|
puts "#{r.refid} WARNING: #{warning}"
|
@@ -65,15 +65,15 @@ def progress_main(args)
|
|
65
65
|
if o[:allstats] then
|
66
66
|
r.stats_display(:prefix => "#{r.refid} Results:", :results => false)
|
67
67
|
end
|
68
|
-
|
68
|
+
when :start then
|
69
69
|
print o[:verbose] ? referral_txt_verbose(r) : referral_txt_normal(r)
|
70
70
|
if r.serverips.nil? then
|
71
71
|
print " -- resolving"
|
72
72
|
end
|
73
73
|
print "\n"
|
74
|
-
|
74
|
+
when :answer_fast then
|
75
75
|
print o[:verbose] ? referral_txt_verbose(r) : referral_txt_normal(r)
|
76
|
-
puts " -- completed earlier"
|
76
|
+
puts " -- completed earlier (#{r.replaced_by.refid})"
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -82,10 +82,10 @@ def progress_resolves(args)
|
|
82
82
|
r = args[:referral]
|
83
83
|
stage = args[:stage]
|
84
84
|
case stage
|
85
|
-
|
85
|
+
when :start then
|
86
86
|
print o[:verbose] ? referral_txt_verbose(r) : referral_txt_normal(r)
|
87
87
|
print "\n"
|
88
|
-
|
88
|
+
when :answer_fast then
|
89
89
|
print o[:verbose] ? referral_txt_verbose(r) : referral_txt_normal(r)
|
90
90
|
puts " -- completed earlier"
|
91
91
|
end
|
@@ -55,18 +55,24 @@ module DNSTraverse
|
|
55
55
|
next unless id =~ /#{rule[:fingerprint]}/
|
56
56
|
if rule.has_key?(:result) then
|
57
57
|
result = rule[:result]
|
58
|
+
if result.is_a? String
|
59
|
+
ref[:state] = rule[:result]
|
60
|
+
ref[:error] = rule[:result]
|
61
|
+
ref[:id] = id
|
62
|
+
return ret
|
63
|
+
end
|
58
64
|
for k in [:vendor, :product, :option] do
|
59
65
|
ret[k] = result[k] if result.has_key?(k) and result[k].length > 0
|
60
66
|
end
|
61
67
|
case @version_style
|
62
|
-
|
68
|
+
when :none
|
63
69
|
ret[:version] = result[:version]
|
64
|
-
|
70
|
+
when :append
|
65
71
|
ver = query_version(ip, result[:qv])
|
66
72
|
ver = query_version(ip, "version.bind") unless ver
|
67
73
|
ret[:version] = result[:version]
|
68
74
|
ret[:version]+= " (#{ver})" if ver
|
69
|
-
|
75
|
+
when :override
|
70
76
|
ver = query_version(ip, result[:qv])
|
71
77
|
ver = query_version(ip, "version.bind") unless ver
|
72
78
|
ret[:version] = ver ? ver : result[:version]
|
data/lib/dnstraverse/referral.rb
CHANGED
@@ -31,6 +31,7 @@ module DNSTraverse
|
|
31
31
|
attr_reader :decoded_query_cache
|
32
32
|
attr_reader :responses
|
33
33
|
attr_reader :stats
|
34
|
+
attr_accessor :replaced_by
|
34
35
|
|
35
36
|
EMPTY_ARRAY = [].freeze
|
36
37
|
|
@@ -437,6 +438,7 @@ module DNSTraverse
|
|
437
438
|
end
|
438
439
|
|
439
440
|
def replace_child(before, after)
|
441
|
+
before.replaced_by = after
|
440
442
|
@children.each_key do | ip |
|
441
443
|
@children[ip].map! { |c| c.equal?(before) ? after : c }
|
442
444
|
end
|
@@ -195,9 +195,12 @@ module DNSTraverse
|
|
195
195
|
stack.push(*referrals.reverse)
|
196
196
|
next
|
197
197
|
end
|
198
|
-
#
|
198
|
+
# put a placeholder on the stack
|
199
199
|
stack << r << :calc_answer
|
200
|
+
# get the children
|
200
201
|
children = r.process({})
|
202
|
+
# now report progress. we already can tell whether this will be
|
203
|
+
# completed in fast mode or not, so we report this information
|
201
204
|
children.each do |c|
|
202
205
|
if @fast
|
203
206
|
key = "#{c.qname}:#{c.qclass}:#{c.qtype}:#{c.server}:#{c.txt_ips_verbose}".downcase!
|
@@ -207,6 +210,7 @@ module DNSTraverse
|
|
207
210
|
end
|
208
211
|
report_progress c, :stage => stage
|
209
212
|
end
|
213
|
+
# push the children on the stack
|
210
214
|
stack.push(*children.reverse)
|
211
215
|
end
|
212
216
|
end
|
data/lib/dnstraverse/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dnstraverse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- James Ponder
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-07-31 00:00:00 +01:00
|
19
19
|
default_executable: dnstraverse
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|