Guest User

Untitled

a guest
May 20th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. def find_nameservers(domain_name)
  2. domain_name = domain_name + '.' unless domain_name.match(/\.$/)
  3.  
  4. nameserver_req = @resolver.getresources(domain_name, Resolv::DNS::Resource::IN::NS)
  5. if(nameserver_req.empty?)
  6. raise(I6::I6Error, 'Domain \'' + domain_name + '\' has no nameservers, unable to fetch NS records')
  7. end
  8.  
  9. nameservers = []
  10. ip_addresses = []
  11. nameserver_req.each do |ns|
  12. rdata = ns.name.to_s
  13. nameservers << Dnsruby::RR.create(:name => domain_name, :type => 'NS', :ttl => 0, :domainname => rdata)
  14. @resolver.each_address(rdata) do |adr|
  15. ip_addresses << Dnsruby::RR.create(:name => rdata, :type => 'A', :ttl => 0, :address => adr.to_s)
  16. end
  17. end
  18.  
  19. soa_req = @resolver.getresources(domain_name, Resolv::DNS::Resource::IN::SOA)
  20. unless soa_req.empty?
  21. primary_ns = nameservers.find { |ns| ns.domainname.to_s == soa_req[0].mname.to_s }
  22. if primary_ns
  23. nameservers.delete(primary_ns)
  24. nameservers.insert(0, primary_ns)
  25. end
  26. end
  27. nameservers + ip_addresses
  28. end
Add Comment
Please, Sign In to add comment