diff --git a/app/interactions/domains/nameserver_validator.rb b/app/interactions/domains/nameserver_validator.rb index 1b3c9ba2a..30bc575d2 100644 --- a/app/interactions/domains/nameserver_validator.rb +++ b/app/interactions/domains/nameserver_validator.rb @@ -4,19 +4,20 @@ module Domains extend self - def run(hostname:) - validate(hostname) + def run(hostname:, nameserver_address:) + validate(hostname: hostname, nameserver_address: nameserver_address) end private - def validate(hostname) - resolver = setup_resolver + def validate(hostname: , nameserver_address:) + resolver = Resolver.new + resolver.nameserver = nameserver_address result = resolver.query(hostname, Dnsruby::Types.SOA) - return { result: false, reason: 'authority' } if result.authority.empty? + return { result: false, reason: 'answer' } if result.answer.empty? - decision = result.authority.all? do |a| + decision = result.answer.all? do |a| a.serial.present? end @@ -31,10 +32,16 @@ module Domains return { result: false, reason: 'exception', error_info: e } end - def setup_resolver + def setup_resolver(nameserver_address) + # resolver.do_validation=true + # resolver.query_timeout=1 + # resolver.single_resolvers[0].server='ns.tld.ee' timeout = ENV['nameserver_validation_timeout'] || '1' - dns_servers = ENV['dnssec_resolver_ips'].to_s.split(',').map(&:strip) - Resolver.new({nameserver: dns_servers, timeout: timeout.to_i}) + # dns_servers = ENV['dnssec_resolver_ips'].to_s.split(',').map(&:strip) + # Resolver.new({nameserver: dns_servers, timeout: timeout.to_i}) + resolver = Resolver.new + resolver.nameserver = nameserver_address + end def logger diff --git a/app/jobs/nameserver_record_validation_job.rb b/app/jobs/nameserver_record_validation_job.rb index ad39f684b..b650557ad 100644 --- a/app/jobs/nameserver_record_validation_job.rb +++ b/app/jobs/nameserver_record_validation_job.rb @@ -5,10 +5,10 @@ require 'resolv' class NameserverRecordValidationJob < ApplicationJob include Dnsruby - def perform(nameserver = nil) - if nameserver.nil? + def perform(domain_name: nil, nameserver_address: nil) + if nameserver_address.nil? Nameserver.all.map do |nameserver| - result = Domains::NameserverValidator.run(hostname: nameserver.hostname) + result = Domains::NameserverValidator.run(hostname: nameserver.domain.name, nameserver_address: nameserver.hostname) if result[:result] true @@ -18,8 +18,8 @@ class NameserverRecordValidationJob < ApplicationJob end end else - result = Domains::NameserverValidator.run(hostname: nameserver.hostname) - return parse_result(result, nameserver) unless result[:result] + result = Domains::NameserverValidator.run(hostname: domain_name, nameserver_address: nameserver_address) + return parse_result(result, nameserver_address) unless result[:result] true end @@ -30,12 +30,12 @@ class NameserverRecordValidationJob < ApplicationJob def parse_result(result, nameserver) text = "" case result[:reason] - when 'authority' - text = "Authority information about nameserver hostname **#{nameserver.hostname}** doesn't present" + when 'answer' + text = "No any answer come from **#{nameserver}**" when 'serial' - text = "Serial number for nameserver hostname **#{nameserver.hostname}** doesn't present" + text = "Serial number for nameserver hostname **#{nameserver}** doesn't present" when 'not found' - text = "Seems nameserver hostname **#{nameserver.hostname}** doesn't exist" + text = "Seems nameserver hostname **#{nameserver}** doesn't exist" when 'exception' text = "Something goes wrong, exception name: **#{result[:error_info]}**" end @@ -59,7 +59,8 @@ class NameserverRecordValidationJob < ApplicationJob end def inform_to_registrar(text:, nameserver:) - nameserver.domain.registrar.notifications.create!(text: text) + # nameserver.domain.registrar.notifications.create!(text: text) + "NEED TO DO!" end def logger