added glue record support

This commit is contained in:
olegphenomenon 2022-01-07 12:27:16 +02:00
parent e24301ad0c
commit 156633cd02
2 changed files with 23 additions and 7 deletions

View file

@ -14,7 +14,7 @@ class NameserverRecordValidationJob < ApplicationJob
domain.nameservers.each do |nameserver|
next if nameserver.nameserver_failed_validation? || nameserver.validated?
result = NameserverValidator.run(domain_name: domain.name, hostname: nameserver.hostname)
result = NameserverValidator.run(domain_name: domain.name, nameserver: nameserver)
if result[:result]
add_nameserver_to_succesfully(nameserver)
@ -40,7 +40,7 @@ class NameserverRecordValidationJob < ApplicationJob
domain.nameservers.each do |nameserver|
next if nameserver.nameserver_failed_validation?
result = NameserverValidator.run(domain_name: domain.name, hostname: nameserver.hostname)
result = NameserverValidator.run(domain_name: domain.name, nameserver: nameserver)
if result[:result]
add_nameserver_to_succesfully(nameserver)
@ -87,9 +87,9 @@ class NameserverRecordValidationJob < ApplicationJob
when 'not found'
text = "Seems nameserver hostname **#{nameserver.hostname}** doesn't exist"
when 'exception'
text = "Something goes wrong, exception reason: **#{result[:error_info]}**"
text = "Something went wrong, exception reason: **#{result[:error_info]}**"
when 'domain'
text = "#{domain} not found in zone"
text = "#{domain} zone is not in nameserver**#{nameserver.hostname}**"
end
logger.info text

View file

@ -7,13 +7,28 @@ module NameserverValidator
VALIDATION_DOMAIN_PERIOD = 8.hours.freeze
VALID_NAMESERVER_COUNT_THRESHOLD = 3
def run(domain_name:, hostname:)
validate(domain_name: domain_name, hostname: hostname)
def run(domain_name:, nameserver:)
result_response = validate(domain_name: domain_name, hostname: nameserver.hostname)
unless result_response[:result] && result_response[:reason] == :exception
if result_response[:error_info].to_s.include? "Nameserver invalid!"
if nameserver.ipv4.present?
p "+++++++"
result_response = validate(domain_name: domain_name, hostname: nameserver.ipv4)
elsif nameserver.ipv6.present?
result_response = validate(domain_name: domain_name, hostname: nameserver.ipv6)
end
result_response
end
end
result_response
end
private
def validate(domain_name: , hostname:)
def validate(domain_name:, hostname:)
resolver = setup_resolver(hostname)
result = resolver.query(domain_name, 'SOA', 'IN')
@ -44,6 +59,7 @@ module NameserverValidator
def setup_resolver(hostname)
resolver = Dnsruby::Resolver.new
resolver.query_timeout = 2
resolver.retry_times = 3
resolver.recurse = 0 # Send out non-recursive queries
# disable caching otherwise SOA is cached from first nameserver queried