mirror of
https://github.com/internetee/registry.git
synced 2025-06-12 23:54:44 +02:00
added record for successfully validated nameservers
This commit is contained in:
parent
d896e5f716
commit
a9a95e373c
3 changed files with 39 additions and 3 deletions
|
@ -7,14 +7,18 @@ class NameserverRecordValidationJob < ApplicationJob
|
|||
|
||||
def perform(domain_name: nil)
|
||||
if domain_name.nil?
|
||||
domains = Domain.all.select { |domain| domain.nameservers.exists? }.
|
||||
select { |domain| domain.created_at < Time.zone.now - 8.hours }
|
||||
domains = Domain.all.select { |domain| domain.created_at < Time.zone.now - NameserverValidator::VALIDATION_DOMAIN_PERIOD }
|
||||
.select { |domain| domain.nameservers.exists? }
|
||||
|
||||
domains.each do |domain|
|
||||
domain.nameservers.each do |nameserver|
|
||||
next if nameserver.nameserver_failed_validation? || nameserver.validated?
|
||||
|
||||
result = NameserverValidator.run(domain_name: domain.name, hostname: nameserver.hostname)
|
||||
|
||||
if result[:result]
|
||||
add_nameserver_to_succesfully(nameserver)
|
||||
|
||||
true
|
||||
else
|
||||
parse_result(result, nameserver)
|
||||
|
@ -26,10 +30,16 @@ class NameserverRecordValidationJob < ApplicationJob
|
|||
domain = Domain.find_by(name: domain_name)
|
||||
|
||||
return logger.info 'Domain not found' if domain.nil?
|
||||
return logger.info 'It should take 8 hours after the domain was created' if domain.created_at > Time.zone.now - 8.hours
|
||||
|
||||
if domain.created_at > Time.zone.now - NameserverValidator::VALIDATION_DOMAIN_PERIOD
|
||||
return logger.info "It should take #{NameserverValidator::VALIDATION_DOMAIN_PERIOD} hours after the domain was created"
|
||||
end
|
||||
|
||||
return logger.info 'Domain not has nameservers' if domain.nameservers.empty?
|
||||
|
||||
domain.nameservers.each do |nameserver|
|
||||
next if nameserver.nameserver_failed_validation?
|
||||
|
||||
result = NameserverValidator.run(domain_name: domain.name, hostname: nameserver.hostname)
|
||||
|
||||
if result[:result]
|
||||
|
@ -44,6 +54,14 @@ class NameserverRecordValidationJob < ApplicationJob
|
|||
|
||||
private
|
||||
|
||||
def add_nameserver_to_succesfully(nameserver)
|
||||
nameserver.validation_counter = nil
|
||||
nameserver.failed_validation_reason = nil
|
||||
nameserver.validation_datetime = Time.zone.now
|
||||
|
||||
nameserver.save
|
||||
end
|
||||
|
||||
def parse_result(result, nameserver)
|
||||
text = ""
|
||||
case result[:reason]
|
||||
|
|
|
@ -34,6 +34,8 @@ class Nameserver < ApplicationRecord
|
|||
|
||||
delegate :name, to: :domain, prefix: true
|
||||
|
||||
scope :non_validated, -> { where(validation_datetime: nil) }
|
||||
|
||||
self.ignored_columns = %w[legacy_domain_id]
|
||||
|
||||
def epp_code_map
|
||||
|
@ -53,6 +55,18 @@ class Nameserver < ApplicationRecord
|
|||
}
|
||||
end
|
||||
|
||||
def nameserver_failed_validation?
|
||||
return false if validation_counter.nil?
|
||||
|
||||
validation_counter >= NameserverValidator::VALID_NAMESERVER_COUNT_THRESHOLD
|
||||
end
|
||||
|
||||
def validated?
|
||||
return false if validation_datetime.nil?
|
||||
|
||||
validation_datetime + NameserverValidator::VALIDATION_NAMESERVER_PERIOD > Time.zone.now
|
||||
end
|
||||
|
||||
def to_s
|
||||
hostname
|
||||
end
|
||||
|
|
|
@ -3,6 +3,10 @@ module NameserverValidator
|
|||
|
||||
extend self
|
||||
|
||||
VALIDATION_NAMESERVER_PERIOD = 1.year.freeze
|
||||
VALIDATION_DOMAIN_PERIOD = 8.hours.freeze
|
||||
VALID_NAMESERVER_COUNT_THRESHOLD = 3
|
||||
|
||||
def run(domain_name:, hostname:)
|
||||
validate(domain_name: domain_name, hostname: hostname)
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue