class Ukemi::Services::DNSDB

Private Instance Methods

api() click to toggle source
# File lib/ukemi/services/dnsdb.rb, line 15
def api
  @api ||= ::DNSDB::API.new
end
config_keys() click to toggle source
# File lib/ukemi/services/dnsdb.rb, line 11
def config_keys
  %w[DNSDB_API_KEY]
end
lookup_by_domain(data) click to toggle source
# File lib/ukemi/services/dnsdb.rb, line 34
def lookup_by_domain(data)
  results = api.lookup.rrset(owner_name: data, rrtype: "A")
  results.map do |result|
    first_seen = Time.at(result["time_first"]).to_date.to_s
    last_seen = Time.at(result["time_last"]).to_date.to_s

    values = result["rdata"] || []
    values.map do |value|
      Record.new(
        data: value,
        first_seen: first_seen,
        last_seen: last_seen,
        source: name
      )
    end
  end.flatten
end
lookup_by_ip(data) click to toggle source
# File lib/ukemi/services/dnsdb.rb, line 19
def lookup_by_ip(data)
  results = api.lookup.rdata(type: "ip", value: data, rrtype: "A")
  results.map do |result|
    rrname = result["rrname"]
    # Remove the last dot (e.g. "example.com.")
    data = rrname[0..-2]
    Record.new(
      data: data,
      first_seen: Time.at(result["time_first"]).to_date.to_s,
      last_seen: Time.at(result["time_last"]).to_date.to_s,
      source: name
    )
  end
end