class LeSSL::DNS

Public Class Methods

new(nameservers=['8.8.8.8', '8.8.4.4']) click to toggle source
# File lib/le_ssl/dns.rb, line 3
def initialize(nameservers=['8.8.8.8', '8.8.4.4'])
        @dns = Resolv::DNS.new(nameserver: nameservers)
end

Public Instance Methods

challenge_record_invalid?(domain, key) click to toggle source
# File lib/le_ssl/dns.rb, line 14
def challenge_record_invalid?(domain, key)
        return !challenge_record_valid?(domain, key)
end
challenge_record_valid?(domain, key) click to toggle source

Checks if the TXT record for a domain is valid.

# File lib/le_ssl/dns.rb, line 9
def challenge_record_valid?(domain, key)
        record = challenge_record(domain)
        return record && record.data == key
end

Private Instance Methods

challenge_record(domain) click to toggle source

@return [Resolv::DNS::Resource::IN::TXT, nil]

The challenge record for a defined domain.
If no challenge present nil is returned.
# File lib/le_ssl/dns.rb, line 23
def challenge_record(domain)
        @dns.getresource("_acme-challenge.#{domain}", Resolv::DNS::Resource::IN::TXT)
rescue Resolv::ResolvError => e
        nil  # Return silently
end