Sha256: 1d9365d35078254cd6c636fbf7fae1d24fe4371a090d41b6d0138ac5c1fc608a

Contents?: true

Size: 1.37 KB

Versions: 14

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true

module Mihari
  class DnsRecord < ActiveRecord::Base
    belongs_to :artifact

    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.filter_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
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
mihari-4.6.1 lib/mihari/models/dns.rb
mihari-4.6.0 lib/mihari/models/dns.rb
mihari-4.5.3 lib/mihari/models/dns.rb
mihari-4.5.2 lib/mihari/models/dns.rb
mihari-4.5.1 lib/mihari/models/dns.rb
mihari-4.5.0 lib/mihari/models/dns.rb
mihari-4.4.1 lib/mihari/models/dns.rb
mihari-4.4.0 lib/mihari/models/dns.rb
mihari-4.3.0 lib/mihari/models/dns.rb
mihari-4.2.0 lib/mihari/models/dns.rb
mihari-4.1.2 lib/mihari/models/dns.rb
mihari-4.1.1 lib/mihari/models/dns.rb
mihari-4.1.0 lib/mihari/models/dns.rb
mihari-4.0.0 lib/mihari/models/dns.rb