dnstraverse 0.1.7 → 0.1.8
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 +0 -1
- data/lib/dnstraverse/info_cache.rb +1 -0
- data/lib/dnstraverse/referral.rb +9 -8
- data/lib/dnstraverse/response.rb +16 -4
- data/lib/dnstraverse/summary_stats.rb +1 -1
- data/lib/dnstraverse/version.rb +1 -1
- metadata +4 -4
    
        data/bin/dnstraverse
    CHANGED
    
    
| @@ -99,6 +99,7 @@ module DNSTraverse | |
| 99 99 | 
             
                    starters.push({ :name => nameserver, :ips => ips })
         | 
| 100 100 | 
             
                  end
         | 
| 101 101 | 
             
                  newbailiwick = ns[0].name.to_s
         | 
| 102 | 
            +
                  newbailiwick = nil if newbailiwick == '' # back to root
         | 
| 102 103 | 
             
                  Log.debug { "For domain #{domain} using start servers: " +
         | 
| 103 104 | 
             
                    starters.map { |x| x[:name] }.join(', ') }
         | 
| 104 105 | 
             
                  return starters, newbailiwick
         | 
    
        data/lib/dnstraverse/referral.rb
    CHANGED
    
    | @@ -484,20 +484,21 @@ module DNSTraverse | |
| 484 484 | 
             
                    referral = data[:referral]
         | 
| 485 485 | 
             
                    where = "#{referral.server} (#{response.ip})"
         | 
| 486 486 | 
             
                    case response.status
         | 
| 487 | 
            -
             | 
| 487 | 
            +
                    when :exception
         | 
| 488 488 | 
             
                      puts "#{response.exception_message} at #{where}"
         | 
| 489 | 
            -
             | 
| 489 | 
            +
                    when :noglue
         | 
| 490 490 | 
             
                      puts "No glue at #{referral.parent.server} " + 
         | 
| 491 491 | 
             
                        "(#{response.ip}) for #{referral.server}"
         | 
| 492 | 
            -
             | 
| 493 | 
            -
                      puts "Lame referral from #{ | 
| 494 | 
            -
             | 
| 492 | 
            +
                    when :referral_lame
         | 
| 493 | 
            +
                      puts "Lame referral from #{referral.parent.server} " + 
         | 
| 494 | 
            +
                        "(#{referral.parent_ip}) to #{where}"
         | 
| 495 | 
            +
                    when :loop
         | 
| 495 496 | 
             
                      puts "Loop encountered at #{response.server} "
         | 
| 496 | 
            -
             | 
| 497 | 
            +
                    when :error
         | 
| 497 498 | 
             
                      puts "#{response.error_message} at #{where}"
         | 
| 498 | 
            -
             | 
| 499 | 
            +
                    when :nodata
         | 
| 499 500 | 
             
                      puts "NODATA (for this type) at #{where}"
         | 
| 500 | 
            -
             | 
| 501 | 
            +
                    when :answered
         | 
| 501 502 | 
             
                      puts "Answer from #{where}"
         | 
| 502 503 | 
             
                      if results then
         | 
| 503 504 | 
             
                        for rr in data[:response].answers do
         | 
    
        data/lib/dnstraverse/response.rb
    CHANGED
    
    | @@ -55,7 +55,7 @@ module DNSTraverse | |
| 55 55 | 
             
                # this is why exception name/message is added for exception types
         | 
| 56 56 | 
             
                def update_stats_key
         | 
| 57 57 | 
             
                  r = @decoded_query
         | 
| 58 | 
            -
                  @stats_key = "key:#{r.ip}:#{@server}:#{ | 
| 58 | 
            +
                  @stats_key = "key:#{@status}:#{r.ip}:#{@server}:#{r.qname}:#{r.qclass}:#{r.qtype}"
         | 
| 59 59 | 
             
                  if @stats == :exception and r.message.is_a? Exception then
         | 
