class Proxy::Dns::Powerdns::Record

Attributes

pdnssec[R]

Public Class Methods

new(a_server, a_ttl, pdnssec = nil) click to toggle source
Calls superclass method
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 11
def initialize(a_server, a_ttl, pdnssec = nil)
  @pdnssec = pdnssec
  super(a_server, a_ttl)
end

Public Instance Methods

create_a_record(fqdn, ip) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 16
def create_a_record(fqdn, ip)
  case a_record_conflicts(fqdn, ip)
  when 1
    raise(Proxy::Dns::Collision, "'#{fqdn} 'is already in use")
  when 0 then
    return nil
  else
    do_create(fqdn, ip, "A")
  end
end
create_aaaa_record(fqdn, ip) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 27
def create_aaaa_record(fqdn, ip)
  case aaaa_record_conflicts(fqdn, ip)
  when 1
    raise(Proxy::Dns::Collision, "'#{fqdn} 'is already in use")
  when 0 then
    return nil
  else
    do_create(fqdn, ip, "AAAA")
  end
end
create_cname_record(fqdn, target) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 38
def create_cname_record(fqdn, target)
  case cname_record_conflicts(fqdn, target)
  when 1 then
    raise(Proxy::Dns::Collision, "'#{fqdn} 'is already in use")
  when 0 then
    return nil
  else
    do_create(fqdn, target, "CNAME")
  end
end
create_ptr_record(fqdn, ptr) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 49
def create_ptr_record(fqdn, ptr)
  case ptr_record_conflicts(fqdn, ptr_to_ip(ptr))
  when 1
    raise(Proxy::Dns::Collision, "'#{fqdn} 'is already in use")
  when 0 then
    return nil
  else
    do_create(ptr, fqdn, "PTR")
  end
end
create_record(domain_id, name, type, content) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 97
def create_record(domain_id, name, type, content)
  # TODO: backend specific
  false
end
delete_record(domain_id, name, type) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 102
def delete_record(domain_id, name, type)
  # TODO: backend specific
  false
end
do_create(name, value, type) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 60
def do_create(name, value, type)
  zone = get_zone(name)
  unless create_record(zone['id'], name, type, value) and rectify_zone(zone['name'])
    raise Proxy::Dns::Error.new("Failed to create record #{name} #{type} #{value}")
  end
  true
end
do_remove(name, type) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 84
def do_remove(name, type)
  zone = get_zone(name)
  if delete_record(zone['id'], name, type)
    raise Proxy::Dns::Error.new("Failed to remove record #{name} #{type}") unless rectify_zone(zone['name'])
  end
  true
end
get_zone(fqdn) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 92
def get_zone(fqdn)
  # TODO: backend specific
  raise Proxy::Dns::Error, "Unable to determine zone. Zone must exist in PowerDNS."
end
rectify_zone(domain) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 107
def rectify_zone domain
  if @pdnssec
    %x(#{@pdnssec} rectify-zone "#{domain}")

    $?.exitstatus == 0
  else
    true
  end
end
remove_a_record(fqdn) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 68
def remove_a_record(fqdn)
  do_remove(fqdn, "A")
end
remove_aaaa_record(fqdn) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 72
def remove_aaaa_record(fqdn)
  do_remove(fqdn, "AAAA")
end
remove_cname_record(fqdn) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 76
def remove_cname_record(fqdn)
  do_remove(fqdn, "CNAME")
end
remove_ptr_record(ptr) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 80
def remove_ptr_record(ptr)
  do_remove(ptr, "PTR")
end