Sha256: 92e3ce49c732eceed66783b8a99cb5454acd5108cce6d3b4c3c8c4f5a03cfa95
Contents?: true
Size: 1.39 KB
Versions: 2
Compression:
Stored size: 1.39 KB
Contents
# frozen_string_literal: true require "active_record" require "resolv" module Mihari class DnsRecord < ActiveRecord::Base class << self # # Build DNS records # # @param [String] domain # # @return [Array<Mihari::DnsRecord>] # def build_by_domain(domain) resource_types = [ Resolv::DNS::Resource::IN::A, Resolv::DNS::Resource::IN::AAAA, Resolv::DNS::Resource::IN::CNAME, Resolv::DNS::Resource::IN::TXT, Resolv::DNS::Resource::IN::NS ] resource_types.map do |resource_type| get_values domain, resource_type rescue Resolv::ResolvError nil end.flatten.compact end private def get_values(domain, resource_type) resources = Resolv::DNS.new.getresources(domain, resource_type) resource_name = resource_type.to_s.split("::").last resources.map do |resource| # A, AAAA if resource.respond_to?(:address) new(resource: resource_name, value: resource.address.to_s) # CNAME, NS elsif resource.respond_to?(:name) new(resource: resource_name, value: resource.name.to_s) # TXT elsif resource.respond_to?(:data) new(resource: resource_name, value: resource.data.to_s) end end.compact end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mihari-3.6.1 | lib/mihari/models/dns.rb |
mihari-3.6.0 | lib/mihari/models/dns.rb |