| 60 60 | 
             
                    @stats_key+= ":#{r.message}"
         | 
| 61 61 | 
             
                  end
         | 
| @@ -69,6 +69,15 @@ module DNSTraverse | |
| 69 69 | 
             
                  ###@auth_ns = @auth_soa = @auth_other = nil
         | 
| 70 70 | 
             
                end
         | 
| 71 71 |  | 
| 72 | 
            +
                def inside_bailiwick?(name)
         | 
| 73 | 
            +
                  return true if @bailiwick.nil?
         | 
| 74 | 
            +
                  bwend = ".#{@bailiwick}"
         | 
| 75 | 
            +
                  namestr = name.to_s
         | 
| 76 | 
            +
                  return true if namestr.casecmp(@bailiwick) == 0
         | 
| 77 | 
            +
                  return true if namestr =~ /#{bwend}$/i
         | 
| 78 | 
            +
                  return false
         | 
| 79 | 
            +
                end
         | 
| 80 | 
            +
             | 
| 72 81 | 
             
                # enrich the decoded_query to do the cache, lame checking and get starters
         | 
| 73 82 | 
             
                def evaluate
         | 
| 74 83 | 
             
                  @status = @decoded_query.status # use this as a base
         | 
| @@ -78,13 +87,16 @@ module DNSTraverse | |
| 78 87 | 
             
                    @infocache.add(@decoded_query.cacheable_good)
         | 
| 79 88 | 
             
                  end
         | 
| 80 89 | 
             
                  case @decoded_query.status
         | 
| 81 | 
            -
             | 
| 90 | 
            +
                  when :restart
         | 
| 82 91 | 
             
                    @starters, @starters_bailiwick = @infocache.get_startservers(@decoded_query.endname)
         | 
| 83 | 
            -
             | 
| 92 | 
            +
                  when :referral
         | 
| 84 93 | 
             
                    @starters, @starters_bailiwick = @infocache.get_startservers(@decoded_query.endname)
         | 
| 94 | 
            +
                    unless @decoded_query.bailiwick.nil? or @starters_bailiwick =~ /\.#{@decoded_query.bailiwick}$/
         | 
| 95 | 
            +
                      @status = :referral_lame
         | 
| 96 | 
            +
                    end
         | 
| 85 97 | 
             
                    starternames = @starters.map { |x| x[:name].to_s.downcase }
         | 
| 86 98 | 
             
                    if starternames.sort != @decoded_query.authoritynames.sort
         | 
| 87 | 
            -
                      @ | 
| 99 | 
            +
                      @decoded_query.warnings_add "Referred authority names do not match query cache expectations"
         | 
| 88 100 | 
             
                    end
         | 
| 89 101 | 
             
                  end
         | 
| 90 102 | 
             
                end
         | 
| @@ -85,7 +85,7 @@ module DNSTraverse | |
| 85 85 | 
             
                      case type
         | 
| 86 86 | 
             
                      when :nodata
         | 
| 87 87 | 
             
                        o << "#{prefix}#{txt_prob sinfo[:prob]} found no such record"
         | 
| 88 | 
            -
                      when : | 
| 88 | 
            +
                      when :referral_lame
         | 
| 89 89 | 
             
                        o << "#{prefix}#{txt_prob sinfo[:prob]} resulted in a lame referral"
         | 
| 90 90 | 
             
                      when :exception
         | 
| 91 91 | 
             
                        o << "#{prefix}#{txt_prob sinfo[:prob]} resulted in an exception"
         | 
    
        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: 11
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 1
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.1. | 
| 9 | 
            +
              - 8
         | 
| 10 | 
            +
              version: 0.1.8
         | 
| 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-08- | 
| 18 | 
            +
            date: 2011-08-20 00:00:00 +01:00
         | 
| 19 19 | 
             
            default_executable: dnstraverse
         | 
| 20 20 | 
             
            dependencies: 
         | 
| 21 21 | 
             
            - !ruby/object:Gem::Dependency 
         |