class Proxy::Dns::Powerdns::Record

Attributes

pdnssec[R]

Public Class Methods

new(a_server = nil, a_ttl = nil) click to toggle source
Calls superclass method
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 12
def initialize(a_server = nil, a_ttl = nil)
  @pdnssec = Proxy::Dns::Powerdns::Plugin.settings.powerdns_pdnssec
  super(a_server, a_ttl || Proxy::Dns::Plugin.settings.dns_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 17
def create_a_record(fqdn, ip)
  if found = dns_find(fqdn)
    raise Proxy::Dns::Collision, "#{fqdn} is already in use by #{ip}" unless found == ip
  end

  do_create(fqdn, ip, "A")
end
create_ptr_record(fqdn, value) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 25
def create_ptr_record(fqdn, value)
  if found = dns_find(value)
    raise Proxy::Dns::Collision, "#{value} is already in use by #{found}" unless found == fqdn
  end

  do_create(value, fqdn, "PTR")
end
create_record(domain_id, name, type, content) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 56
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 61
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 33
def do_create(name, value, type)
  zone = get_zone(name)
  create_record(zone['id'], name, type, value) and rectify_zone(zone['name'])
end
do_remove(name, type) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 46
def do_remove(name, type)
  zone = get_zone(name)
  delete_record(zone['id'], name, type) and rectify_zone(zone['name'])
end
get_zone(fqdn) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 51
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 66
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 38
def remove_a_record(fqdn)
  do_remove(fqdn, "A")
end
remove_ptr_record(name) click to toggle source
# File lib/smart_proxy_dns_powerdns/dns_powerdns_main.rb, line 42
def remove_ptr_record(name)
  do_remove(name, "PTR")
end