@tlimoncelli tlimoncelli released this Dec 19, 2018 · 7 commits to master since this release

Assets 5

New features:

  • Warn (but don't fail) if creds.json file does not exist (#425)
  • Documentation: Added brew installation method to README (#426)
  • BUGFIX: Fix SRV record handling when target is shortname (#422)
  • SECURITY: Many improvements related to LetsEncrypt (#406) (#411)
  • Verbose debug logging via the ConsolePrinter and printer package. (#404)
  • Codestyle: Fix formatting on parse_test JSON (#427)
  • OVH: Fix caching issue (#412) (#417)
  • GCLOUD: Support TXTMulti (#415)
  • BIND: Warn if output directory does not exist. (#424)
  • NAMEDOTCOM: Documented some error messages.
  • GANDI-LIVE: Document "no such zone" error.
  • DNSIMPLE: Update DNSimple-go to v0.20.0 and fix provider (#414)
  • DNSIMPLE: Fix DNSimple SRV and MX records (#413)
Assets 5

Major Features:

  • Let's Encrypt Certificate Generation! #327 Documentation
  • Refactoring of most fields in the internal representation of domains. Most code now accesses fields on records through getters and setters, which should help us maintain better consistency throughout the system. #337
  • New Provider HEXONET #373


  • Fix panic on CNAME #347


  • Fix parsing of priority field in record (fixes #367) #368

Route 53:

  • Fix corner case when deleting r53_alias records #394
  • Added token to NewStaticCredentials #401
  • Fix bug in Route 53 ALIAS record #336


  • Improve spfcache.json instructions #375
  • Clarify the when to implement certain interfaces #376
  • update documentation for Gandi to mention the LiveDNS provider #385
  • Review Maintainers of contributed providers #400
  • AWS Token options documented #403
  • Add Gandi registrar to example #335
  • Document SRV, CF*REDIRECT, and note where docs are needed. #346

Misc / Bugs:

  • convertzone produces deprecated NAMESERVER entries #363
  • Fix #339 prevent the ovh provider to panic on SPF and DKIM record types #340
  • Fix #341 do not erase all records labels #342
  • Better validate NAMESERVER format. #350
  • Update AD integration failures #353
  • fix names for internal transformed records #358
  • Include support for exists element in SPF. #356
  • Work around extra whitespace in spf records #361
  • sort returned nameservers #369
  • Add support for MX priorities of "" (0) #374
  • Include PTR types in SPF Builder #378
  • Create directories with execute permissions so they can be opened #395
  • Correctly group R53_ALIAS records during IncrementalDiff. #399
  • Add NAMESERVER_TTL and associated documentation. #398
  • update go version to 1.10 #409

Thanks to all contributors:

Oct 2, 2018
Build: Minimum Go version is now 1.10 (#409)
Can not build by go version under 1.9.
because using the strings.Builder by library.

@tlimoncelli tlimoncelli released this Mar 16, 2018 · 74 commits to master since this release

Assets 5

What an exciting release!


  • Gand v5i: Added support for the v5 API (also called "LIVEDNS")
  • OpenSRS: You can now use OpenSRS as a registrar!
  • OctoDNS Support! DNSControl now generates OctoDNS configuration files, which means you can use OctoDNS to talk to providers that DNSControl doesn't support. Users of OctoDNS will also appreciate that convertzone can read your OctoDNS zone configs and output a first draft of your dnsconfig.py.

Major refactoring! The RecordConfig struct has been reworked and that required code changes all over the place. Every provider was touched. Thanks to all the contributors for testing our changes (and fixing the bugs that were introduced by the refactoring). The benefit is that providers are now easier to write, cleaner to write, with less possibility for bugs. In the future support for new providers and DNS record types should be easier.

Major features:

  • Make IGNORE work with all providers (#313)
  • NEW REGISTRAR: OpenSRS (#275)
  • NEW PROVIDER: OctoDNS (#309)

Bugs fixed:

  • Rewrite IGNORE to use GetLabel (#331) (Fix #312)
  • Fix CAA Support: helpers.js CAA_CRITICAL flag=128 (#318) (#319)
  • DNSIMPLE: Fix DNSimple crashes on Alias: (#322)
  • GCLOUD: create-zones breaks if domain starts with digit
  • LINODE: Fix Linode provider (#333)
  • ROUTE53: R53 crashes if traffic flow policy records exist (#330)
  • ROUTE53: Fix R53_ALIAS not being registered as custom type (#310) (#311)

Code improvements:

  • Refactor RecordConfig: Add getters/setters (#314)
  • Update vendored packages (#326)
  • Switch from fmt.Error* to errors.Error* (#317)
  • Better .gitignore of integration test stuff. (#316)
  • Refactor: Prelink providers to domains (#305)
  • DNSIMPLE: dnssimple URL broke during refactor (#325)
  • GCLOUD: Differentiate two modules name dns (#328)
  • ROUTE53: Deleting wildcards doesn't work 19ca760
  • Plus a few documentation and minor bugfixes

@tlimoncelli tlimoncelli released this Jan 23, 2018 · 102 commits to master since this release

Assets 5

So many new features! New record types! Better DKIM support! Better AWS support!


  • Support for the ability to IGNORE() a label if some other system is updating it (all providers)
  • Support for very long DKIM strings. You no longer have to split them yourself.
  • Support for the new CAA record type (GANDI, CLOUDFLARE)
  • Support for TXT records with multiple strings (BIND, ROUTE53, NAMEDOTCOM)
  • Support for AWS ROUTE53 "ALIAS" records.
  • Add the ability to send notifications to chat rooms when updates are done.
  • A lot of code cleanups and documentation fixes.

Detailed list of features and bug fixes:

  • Add support for the IGNORE(label) directive (#183)
  • Simple notification framework (#297)
  • Add syntax for very long DKIM strings (#295)
  • Add general support for TXT records with multiple strings (#293)

Provider-specific news:

  • BIND: Add support for TXT records with multiple strings (#289)
  • BIND: Fix bug where SOA serial numbers were not updating
  • CLOUDFLARE: Support CAA rtype (#285)
  • DIGITALOCEAN: Improve example in docs (#281)
  • GANDI: Add support for CAA rtype (#288)
  • NAMEDOTCOM: Add support for TXT records with multiple strings (#299)
  • NAMEDOTCOM: Upgrade to v4 api (#298)
  • ROUTE53: Add support for TXT records with multiple strings (#292)
  • ROUTE53: Support Route53's ALIAS record type (#239) (#301)
  • ROUTE53: Document error messages from various credential issues. (#291)

Internal cleanups and documentation improvements:

  • Improve docs on how to add an DNS record type.
  • Many other small documentation improvements
  • "go vet" and "go lint" the entire system.
  • run helpers.js through Prettier
  • docs: Improve comments related to capabilities. (#287)
  • Update github.com/prasmussen/gandi-api to prepare for LiveDNS support. (#302)

@tlimoncelli tlimoncelli released this Dec 6, 2017 · 138 commits to master since this release

Assets 5

Another big release! Two new providers (Linode, OVH), Gandi now supports registration functions, and my favorite new feature: the SPF optimizer!

New features:

The language has changed slightly:

  • Defining a domain twice is now considered an error.
  • Labels that are FQDNs is now an error. (this is a common typo)
  • Downcase DNS names (#253). DNSControl is opinionated and we've added a new optinion: All DNS labels and targets should be lowercase. Uppercase (language permitting) is now downcased silently.

Provider-specific improvements:

  • New provider: Linode (#268)
  • New Provider: OVH DNS Provider (#143) (#175)
  • GANDI: Registrar support (#274)
  • NAMECHEAP: Rate limiting now only throttles when needed
  • NS1: Add SRV record support (#277)
  • NS1: TXT records are broken if they contain spaces (#270)
  • ROUTE53: Update aws libraries and remove "waiter" code.

Plus many code cleanups and fixes:

  • Upgrade to newest miekg/dns library
  • Rename source files that don't match the name/nameProvider.go standard. (#261)
  • Improved Namecheap documentation (#221) (#232)
  • Improved documentation: Document that creds.json can include env variables, improve Namecheap docs, improve explanation of how to write a new provider, release engineering docs, and a massive overhaul to the website docs by Patrick G

Thanks to everyone for their contributions!

@captncraig captncraig released this Oct 19, 2017 · 174 commits to master since this release

Assets 5

This release adds two new DNS providers! We now support managing domains on Namecheap, thanks to @rbelnap (was previously just a registrar), and we have Vultr support thanks to @geek1011.

Everything else is mostly a few bug fixes, and some much needed documentation cleanup from @geek1011.

Pull Requests Merged:


  • handle pagination appropriately. #242
  • Adding SRV, CAA, and ALIAS suppport #243


  • New Provider! #202


  • New Provider! #219


  • Website fixes (Part 1) #223
  • Improved consistency of provider documentation #222
  • Fixed Cloudflare docs (#221) #224
  • Fixed Active Directory docs (#221) #225
  • Improve Gandi documentation (#221) #229
  • Improve Google Cloud DNS docs (#221) #230
  • Improve NS1 documentation (#221) #233
  • Improved BIND docs (#221) #226
  • Improve softlayer documentation (#221) #235
  • Improved Name.com documentation (#221) #231
  • Improve DNSimple documentation (#221) #228
  • Improved DigitalOcean documentation (#221) #227
  • update README to include NS1 as a provider #240

Thanks to all contributors:

@tlimoncelli tlimoncelli released this Oct 2, 2017 · 197 commits to master since this release

Assets 5

So many new features!

The biggest change in this release is the new command line flag parser. The good news is that is the subcommands and flags are much more consistent and better documented. It is also much easier to add new subcommands and flags. The bad news (BREAKING CHANGE) is that some of the old command/flag names have changed, which might break bash scripts, documented procedures, etc.. WARNING: Carefully test this release with any shell scripts (especially if you use a CI system to push DNS changes) as you upgrade from v1.5 to v2.2.

A special thanks to all the contributors, especially Jamie Lennox for the SoftLayer DNS provider (#59) and Craig Peterson for the NS1 DNS provider (#63).

The SPF flattening feature is very exciting but needs more documentation.

Big changes:

  • New command line flags framework (#177)
  • Completely new docs homepage (#213)
  • Add SPF flattening feature. (#126)
  • Add TLSA record support (#165) (#203)
  • NEW PROVIDER! SoftLayer (#59)
  • NEW PROVIDER! Ns1 (#63)
  • BIND: AAAA sort better (consistent and prettier)
  • GANDI: Now supports SRV records (#192)
  • GANDI: Now works large zones and >100 domains

Other notable changes:

  • Fix GCLOUD integration test (#214)
  • Update vendored dependencies (#208)
  • Improve docker support (fix ca-certs (#211), switch to alpine (#207))
  • Pretty helpers.js (#205)
  • Create a dynamic provider features matrix (#201)
  • Document the release engineering process (#189)
  • And a lot of documentation fixes and updates.
Sep 27, 2017
testing tagging

@tlimoncelli tlimoncelli released this Aug 23, 2017 · 254 commits to master since this release

Assets 5

So many new providers and features! Plus, a new testing framework that makes it easier to add big features without fear of breaking old ones.

BREAKING CHANGE ALERT: The next release (v0.2.0) will revise the subcommands in breaking ways. This release permits flags to be before or after the subcommands. The v0.2.0 release will break this and only permit flags to be after the subcommand. Some more obscure flags will change. If you only use "push" and "preview" make sure your flags are after the subcommand and you should be fine.

Some highlights:

  • New DNS Provider: Digital Ocean (#171)
  • New DNS Provider: DNSimple provider (#43)
  • New Registrar: Route53 (#155)
  • Support PTR records on providers that support it: BIND, DNSIMPLE, GANDI, GCLOUD, ROUTE53
  • Support SRV records on providers that support it: BIND, CLOUDFLAREAPI, DIGITALOCEAN, GCLOUD, NAMEDOTCOM, ROUTE53
  • Support CAA records on providers that support it: BIND, GCLOUD
  • Support ALIAS/ANAME records on providers that support it: CLOUDFLAREAPI, NAMEDOTCOM
  • Do not permit NO_PURGE on providers that don't support it: BIND (#180)
  • PTR now handles "Classless in-addr.arpa delegation" RFC2317 (#149)
  • REV() eliminates the need to manually create in-addr.arpa names.
  • Greatly improved documentation including detailed advice on how to write providers and add new DNS record types. (#184)
  • Integration Testing framework (#46)
  • New framework to mark providers as supporting/not supporting particular features.
  • Refactor code to enhance error checking and make it easier to add new DNS record types (#157) (#163)
  • add flag to delay between domains (#101)
  • Support reading JSON instead of dnsconfig.js
  • Canonicalize IPv6 addresses. (Fixes #25) (#129)
  • Implement URL redirects via Cloudflare (#119)
  • BIND: Pick default TTL automatically for zonefiles (#109)
  • Fixed many bugs including: Punycode handling in AAAA records, better input validation,
  • NEW file: "convertzone" makes it easier to import zonefiles.