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