validate_dns

in lib/crawler/url_validator/dns_check_concern.rb [14:43]


    def validate_dns
      if proxy_configured?
        warning = 'DNS resolution check could not be performed via an HTTP proxy.'
        return validation_warn(:dns, warning)
      end

      
      resolv = Resolv.new([
                            Resolv::Hosts.new,
                            Resolv::DNS.new.tap do |dns|
                              dns.timeouts = Crawler::UrlValidator::DNS_CHECK_TIMEOUT
                            end
                          ])

      
      addresses = resolv.getaddresses(url.host)

      if addresses.empty?
        validation_fail(:dns, 'DNS name resolution failed. No suitable addresses found!')
      else
        validation_ok(:dns, "Domain name resolution successful: #{addresses.count} addresses found",
                      addresses:)
      end
    rescue Resolv::ResolvError, ArgumentError => e
      validation_fail(:dns, <<~MESSAGE)
        DNS resolution failure: 
        or your DNS configuration.
      MESSAGE
    end