mirror of
https://github.com/internetee/registry.git
synced 2025-06-11 23:24:48 +02:00
updated validator
This commit is contained in:
parent
66c5b3b6ae
commit
e10f4aa186
2 changed files with 27 additions and 19 deletions
|
@ -4,19 +4,20 @@ module Domains
|
||||||
|
|
||||||
extend self
|
extend self
|
||||||
|
|
||||||
def run(hostname:)
|
def run(hostname:, nameserver_address:)
|
||||||
validate(hostname)
|
validate(hostname: hostname, nameserver_address: nameserver_address)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def validate(hostname)
|
def validate(hostname: , nameserver_address:)
|
||||||
resolver = setup_resolver
|
resolver = Resolver.new
|
||||||
|
resolver.nameserver = nameserver_address
|
||||||
result = resolver.query(hostname, Dnsruby::Types.SOA)
|
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?
|
a.serial.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -31,10 +32,16 @@ module Domains
|
||||||
return { result: false, reason: 'exception', error_info: e }
|
return { result: false, reason: 'exception', error_info: e }
|
||||||
end
|
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'
|
timeout = ENV['nameserver_validation_timeout'] || '1'
|
||||||
dns_servers = ENV['dnssec_resolver_ips'].to_s.split(',').map(&:strip)
|
# dns_servers = ENV['dnssec_resolver_ips'].to_s.split(',').map(&:strip)
|
||||||
Resolver.new({nameserver: dns_servers, timeout: timeout.to_i})
|
# Resolver.new({nameserver: dns_servers, timeout: timeout.to_i})
|
||||||
|
resolver = Resolver.new
|
||||||
|
resolver.nameserver = nameserver_address
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def logger
|
def logger
|
||||||
|
|
|
@ -5,10 +5,10 @@ require 'resolv'
|
||||||
class NameserverRecordValidationJob < ApplicationJob
|
class NameserverRecordValidationJob < ApplicationJob
|
||||||
include Dnsruby
|
include Dnsruby
|
||||||
|
|
||||||
def perform(nameserver = nil)
|
def perform(domain_name: nil, nameserver_address: nil)
|
||||||
if nameserver.nil?
|
if nameserver_address.nil?
|
||||||
Nameserver.all.map do |nameserver|
|
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]
|
if result[:result]
|
||||||
true
|
true
|
||||||
|
@ -18,8 +18,8 @@ class NameserverRecordValidationJob < ApplicationJob
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
result = Domains::NameserverValidator.run(hostname: nameserver.hostname)
|
result = Domains::NameserverValidator.run(hostname: domain_name, nameserver_address: nameserver_address)
|
||||||
return parse_result(result, nameserver) unless result[:result]
|
return parse_result(result, nameserver_address) unless result[:result]
|
||||||
|
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
@ -30,12 +30,12 @@ class NameserverRecordValidationJob < ApplicationJob
|
||||||
def parse_result(result, nameserver)
|
def parse_result(result, nameserver)
|
||||||
text = ""
|
text = ""
|
||||||
case result[:reason]
|
case result[:reason]
|
||||||
when 'authority'
|
when 'answer'
|
||||||
text = "Authority information about nameserver hostname **#{nameserver.hostname}** doesn't present"
|
text = "No any answer come from **#{nameserver}**"
|
||||||
when 'serial'
|
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'
|
when 'not found'
|
||||||
text = "Seems nameserver hostname **#{nameserver.hostname}** doesn't exist"
|
text = "Seems nameserver hostname **#{nameserver}** doesn't exist"
|
||||||
when 'exception'
|
when 'exception'
|
||||||
text = "Something goes wrong, exception name: **#{result[:error_info]}**"
|
text = "Something goes wrong, exception name: **#{result[:error_info]}**"
|
||||||
end
|
end
|
||||||
|
@ -59,7 +59,8 @@ class NameserverRecordValidationJob < ApplicationJob
|
||||||
end
|
end
|
||||||
|
|
||||||
def inform_to_registrar(text:, nameserver:)
|
def inform_to_registrar(text:, nameserver:)
|
||||||
nameserver.domain.registrar.notifications.create!(text: text)
|
# nameserver.domain.registrar.notifications.create!(text: text)
|
||||||
|
"NEED TO DO!"
|
||||||
end
|
end
|
||||||
|
|
||||||
def logger
|
def logger
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue