Commit graph

302 commits

Author SHA1 Message Date
Miek Gieben
94dc28646d golint 2016-10-27 11:48:37 +00:00
Jonathan Dickinson
7ce7100122 - Adding tests for MX round-robin (#358)
- Implementing MX round-robin
- Slight tidy
2016-10-27 08:09:16 +01:00
Miek Gieben
219bfd0493 middleware/metrics: cleanup (#355)
* middleware/metrics: add more metrics

middleware/cache:
Add metrics for number of elements in the cache. Also export the total
size. Update README to detail the new metrics.

middleware/metrics

Move metrics into subpackage called "vars". This breaks the import
cycle and is cleaner. This allows vars.Report to be used in the
the dnsserver to log refused queries.

middleware/metrics: tests

Add tests to the metrics framework. The metrics/test subpackage allows
scraping of the local server. Do a few test scrape of the metrics that
are defined in the metrics middleware.

This also allows metrics integration tests to check if the caching and
dnssec middleware export their metrics correctly.

* update README

* typos

* fix tests
2016-10-26 10:01:52 +01:00
John Belamaric
6d9d60081d Add option to parse resolv.conf for proxy upstreams (#353)
* Add option to parse resolv.conf for proxy upstreams

* Add test and README update for resolv.conf proxy

* Run gofmt
2016-10-22 15:52:10 +01:00
John Belamaric
14dc376ee7 Enable use of a service account in-cluster. (#349) 2016-10-19 22:04:35 +01:00
Miek Gieben
4f36e63a05 middleware/file: fix DS handling (#344)
The DS record is handled specially in the server ServeDNS mux, but there
was no code that actually called the correct middleware handler chain
when encountering a DS.

This PR fixes that behavoir, additonal bugs has been files to look into
how we are handling delegation (secure and non-secure ones).
2016-10-19 17:46:03 +01:00
Yong Tang
ad7e78ec31 Add cache_capacity option to dnssec middleware for the capacity of LRU cache (#339)
This fix adds a `cache_capacity` option to dnssec middleware, so that
it is possible to specify the capacity of the LRU cache used by dnssec
middleware.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2016-10-18 13:33:23 -07:00
Miek Gieben
a6b033a936 We dont support log rotation anymore 2016-10-18 07:03:51 +01:00
Yong Tang
7843a2bd91 Small golint cleanup. (#338)
A small golint cleanup.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2016-10-17 16:59:12 -07:00
Miek Gieben
d536272201 middleware/auto: add (#333)
Add auto-load middleware that automatically picks up zones.

Every X seconds it will scan for new zones.
Add tests and documentation.

Make 'make test' use -race.
2016-10-17 18:37:56 +01:00
Zhipeng JIANG
2eafe3ee94 Fix files reload failure within a single root zone. (#337)
In the file middleware, if there are multiple zone files under a single root zone, watchers are only invoked on the last element of `zones.Names`. This is caused by loop override on the variable `n`.

This issue can be fixed by passing zone object, which calls reload watcher directly.
2016-10-17 17:04:18 +01:00
Yong Tang
58387afd5d Replace go-cache with golang-lru in dnssec (#336)
* Replace go-cache with golang-lru

This fix replace go-cache with golang-lru, as is specified in 335.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>

* Move cache initialization to setup

This commit move cache initialization to setup in dnssec middleware.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2016-10-17 13:04:36 +01:00
Miek Gieben
03bc071774 Check for empty message in typify 2016-10-17 10:26:24 +00:00
Miek Gieben
be3c0195b6 middleware.md: put in the same doc
Move middleware/middleware.md to middleware.md. This should be the
canonical place where to document how middlewares should look and act.
2016-10-17 07:51:44 +01:00
Yong Tang
a69e88db62 Add needed comments for golint cleanup. (#334)
This fix adds several needed comments in
`middleware/kubernetes/nametemplate/nametemplate.go`
to clean up golint output.

There are still 3 places that needs proper docs:
```
middleware/kubernetes/nametemplate/nametemplate.go:64:1: comment on exported type Template should be of the form "Template ..." (with optional leading article)
middleware/kubernetes/nametemplate/nametemplate.go:72:1: comment on exported method Template.SetTemplate should be of the form "SetTemplate ..."
middleware/kubernetes/nametemplate/nametemplate.go:188:1: comment on exported type NameValues should be of the form "NameValues ..." (with optional leading article)
```

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2016-10-14 16:28:15 -07:00
Miek Gieben
aa7744dc86 cleanups: go vet/golint (#331)
Go vet and golint the new code once again.

Drop Name from NameTemplate - it's cleaner: nametemplate.Template.
2016-10-12 12:46:35 +01:00
Miek Gieben
710c9b111f middleware/root: add it (#330)
This PR adds the *root* middleware that specifies a path where
all zone file (the *file* middleware is the only consumer now) can
be found. It works the same as in Caddy.

Documentation can be found in the README.md of the middleware.

Fixes #307
2016-10-11 20:42:28 +01:00
Yong Tang
baea5eef2f Add a unit test for DuplicateCNAME (#329)
This fix adds a unit test for DuplicateCNAME to have
a basic coverage for dnsutil.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2016-10-11 20:25:50 +01:00
Yong Tang
f3066b9463 Add unit tests for ExtractAddressFromReverse (#328)
This fix adds unit tests for `ExtractAddressFromReverse`. It also
updates the implementation of `ExtractAddressFromReverse` so that
only a valid IPv4 or IPv6 address (in string format) is returned.

If the addresses is not valid and can not be handled by golang's
`net.ParseIP` then an empty string (`""`) will be returned.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2016-10-11 09:48:15 +01:00
Miek Gieben
faf83b00dd docs: rewrite using manpage style (#327)
This still needs cleanup, but this is a first pass the cleans some
cruft and documents our style (in middleware.md) and makes all the
docs match that style.
2016-10-10 20:13:22 +01:00
Miek Gieben
c22b7b2252 middleware/log: allows logging based on response classes (#325)
Add the ability to add a class of responses to be logged; success,
denial or error. The default is to log everything (all).

Fixes #258
2016-10-10 12:09:29 +01:00
Miek Gieben
caa3976bfe middlewate/etc: fix test here as well
Make tests compile; failed to catch this due to use of tags for this
part of the (test) code.
2016-10-08 18:19:42 +01:00
Miek Gieben
99cd11c2d4 Add secondary test 2016-10-08 18:06:28 +01:00
Miek Gieben
e8b4412564 tests: clean up output
Some document improvements and add a few more tests.
2016-10-08 16:44:43 +01:00
Miek Gieben
e43384b501 middleware/file: proper support for wildcard (#323)
Add support for wildcard records, while taking care of wildcard-cnames
and DNSSEC. Add enough tests to check all the corner cases.
2016-10-08 15:22:31 +01:00
Miek Gieben
b44d82839f middleware/cache: rename categories (#321)
Rename: positive -> success
negative -> denial

There is a third (unused category) which is error. Start using these
new in the caching middleware and later in the logging middleware.
2016-10-08 15:12:28 +01:00
Miek Gieben
a05901f62a middleware/proxy: make it scale (#287)
* middleware/proxy

Use connection pooling for communicating with an upstream, instead of
opening a new socket every time.

This makes the proxy more efficient and allowed for some cleanups.

* Some cleanups

* Some fixes

* more

* Kill pool

* Add nil check

* remove pool
2016-10-08 14:46:22 +01:00
Miek Gieben
db6c9a3f01 middleware/metrics: fix crash on startup (#318)
Make the methods that handle Metrics all use pointer receivers to fix
sync.Once not being initialized.

Finish the setup_test to test for failures. And make the check for the
address more strict and return an error when it does not have a port
number.

Add a toplevel test that starts a CoreDNS server with metrics enabled
so we catch these errors in the future.
2016-10-04 11:05:04 +01:00
Yong Tang
d914832904 Fix a typo (#315)
This fix fixes a typo in middle/cache/README.md:
`1 hours` => `1 hour`

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2016-10-03 07:21:24 +01:00
Miek Gieben
cc486fb900 middleware/file: transfer from does not make sense (#314)
Make it return an error when you use `transfer from` when you're
not a secondary.

Add tests as well.

Fixes #310
2016-10-02 19:41:00 +01:00
Miek Gieben
4096c4906d Pr 311 2 (#312)
* Add a setup test for middleware/file

This fix adds a setup test for middleware/file so that there is
a basic coverage for the Corefile processing of middleware/file.

This fix is related to 308 (Will look into it).

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>

* middleware/file: use helper function for test

Fixup setup_test.go and use the test.TempFile function to make things
somewhat shorter.

Use clean up the use of testing.T in TempFile - it is not used.
2016-10-02 15:58:01 +01:00
Miek Gieben
e54c232c8c middleware/cache: split cache in positive and negative and use lru (#298)
Make the cache memory bounded, by using a LRU cache. Also split the
cache in a positive and negative one - each with its own controls.

Extend the cache stanza to allow for this:

    cache {
       positive limit [ttl]
       negative limit [ttl]
    }

is now possible. This also add a cache_test.go in the toplevel test/
directory that exercises the caching path.

Fixes #260
2016-10-02 08:31:44 +01:00
Miek Gieben
77947fd51a middleware/etcd: add setup_test.go (#304)
Add tests for parsing etcd Corefile stanza. Discover a bug in the code,
fix that as well.
2016-09-26 14:43:38 +01:00
Miek Gieben
de0fa53379 Doc: add package docs (#296)
* Doc: add package docs

Add short package level docs to make godoc looks nicer.
Add some badges to the README.

* correct url
2016-09-25 08:39:20 +01:00
Miek Gieben
edc867fe56 middleware/metrics: fix crash (#295)
Fix the crash and add `setup_test.go` to catch this in the future.

Fixes #292
2016-09-24 22:47:38 +01:00
Silas Baronda
ec485a74d3 Nil SOA causes panic if we compare it to incoming SOA (#291) 2016-09-24 15:51:20 +01:00
Chris O'Haver
15297c8e63 Add TLS support for k8s middleware (#289)
* Added TLS to k8s client

Added options for TLS kubernetes client connection.

* Fix k8s TLS config option parsing

Brings config option parsing for kubernetes TLS in line with recent changes.

* Put TLS config on one line

Put kubernetes tls config on one line to match style established in etcd tls config.

* Add tls option to README
2016-09-23 23:07:06 +01:00
Yong Tang
b9cf32f7a9 Golint middleware/proxy (#290)
While looking into the proxy middleware it appears that there are
several golint messages:
```
ubuntu@ubuntu:~/coredns$ golint middleware/proxy/
middleware/proxy/lookup.go:66:1: exported method Proxy.Forward should have comment or be unexported
middleware/proxy/proxy.go:24:6: exported type Client should have comment or be unexported
middleware/proxy/proxy.go:107:1: exported function Clients should have comment or be unexported
middleware/proxy/reverseproxy.go:10:6: exported type ReverseProxy should have comment or be unexported
middleware/proxy/reverseproxy.go:16:1: exported method ReverseProxy.ServeDNS should have comment or be unexported
middleware/proxy/upstream.go:42:6: exported type Options should have comment or be unexported
```

This fix addressed the above golint messages.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2016-09-23 23:00:50 +01:00
Manuel de Brito Fontes
1810e21b9a Lint k8s middleware 2016-09-23 11:08:23 -03:00
Manuel de Brito Fontes
8e6257c51f Lister refactor kubernetes/kubernetes#33269 2016-09-23 10:23:11 -03:00
Manuel de Brito Fontes
6e0944eb98 Remove unused const block 2016-09-23 10:03:43 -03:00
Manuel de Brito Fontes
2b62384223 Refactoring of k8s helpers 2016-09-23 09:48:11 -03:00
Miek Gieben
090d1872e9 Golint2 (#280)
* Fix linter errors

* More linting fixes

* More docs and making members private that dont need to be public

* Fix linter errors

* More linting fixes

* More docs and making members private that dont need to be public

* More lint fixes

This leaves:

~~~
middleware/kubernetes/nametemplate/nametemplate.go:64:6: exported type NameTemplate should have comment or be unexported
middleware/kubernetes/nametemplate/nametemplate.go:71:1: exported method NameTemplate.SetTemplate should have comment or be unexported
middleware/kubernetes/nametemplate/nametemplate.go:108:1: exported method NameTemplate.GetZoneFromSegmentArray should have comment or be unexported
middleware/kubernetes/nametemplate/nametemplate.go:116:1: exported method NameTemplate.GetNamespaceFromSegmentArray should have comment or be unexported
middleware/kubernetes/nametemplate/nametemplate.go:120:1: exported method NameTemplate.GetServiceFromSegmentArray should have comment or be unexported
middleware/kubernetes/nametemplate/nametemplate.go:124:1: exported method NameTemplate.GetTypeFromSegmentArray should have comment or be unexported
middleware/kubernetes/nametemplate/nametemplate.go:135:1: exported method NameTemplate.GetSymbolFromSegmentArray should have comment or be unexported
middleware/kubernetes/nametemplate/nametemplate.go:167:1: exported method NameTemplate.IsValid should have comment or be unexported
middleware/kubernetes/nametemplate/nametemplate.go:182:6: exported type NameValues should have comment or be unexported
middleware/kubernetes/util/util.go:1:1: package comment should be of the form "Package util ..."
middleware/kubernetes/util/util.go:27:2: exported const WildcardStar should have comment (or a comment on this block) or be unexported
middleware/proxy/lookup.go:66:1: exported method Proxy.Forward should have comment or be unexported
middleware/proxy/proxy.go:24:6: exported type Client should have comment or be unexported
middleware/proxy/proxy.go:107:1: exported function Clients should have comment or be unexported
middleware/proxy/reverseproxy.go:10:6: exported type ReverseProxy should have comment or be unexported
middleware/proxy/reverseproxy.go:16:1: exported method ReverseProxy.ServeDNS should have comment or be unexported
middleware/proxy/upstream.go:42:6: exported type Options should have comment or be unexported
~~~

I plan on reworking the proxy anyway, so I'll leave that be.
2016-09-23 09:14:12 +01:00
Manuel de Brito Fontes
3be9e58ddf Revert k8s changes 2016-09-22 08:29:50 -03:00
Manuel Alejandro de Brito Fontes
d250742d9e Fix k8s build (#278) 2016-09-21 20:05:18 +01:00
Miek Gieben
5301c5af5f Run golint and go vet (#276)
Cleanup the errors and removed deadcode along the way. The leaves
some error laying around, mostly about commenting exported identifier.
We should look hard if those really are needed.
2016-09-21 17:01:19 +01:00
Miek Gieben
8555716046 Cleanups and tests (#272)
For some reasons there was a dnsserver/middleware.go that defined
the middleware handlers. This code was a repeat from
middleware/middleware.go. Removed dnsserver/middleware.go and replaced
all uses of dnsserver.Middleware with middleware.Middleware.

Added dnsserver/address_test.go to test the zone normalization (and to
improve the test coverage). The deleted file will also improve the test
coverage :)
2016-09-19 11:26:00 +01:00
Shawn Smith
1decf52cb2 fix typo (#268) 2016-09-18 15:33:09 +01:00
Miek Gieben
b440b1c8f6 docs: document default startup (#266)
Some small additions to the documentation.
2016-09-18 09:32:06 +01:00
Miek Gieben
80b22a5071 middleware/whois: hook it up
Hook it up properly by adding it to the directives list. And add
the Target to the SRV record to actually return valid DNS messages.
2016-09-17 17:50:16 +01:00