Development

Development Commands

# install external gem dependencies firstbundleinstall# run all tests and build code coveragebundleexecraketest# hints where to improve docsbundleexecinch# watch for changes and run development commands (tests, documentation, etc)bundleexecguard

TODO

Must have

[x]AbilitytoloadazonemadeofmultipleRR's
[x] Add support for RR Type: SOA
[x] Add support for RR Type: NS
[x] Add support for RR Type: MX
[x] Add support for RR Type: AAAA
[x] Add support for RR Type: A
[x] Add support for RR Type: CNAME
[x] Add support for RR Type: TXT
[x] Add support for RR Type: SRV
[x] Add support for RR Type: PTR
[x] Add support for RR Type: SPF
[x] Add support for RR Type: HINFO
[x] Support loading zone where some records have an empty label

Would be nice

[]Handleparsingazonefilethatusesmorethenone$ORIGINdirective.[]Basicvalidation,errorchecking:[]OnlyoneSOAperzone.[]CNAMEscan't use a label of `@`.
[ ] PTR zones have some extra conditions:
[ ] labels cant be repeted
[ ] names should end in a dot, otherwise they are invalid after expansion
[ ] IPv4 and IPv6 cant be mixed
[ ] Ability to 'include' defaults/records into a zone.
This may or may not mean supporting the `$INCLUDE` directive.

Notes

RR Format: [<TTL>] [<class>] <type> <RDATA>

A DNS zone is built from RR's and a couple of other special directives.

If zone file does not include $ORIGIN, it will be inferred by the zone "<zone-name>" {} clause from bind.conf
In general we should always explicitly define an $ORIGIN directive unless there is a very good reason not to.