class Proxy::Dns::Route53::Record
Attributes
aws_access_key[R]
aws_secret_key[R]
Public Class Methods
new(aws_access_key, aws_secret_key, ttl = nil)
click to toggle source
Calls superclass method
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 13 def initialize(aws_access_key, aws_secret_key, ttl = nil) @aws_access_key = aws_access_key @aws_secret_key = aws_secret_key super(nil, ttl) end
Public Instance Methods
create_a_record(fqdn, ip)
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 19 def create_a_record(fqdn, ip) case a_record_conflicts(fqdn, ip) #returns -1, 0, 1 when 1 then raise(Proxy::Dns::Collision, "#{fqdn} is already used by #{ip}") when 0 then return nil else zone = get_zone(fqdn) new_record = Route53::DNSRecord.new(fqdn, 'A', ttl, [ip], zone) resp = new_record.create raise "AWS Response Error: #{resp}" if resp.error? true end end
create_aaaa_record(fqdn, ip)
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 34 def create_aaaa_record(fqdn, ip) case aaaa_record_conflicts(fqdn, ip) #returns -1, 0, 1 when 1 then raise(Proxy::Dns::Collision, "#{fqdn} is already used by #{ip}") when 0 then return nil else zone = get_zone(fqdn) new_record = Route53::DNSRecord.new(fqdn, 'AAAA', ttl, [ip], zone) resp = new_record.create raise "AWS Response Error: #{resp}" if resp.error? true end end
create_ptr_record(fqdn, ptr)
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 49 def create_ptr_record(fqdn, ptr) case ptr_record_conflicts(fqdn, ptr_to_ip(ptr)) #returns -1, 0, 1 when 1 then raise(Proxy::Dns::Collision, "#{ptr} is already in use") when 0 then return nil else zone = get_zone(ptr) new_record = Route53::DNSRecord.new(ptr, 'PTR', ttl, [fqdn], zone) resp = new_record.create raise "AWS Response Error: #{resp}" if resp.error? true end end
remove_a_record(fqdn)
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 64 def remove_a_record(fqdn) zone = get_zone(fqdn) recordset = zone.get_records recordset.each do |rec| if rec.name == fqdn + '.' && rec.type == 'A' resp = rec.delete raise "AWS Response Error: #{resp}" if resp.error? return true end end raise Proxy::Dns::NotFound, "Could not find forward record #{fqdn}" end
remove_aaaa_record(fqdn)
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 77 def remove_aaaa_record(fqdn) zone = get_zone(fqdn) recordset = zone.get_records recordset.each do |rec| if rec.name == fqdn + '.' && rec.type == 'AAAA' resp = rec.delete raise "AWS Response Error: #{resp}" if resp.error? return true end end raise Proxy::Dns::NotFound, "Could not find forward record #{fqdn}" end
remove_ptr_record(ip)
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 90 def remove_ptr_record(ip) zone = get_zone(ip) recordset = zone.get_records recordset.each do |rec| if rec.name == ip + '.' resp = rec.delete raise "AWS Response Error: #{resp}" if resp.error? return true end end raise Proxy::Dns::NotFound, "Could not find reverse record #{ip}" end
Private Instance Methods
conn()
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 105 def conn @conn ||= Route53::Connection.new(aws_access_key, aws_secret_key) end
get_zone(name)
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 113 def get_zone(name) zones = conn.get_zones name_arr = name.split('.') (1 ... name_arr.size).each do |i| search_domain = name_arr.last(name_arr.size - i).join('.') + "." zone_select = zones.select { |z| z.name == search_domain } return zone_select.first if zone_select.any? end end
resolver()
click to toggle source
# File lib/smart_proxy_dns_route53/dns_route53_main.rb, line 109 def resolver @resolver ||= Resolv::DNS.new end