module DnsResources
Constants
- IN
- RESOURCE
- RESOURCE_TYPES
- VERSION
Public Class Methods
get_all_resources(host)
click to toggle source
# File lib/dns_resources.rb, line 23 def self.get_all_resources(host) result = [] resources = Resolv::DNS.new.getresources(host, IN::ANY) unless resources.empty? resources.each do |resource| result << get_resource_by_type(host, resource.class) end end result end
get_resource_by_type(host, type)
click to toggle source
# File lib/dns_resources.rb, line 34 def self.get_resource_by_type(host, type) resource_type = type.class.eql?(String) ? get_type_class(type) : type resource = Resolv::DNS.new.getresource(host, resource_type) values = get_resource_values(resource) { type: get_type(resource.class) }.merge(values) end
get_resource_values(resource)
click to toggle source
# File lib/dns_resources.rb, line 41 def self.get_resource_values(resource) return {} unless RESOURCE_TYPES.map { |v| v[:resource] }.include?(resource.class) case when resource.class.eql?(IN::A) { address: resource.address.to_s } when resource.class.eql?(IN::AAAA) { address: resource.address.to_s } when resource.class.eql?(IN::CNAME) { name: resource.name.to_s } when resource.class.eql?(RESOURCE::HINFO) { cpu: resource.cpu, os: resource.os } when resource.class.eql?(RESOURCE::MINFO) { emailbx: resource.emailbx, rmailbx: resource.rmailbx } when resource.class.eql?(RESOURCE::MX) { exchange: resource.exchange.to_s, preference: resource.preference } when resource.class.eql?(IN::NS) { name: resource.name.to_s } when resource.class.eql?(RESOURCE::PTR) { name: resource.name.to_s } when resource.class.eql?(RESOURCE::SOA) { mname: resource.mname.to_s, rname: resource.rname.to_s, refresh: resource.refresh, retry: resource.retry, expire: resource.expire, minimum: resource.minimum, serial: resource.serial } when resource.class.eql?(IN::SRV) { port: resource.port, priority: resource.priority, target: resource.target, weight: resource.weight } when resource.class.eql?(RESOURCE::TXT) { name: resource.strings } when resource.class.eql?(IN::WKS) { address: resource.address.to_s, bitmap: resource.bitmap, protocol: resource.protocol } else {} end end
get_type(resource_class)
click to toggle source
# File lib/dns_resources.rb, line 77 def self.get_type(resource_class) RESOURCE_TYPES.each do |v| return v[:type] if v[:resource].eql?(resource_class) end end
get_type_class(type)
click to toggle source
# File lib/dns_resources.rb, line 83 def self.get_type_class(type) RESOURCE_TYPES.each do |v| return v[:resource] if v[:type].eql?(type) end end