This is a utility to update a cloudflare zone based on a bind-style zone file.
Only A
, AAAA
, CNAME
, MX
, and TXT
records are supported.
Cloudflare supported record types LOC
, NS
, SRV
, SPF
and CAA
are not
currently supported.
Flags exist to skip SRV
and SPF
types.
Cloudflare supports (at least) two modes not easily representable in a BIND zone. To support these features a few magic TTL values are used.
TTL | Status |
---|---|
-autottl (0) | Automatic TTL, DNS only |
-cachettl (1) | Automatic TTL, DNS and HTTP proxy (CDN) |
Other values | Set as TTL, DNS only |
Pull requests welcome :-)
cfzone need two environment variables:
CF_API_KEY
- Your API key from CloudflareCF_API_EMAIL
- Your Cloudflare email address.
Run cfzone as with the following command:
cfzone [-leaveunknown] [-yes] <zonefile>
Available optional flags:
Flag | Description |
---|---|
-leaveunknown |
Don't delete unknown records |
-yes |
will cause cfzone to continue syncing without confirmation. |
-autottl <int> |
Specify the TTL to interpret as 'Auto' for Cloudflare (default 0) |
-cachettl <int> |
Specify the TTL to interpret as 'Cache' for Cloufdlare (default 1) |
-ignorespf |
Skip SPF records in the BIND zone file rather than erroring |
-ignoresrv |
Skip SRV records in the BIND zone file rather than erroring |
-origin |
Specify zone origin to resolve @ at the top level |
You'll need a working Go environment to build cfzone.
go get github.com/cego/cfzone
should retrieve the source code, build it and
place the binary in $GOPATH/bin/cfzone
.