updated validator

This commit is contained in:
olegphenomenon 2021-12-30 14:13:47 +02:00
parent 66c5b3b6ae
commit e10f4aa186
2 changed files with 27 additions and 19 deletions

View file

@ -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

View file

@ -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