class Proxy::Dns::Inwx::Record
Attributes
domrobot[RW]
object[RW]
Public Class Methods
new(inwx_user, inwx_pass, ttl = nil)
click to toggle source
Calls superclass method
# File lib/smart_proxy_dns_inwx/dns_inwx_main.rb, line 14 def initialize(inwx_user, inwx_pass, ttl = nil) addr = "api.domrobot.com" @object = "nameserver" @domrobot = INWX::Domrobot.new(addr) result = self.domrobot.login(inwx_user,inwx_pass) super(nil, ttl) end
Public Instance Methods
do_create(name, value, type)
click to toggle source
create({ :fqdn => “node01.lab”, :value => “192.168.100.2”} create({ :fqdn => “node01.lab”, :value => “3.100.168.192.in-addr.arpa”,
:type => "PTR"}
# File lib/smart_proxy_dns_inwx/dns_inwx_main.rb, line 25 def do_create(name, value, type) ip, id = dns_find(name) if ip raise(Proxy::Dns::Collision, "#{name} is already used") unless ip == value else domain, name = split_fqdn(name) method = "createRecord" params = {:domain => domain, :type => type, :content => value, :name => name } result = self.domrobot.call(self.object, method, params) msg = "add #{type} DNS entry #{name} => #{value} to domain #{domain}" report msg, result["msg"], false end end
do_remove(name, value)
click to toggle source
remove({ :fqdn => “node01.lab”, :value => “192.168.100.2”} remove({ :fqdn => “node01.lab”, :value => “3.100.168.192.in-addr.arpa”}
# File lib/smart_proxy_dns_inwx/dns_inwx_main.rb, line 41 def do_remove(name, value) ip, id = dns_find(name) raise Proxy::Dns::NotFound.new("Cannot find DNS entry for #{name}") unless id msg = "remove DNS entry #{name} => #{value}" method = "deleteRecord" params = { :id => id } result = self.domrobot.call(self.object, method, params) report msg, result["msg"], false end
Private Instance Methods
dns_find(fqdn)
click to toggle source
# File lib/smart_proxy_dns_inwx/dns_inwx_main.rb, line 86 def dns_find fqdn domain, name = split_fqdn(fqdn) method = "info" params = { :domain => domain, :name => name } result = self.domrobot.call(self.object, method, params) return false if result["resData"]["record"].nil? return [ result["resData"]["record"][0]["content"], result["resData"]["record"][0]["id"] ] end
report(msg, response, error_only=false)
click to toggle source
# File lib/smart_proxy_dns_inwx/dns_inwx_main.rb, line 58 def report msg, response, error_only=false if not response.include? "completed successfully" logger.error "Inwx failed:\n" + response.join("\n") msg = "Failed to #{msg}" raise Proxy::Dns::Error.new(msg) else logger.info msg unless error_only end rescue Proxy::Dns::Error raise rescue logger.error "Inwx failed:\n #{response}" raise Proxy::Dns::Error.new("Unknown error while processing '#{msg}'") end
resolver()
click to toggle source
# File lib/smart_proxy_dns_inwx/dns_inwx_main.rb, line 54 def resolver @resolver ||= Resolv::DNS.new end
split_fqdn(fqdn)
click to toggle source
# File lib/smart_proxy_dns_inwx/dns_inwx_main.rb, line 73 def split_fqdn fqdn method = "list" params = { :pagelimit => 0 } result = self.domrobot.call(self.object, method, params) result["resData"]["domains"].each do |domain| domain=domain["domain"] if fqdn.end_with?(domain) return [domain,fqdn.chomp(".#{domain}")] end end raise Proxy::Dns::Error.new("Could not find domain for host #{fqdn}") end