class DNSUpdater

Do DNS update based on specified target

Constants

VERSION

Version

Public Class Methods

buildParams(protocol = nil, server = nil, port = nil) click to toggle source

Create param Hash

# File lib/dnsupdater.rb, line 50
def buildParams(protocol = nil, server = nil, port = nil)
    params = { Protocol: nil, Server: server, Port: port, User: nil, Domain: nil, IPs: [] }
    params[:Protocol] = protocol.downcase.to_sym if protocol

    params
end
fillPathParams(path, params) click to toggle source

Set :Domain and :IPs from path to params @param path [String] source data path @param params [Hash] target params @return [Hash] result params

# File lib/dnsupdater.rb, line 68
def fillPathParams(path, params)
    parts = path.split('/').map { |part| Addressable::URI.unencode_component(part) }

    raise Error, 'Not enough parameters!' if parts.count < 3

    params[:Domain] = parts[-2]
    params[:IPs] = parts[-1].to_s.split(',')

    params
end
fillUriParams(uri, params) click to toggle source

Set uri info to params @param uri [Addressable::URI] source uri @param params [Hash] target params @return [Hash] result params

# File lib/dnsupdater.rb, line 83
def fillUriParams(uri, params)
    params[:Protocol] = uri.scheme.to_sym unless uri.scheme.to_s.empty?
    params[:Server] = uri.host unless uri.host.to_s.empty?
    params[:Port] = uri.port unless uri.port.to_s.empty?
    params[:User] = uri.user unless uri.user.to_s.empty?

    params
end
new(config) click to toggle source
# File lib/dnsupdater.rb, line 15
def initialize(config)
    @Config = config
end
parseTarget(target) click to toggle source

Process target into URI @param target [String] @return [Addressable::URI] parsed URI

# File lib/dnsupdater.rb, line 60
def parseTarget(target)
    Addressable::URI.parse(target.to_s)
end
update(protocol, params, config) click to toggle source

Update DNS using updater identified by specified protocol @param protocol [Symbol] @param params [Hash] @param config [Config]

# File lib/dnsupdater.rb, line 41
def self.update(protocol, params, config)
    raise Error, "Unsupported protocol: '#{protocol}'!" unless Updaters.has?(protocol)

    updater = Updaters.get(protocol)
    updater.new(config).update(params)
end

Public Instance Methods

update(target, targetProtocol = nil) click to toggle source

Update DNS based on specified target @param target [String] @param targetProtocol [String]

# File lib/dnsupdater.rb, line 22
def update(target, targetProtocol = nil)
    raise Error, self.class.name + ': Invalid target (empty)!' if target.to_s.empty?

    uri = self.class.parseTarget(target)
    params = self.class.buildParams
    self.class.fillPathParams(uri.path, params)
    self.class.fillUriParams(uri, params)

    params[:Protocol] = @Config.getDefaultProtocol if params[:Protocol].to_s.empty? || (params[:Protocol] == :default)

    @Config.setTargetProtocol(params[:Protocol], targetProtocol)

    self.class.update(params[:Protocol], params, @Config)
end