Project

General

Profile

Draft 20 version of DNS API » History » Revision 14

Revision 13 (Brian Gupta, 05/09/2011 05:10 AM) → Revision 14/20 (Paul Kelly, 05/09/2011 05:54 AM)

h1. Draft 20 version of DNS API, with working notes 

 h2. Current API 

 |_.DNS | 
 |/dns|POST|Create a new DNS record|@{"fqdn":string(name/ip), "value":string(ip/reverse), "type":string(A/PTR)}@| 
 |/dns/value|DELETE|remove value(ip or reverse) DNS record|| 

 h2. Record types 

 h3. Should be implemented in next version of DNS API 

 |_.Path|_.REST Type|_.Description|_.Example Input JSON|_.Notes| 
 |/dns/zone/A|GET/POST/DELETE|A Record - Name to IPv4 address|@{"fqdn":string(name), "value":string(ip), "type":string(A)}@|Supports multiple records| 
 |/dns/zone/PTR|GET/POST/DELETE|PTR - Reverse record, IP address to Name|@{"fqdn":string(ip/ipv6), "value":string(name), "type":string(PTR)}@|Does not support multiple records| 
 |/dns/zone/CNAME|GET/POST/DELETE|CNAME - DNS Alias|@{"fqdn":string(name), "value":string(name), "type":string(CNAME)}@|Bind 9 doesn't support roundrobin cnames, so we should at first limit CNAMEs to a single record| 
 |/dns/zone/AAAA|GET/POST/DELETE|IPv6 A Record - Name to IPv6 address|@{"fqdn":string(ipv6), "value":string(name), "type":string(AAAA)}@|IPv6 address, supports multiple records| 
 |/dns/zone/TXT|GET/POST/DELETE|TXT - Text string|@{"fqdn":string(name), "value":string("arbitrary text string"), "type":string(TXT)}@|supports multiple records| 
 |/dns/zone/SPF|GET/POST/DELETE|SPF - Sender Policy Framework records|@{"fqdn":string(name), "value":string("v=spf1 a:mail.example.com -all"), "type":string(SPF)}@|supports multiple records| 
 |/dns/zone/MX|GET/POST/DELETE|MX - Mail Exchanger records|@{"fqdn":string(name), "value":integer(preference), "value":string(ip/name), "type":string(MX)}@|Needs an extra preference number field, supports multiple records| 

 h3. Deferred: 

 /dns/zone/SOA (Can not be dynamically deleted, and needs extra code to handle) 
 /dns/zone/NS (Needs manual serial number increment 
 /dns/zone/SRV (Needs more research.. Looks easy enough http://en.wikipedia.org/wiki/SRV_record, but isn't a priority yet)  

 h2. Methods 

 GET 
 POST 
 DELETE 

 h2. Ohad notes 

 GET /dns -> list of dns zones managed by that proxy 
 GET /dns/zone -> list of all zone records 
 GET /dns/zone/record_type list of all dns records with a given type, for 
 example all CNAME would be /dns/1.2.3.4/CNAME 
 GET /dns/zone/record -> details of the specific record. 

 POST /dns/zone -> creates a new record 
 DELETE /dns/zone/record -> deletes a record 

 h2. Brian notes 

 Dynamic DNS RFC http://tools.ietf.org/html/rfc2136 
 Howto: http://caunter.ca/nsupdate.txt 

 SOA: https://lists.isc.org/pipermail/bind-users/2003-November/047015.html 
 MX: http://forums.devshed.com/dns-36/using-nsupdate-to-add-an-mx-record-326788.html 
 NS: http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1304925290721+28353475&threadId=702920 

 h2. Other APIs to investigate 

 http://dyn.com/developer 
 http://docs.amazonwebservices.com/Route53/latest/APIReference/ 
 http://ns.zerigo.com/ 

 h2. DNS backends 

 NSUPDATE/BIND 
 Amazon/Route53 
 Dynect/DynDNS 
 DNSMadeEasy 
 UltraDNS 
 ActiveDirectory/Microsoft DNS 

 h3. Additional features 
 An API to retrieve the proxy's settings might be useful for consistency checks and diagnostic reasons. 
 Should foreman also be provided with the ability to push settings out into the proxies, though this might prove to be a security issue?