coredns/middleware/hosts
Pat Moroney 92dd947c51 middleware/hosts for /etc/hosts parsing (#695)
* add hosts middleware

* forgot pointer receiver

* add appropriately modified hostsfile tests from golang repo

* remove test artifacts, separate hostsfile parsing from caching and opening, remove unused metrics references, move middleware up the chain

* refactored the logic for creating records and filtering ip address versions. also got PTR lookups working

* Add README.md. Modify config to be more concise. Add zones list to config. Filter PTR responses based on zones list.

* add Fallthrough and return correct dns response code otherwise

* Simplified Hostsfile to only store hosts in the zones we care about, and by ip version. Added handler tests and improved other tests.

* oops, goimports loaded a package from a different repo
2017-06-08 20:48:04 +01:00
..
hosts.go middleware/hosts for /etc/hosts parsing (#695) 2017-06-08 20:48:04 +01:00
hosts_test.go middleware/hosts for /etc/hosts parsing (#695) 2017-06-08 20:48:04 +01:00
hostsfile.go middleware/hosts for /etc/hosts parsing (#695) 2017-06-08 20:48:04 +01:00
hostsfile_test.go middleware/hosts for /etc/hosts parsing (#695) 2017-06-08 20:48:04 +01:00
README.md middleware/hosts for /etc/hosts parsing (#695) 2017-06-08 20:48:04 +01:00
setup.go middleware/hosts for /etc/hosts parsing (#695) 2017-06-08 20:48:04 +01:00
setup_test.go middleware/hosts for /etc/hosts parsing (#695) 2017-06-08 20:48:04 +01:00

hosts

hosts enables serving zone data from a /etc/hosts style file.

The hosts middleware is useful for serving zones from a /etc/hosts file. It serves from a preloaded file that exists on disk. It checks the file for changes and updates the zones accordingly. This middleware only supports A, AAAA, and PTR records. The hosts middleware can be used with readily available hosts files that block access to advertising servers.

Syntax

hosts FILE [ZONES...] {
    fallthrough
}
  • FILE the hosts file to read and parse. If the path is relative the path from the root directive will be prepended to it. Defaults to /etc/hosts if omitted
  • ZONES zones it should be authoritative for. If empty, the zones from the configuration block are used.
  • fallthrough If zone matches and no record can be generated, pass request to the next middleware.

Examples

Load /etc/hosts file

hosts

Load example.hosts file

hosts example.hosts

Load example.hosts file and only serve example.org and example.net from it and fall through to the next middleware if query doesn't match

hosts example.hosts example.org example.net {
    fallthrough
}