class DopCommon::DNS

Public Class Methods

new(hash) click to toggle source
# File lib/dop_common/dns.rb, line 8
def initialize(hash)
  @hash = (symbolize_keys(hash) || {}) # DNS is optional.
end

Public Instance Methods

name_servers() click to toggle source
# File lib/dop_common/dns.rb, line 17
def name_servers
  @name_servers ||= name_servers_valid? ? @hash[:name_servers] : []
end
search_domains() click to toggle source
# File lib/dop_common/dns.rb, line 21
def search_domains
  @search_domains ||= search_domains_valid? ? @hash[:search_domains] : []
end
validate() click to toggle source
# File lib/dop_common/dns.rb, line 12
def validate
  log_validation_method(:name_servers_valid?)
  log_validation_method(:search_domains_valid?)
end

Private Instance Methods

name_servers_valid?() click to toggle source
# File lib/dop_common/dns.rb, line 27
def name_servers_valid?
  return false unless @hash.has_key?(:name_servers)
  raise PlanParsingError, "DNS: name_servers must be an array of IP addresses" if
    !@hash[:name_servers].kind_of?(Array) || @hash[:name_servers].empty?
  @hash[:name_servers].each do |n|
    begin
      IPAddr.new(n)
    rescue
      raise PlanParsingError, "DNS: name_servers entry '#{n}' is not a valid IP address"
    end
  end
  true
end
search_domains_valid?() click to toggle source
# File lib/dop_common/dns.rb, line 41
def search_domains_valid?
  regex = /((^[a-z0-9]+(-[a-z0-9]+)*){1,63}$)|(^((?=[a-z0-9-]{1,63}\.)[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}$)/
  return false unless @hash.has_key?(:search_domains)
  raise PlanParsingError, "DNS: search_domains must be an array of search domains" if
    !@hash[:search_domains].kind_of?(Array) || @hash[:search_domains].empty?
  raise PlanParsingError, "DNS: search_domains entries must be strings" unless
    @hash[:search_domains].all? { |d| d.kind_of?(String) }
  @hash[:search_domains].each do |d|
    raise PlanParsingError, "DNS: search_domain entry '#{d}' is not a valid domain name" unless
      d =~ regex
  end
  true
end