class TLSChecker::CertificateCheckerFactory
Public Class Methods
new()
click to toggle source
# File lib/tls-checker/certificate_checker_factory.rb, line 7 def initialize @resolver = Resolv::DNS.new end
Public Instance Methods
certificate_checkers_for(specification)
click to toggle source
# File lib/tls-checker/certificate_checker_factory.rb, line 11 def certificate_checkers_for(specification) hostname, port, starttls = specification.split(':', 3) port = port.to_i if port starttls = starttls.to_sym if starttls port ||= port_for(hostname) starttls ||= starttls_for(port) begin ip_in_hostname = IPAddr.new(hostname) [ CertificateChecker.new(nil, ip_in_hostname, port, starttls), ] rescue IPAddr::InvalidAddressError certificate_checkers = @resolver.getaddresses(hostname).map { |ip| CertificateChecker.new(hostname, ip, port, starttls) } factory = TLSACheckerFactory.new tlsa_checkers = [] certificate_checkers.each do |certificate_checker| next unless certificate_checker.check tlsa_checkers += factory.tlsa_checkers_for(certificate_checker) end certificate_checkers + tlsa_checkers end end
Private Instance Methods
port_for(hostname)
click to toggle source
# File lib/tls-checker/certificate_checker_factory.rb, line 44 def port_for(hostname) { 'smtp.' => 25, 'mx.' => 25, 'imap.' => 143, 'ldap.' => 389, 'puppet.' => 8140, }.each do |prefix, port| return port if hostname.start_with?(prefix) end 443 end
starttls_for(port)
click to toggle source
# File lib/tls-checker/certificate_checker_factory.rb, line 58 def starttls_for(port) well_known_starttls = { 25 => :smtp, 143 => :imap, 389 => :ldap, } starttls = well_known_starttls[port] starttls ||= :raw starttls end