mirror of
https://github.com/internetee/registry.git
synced 2025-07-30 06:26:15 +02:00
34 lines
967 B
Ruby
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
|