internetee-registry/app/interactions/actions/a_and_aaaa_email_validation.rb
2021-12-28 13:37:40 +02:00

34 lines
967 B
Ruby

module Actions
module AAndAaaaEmailValidation
extend self
def call(email:, value:)
check_for_records_value(email: email, value: value)
end
private
def check_for_records_value(email:, value:)
email_domain = Mail::Address.new(email).domain
dns_servers = ENV['dnssec_resolver_ips'].to_s.split(',').map(&:strip)
resolve_a_and_aaaa_records(dns_servers: dns_servers, email_domain: email_domain, value: value)
end
def resolve_a_and_aaaa_records(dns_servers:, email_domain:, value:)
Resolv::DNS.open({ nameserver: dns_servers }) do |dns|
dns.timeouts = ENV['a_and_aaaa_validation_timeout'].to_i || 1
ress = nil
case value
when 'A'
ress = dns.getresources email_domain, Resolv::DNS::Resource::IN::A
when 'AAAA'
ress = dns.getresources email_domain, Resolv::DNS::Resource::IN::AAAA
end
ress.map(&:address)
end
end
end
end