Sha256: 2df14590665935dedeaf15a9fb7d2cf6e71e0c999495acd3b9a55f6895f978ba

Contents?: true

Size: 841 Bytes

Versions: 29

Compression:

Stored size: 841 Bytes

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 = %w[A AAAA CNAME TXT 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)
        response = Enrichers::GooglePublicDNS.query(domain, resource_type)
        answers = response.answers || []

        answers.filter_map do |answer|
          new(resource: answer.resource_type, value: answer.data)
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
mihari-5.4.3 lib/mihari/models/dns.rb
mihari-5.4.2 lib/mihari/models/dns.rb
mihari-5.4.1 lib/mihari/models/dns.rb
mihari-5.4.0 lib/mihari/models/dns.rb
mihari-5.3.2 lib/mihari/models/dns.rb
mihari-5.3.1 lib/mihari/models/dns.rb
mihari-5.3.0 lib/mihari/models/dns.rb
mihari-5.2.4 lib/mihari/models/dns.rb
mihari-5.2.3 lib/mihari/models/dns.rb
mihari-5.2.2 lib/mihari/models/dns.rb
mihari-5.2.1 lib/mihari/models/dns.rb
mihari-5.2.0 lib/mihari/models/dns.rb
mihari-5.1.4 lib/mihari/models/dns.rb
mihari-5.1.3 lib/mihari/models/dns.rb
mihari-5.1.2 lib/mihari/models/dns.rb
mihari-5.1.1 lib/mihari/models/dns.rb
mihari-5.1.0 lib/mihari/models/dns.rb
mihari-5.0.1 lib/mihari/models/dns.rb
mihari-5.0.0 lib/mihari/models/dns.rb
mihari-4.12.0 lib/mihari/models/dns.rb