class DNSUpdater::Updaters::Updater
Base class of any DNS updater
Public Class Methods
getHostPort(config)
click to toggle source
Get configured host and port for updater @param config [Config]
# File lib/dnsupdater/updaters/updater.rb, line 27 def self.getHostPort(config) raise Error, 'Unsupported!' end
new(config)
click to toggle source
# File lib/dnsupdater/updaters/updater.rb, line 15 def initialize(config) @Config = config end
Public Instance Methods
update(params)
click to toggle source
Update DNS using given params @param params [Hash] target params
# File lib/dnsupdater/updaters/updater.rb, line 21 def update(params) raise Error, 'Child class must implement this!' end
Protected Instance Methods
getIPs(namesOrIPs)
click to toggle source
# File lib/dnsupdater/updaters/updater.rb, line 33 def getIPs(namesOrIPs) ipAddrs = {} namesOrIPs.to_a.each do |nameOrIP| if nameOrIP.is_a?(IPAddr) setIPAddr(nameOrIP, ipAddrs) elsif nameOrIP == 'client' resolveClient.each do |ip| setIPAddr(ip, ipAddrs) end else begin setIPAddr(nameOrIP, ipAddrs) rescue IPAddr::InvalidAddressError setIPsFromDNS(nameOrIP, ipAddrs) end end end ipAddrs.values end
resolveClient()
click to toggle source
# File lib/dnsupdater/updaters/updater.rb, line 68 def resolveClient ipAddrs = Socket.ip_address_list.select do |addr| !addr.ipv4_loopback? && !addr.ipv6_loopback? end ipAddrs.map do |addr| addr.ip_address.split('%').first end end
setIPAddr(addr, ipAddrs)
click to toggle source
# File lib/dnsupdater/updaters/updater.rb, line 63 def setIPAddr(addr, ipAddrs) addr = IPAddr.new(addr.to_s) unless addr.is_a?(IPAddr) ipAddrs[addr.to_s] = addr end
setIPsFromDNS(nameOrIP, ipAddrs)
click to toggle source
# File lib/dnsupdater/updaters/updater.rb, line 55 def setIPsFromDNS(nameOrIP, ipAddrs) Resolv::DNS.open do |dns| dns.each_address(nameOrIP) do |addr| setIPAddr(addr, ipAddrs) end end end