Commit graph

81 commits

Author SHA1 Message Date
Miek Gieben
09207867e4 Add missing test file and fix notify
We should not check the port of the request, we *should* actually
normalize it to port 53 - as that will probably be the address of
the server. Still need to double check if this will work if the
axfr should actually be done from a different port. That will come
later, this is good enough for now.
2016-04-07 08:03:57 +01:00
Miek Gieben
e4c72719bf Test and fix notify
More tests and add RemoteAddr to State, prolly LocalAddr will be

useful as well.

Fixed and tested IsNotify method.
2016-04-07 07:42:58 +01:00
Miek Gieben
225cdd1ca3 Add AXFR test
Test shouldTransfer by upping a testserver and sending the SOA query.

Remove state from DefaultErrorHandler and just get it from the request.

Add more logging to show what is going on.



This also adds the infrastructure for future tests.
2016-04-06 22:29:33 +01:00
Miek Gieben
7e05aa8069 Enable monitoring for non middleware
If monitoring is enabled for one zone, also enable it for when the

server reports REFUSED. Normally the metrics are only enabled if

you enter the middleware, with this you'll see REFUSED queries.

Each of these are reported agains the root zone otherwise
2016-04-06 14:13:29 +01:00
Miek Gieben
9f5e081a09 Some monitoring refactoring 2016-04-06 13:42:56 +01:00
Miek Gieben
be80bf518a And make it compile 2016-04-06 12:36:02 +01:00
Miek Gieben
ad9ddbbbd5 smaller time buckets 2016-04-06 11:34:24 +00:00
Miek Gieben
68171c7a63 A health middleware
Start http handler on port 8080 and return OK. Also add some

documentation fixes for the prometheus middleware.
2016-04-06 09:21:46 +01:00
Miek Gieben
e0c4f94d67 return failure with CH class hits file or etcd, monitoring portis 9135 2016-04-05 16:23:03 +01:00
Miek Gieben
8892a1b490 Middleware chaining fixes
For prometheus use the plain value, not a pointer and change all usages.
Allow AXFR to be requested over udp as well and some other more log
printed when commencing an AXFR.
2016-04-05 15:54:06 +01:00
Miek Gieben
c961acbb6e Add complete secondary support
Respond to notifies and allow a secondary to follow the SOA parameters

to update a zone from a primary. Also sprinkle it with logging.



Also extend monitoring to include qtype in more metrics.
2016-04-05 10:53:23 +01:00
Miek Gieben
20e16491ec Add more logging
Put some more logging in CoreDNS.
2016-04-05 07:37:05 +01:00
Miek Gieben
4c55b6732f Documentation updates
Remove placeholder for the docs inside the logs middleware and
explain response codes better.
2016-04-04 15:45:11 +00:00
Miek Gieben
20c81f54a4 Fix log test 2016-04-04 14:47:48 +00:00
Miek Gieben
6445a3f2f0 Cleanup docs and the chaos middleware
Make the CH middleware actually work. Needs a bit of a hack to route

the fake version.bind and friends zone to the correct handler. Fiddle

with the order in directive.go so that CH queries get logged as well.



Secondly add class rewriting to the rewrite middleware handler and also

log the class by default.
2016-04-04 15:45:17 +01:00
Miek Gieben
45ac2dd0c0 Small documenation updates 2016-04-04 09:10:07 +00:00
Miek Gieben
84dfdab584 Cache elements of State
Cache the size and the do bit whenever someone asked for it. We can

probably add more:



PASS

BenchmarkStateDo-4  	100000000	        11.9 ns/op

BenchmarkStateSize-4	 5000000	       265 ns/op

ok  	github.com/miekg/coredns/middleware	2.828s



PASS

BenchmarkStateDo-4  	1000000000	         2.86 ns/op

BenchmarkStateSize-4	500000000	         3.10 ns/op

ok  	github.com/miekg/coredns/middleware	5.032s



This PR also includes some testing cleanups as well.
2016-04-04 08:19:06 +01:00
Miek Gieben
7f36a853f7 Fix all the log replacers 2016-04-03 17:16:46 +01:00
Miek Gieben
dd537b163d Document log replacements
Rename latency to duration.
2016-04-03 17:05:16 +01:00
Miek Gieben
3b25bfd7ae Fix Corefile parsing
Fix some file/secondary issues when parsing a Corefile, also allow

for multiple origins to be specified. Also don't fail on startup when

a zonetransfer fails.



Fixes: #54
2016-04-03 15:52:23 +01:00
Miek Gieben
e41e8683bd prometheus: add docs and fix varz a little 2016-04-03 09:15:55 +01:00
Miek Gieben
f58f1e4285 Add secondary support
Allow specifying a primary server and retrieve the zone's content.

Add tests and an Expired bool to zone struct, to stop server zones

that are expired. The zone is retrieved on Startup, no updates of

changed content are done. We also don't respond to notifies yet.
2016-04-03 09:02:34 +01:00
Miek Gieben
7fb959470e Rename Standard to Normalize
Some doc updates and tweaks.
2016-04-03 07:44:28 +01:00
Miek Gieben
6ecbdef112 Add notifies to master servers
This adds a bunch of supporting code to send notifies to a primary

name server.
2016-04-03 07:37:41 +01:00
Miek Gieben
2adbdf34d9 Use qname/qtype for lookups
Drop the use of dns.RR when in fact the only thing we use is the name

and type of the RR. Cleans up a bunch of stuff and also stops the weird

making of dns.RRs just for a lookup. Should safe some memory as well.



Fixes: #66
2016-04-02 17:49:13 +01:00
Miek Gieben
9b21646954 empty non-terminal support
When looking for a name in tree, return wether we got to a longer one -

if so we had an ent. Add tests + dnssec tests and refactor the tests as

well a bit.
2016-04-02 16:56:16 +01:00
Matt Layher
453a8a1982 middleware: change documentation filenames to README.md 2016-04-01 18:26:18 -04:00
Miek Gieben
b915393aa0 Add Benchmark functions
Add benchmark for normal and DNSSEC lookup. We can probably shave quite
a lot of these, but first lets actually get to something that is
serving.
2016-03-31 22:10:17 +01:00
Miek Gieben
09c94fa443 Positive wildcare replies
Reply to queries when you have a wildcard in the zone. This works
for DNS and DNSSEC. Thing missing is NODATA responses for that specific
wildcard.

Add wildcard_test.go as well.
2016-03-31 21:47:44 +01:00
Miek Gieben
3591e2a6aa Add nameerror proof 2016-03-30 20:47:38 +01:00
Miek Gieben
8feef98188 Fix closest encloser 2016-03-30 20:13:48 +01:00
Miek Gieben
bf6d90600b add closest encloser stuff 2016-03-30 16:45:02 +00:00
Miek Gieben
9ba31ceb87 Think about wildcards 2016-03-30 13:26:51 +00:00
Miek Gieben
ec69798ca2 Add the nsecs for nxdomain 2016-03-30 13:26:51 +00:00
Miek Gieben
b67ecb3e55 More nameerror stuff 2016-03-30 13:26:51 +00:00
Miek Gieben
b4242a7d5d fixes and a wildcard test file as well 2016-03-30 13:25:45 +00:00
Miek Gieben
4be4d92ccb Fix positive replies 2016-03-30 13:25:45 +00:00
Miek Gieben
547a4ab2a8 More stuff 2016-03-30 13:25:45 +00:00
Miek Gieben
48f7d55f27 Get positive dnssec stuff going 2016-03-30 13:25:45 +00:00
Miek Gieben
162dca6eeb Add canonical sorting
Add a low-allocation canonical sorting function that can be used in
middleware.

This implements the tests from rfc4034 correctly.
2016-03-30 13:12:27 +00:00
Miek Gieben
e56d206542 Support outgoing zone transfers
These can be enabled by adding "transfer out" to the Corefile. Without
it no AXFR is allowed.

For now only AXFR and no IXFR. No TSIG and no ACLs.
2016-03-28 18:23:17 +01:00
Miek Gieben
6324bb1fa7 Scrub the returned result 2016-03-28 11:29:50 +01:00
Miek Gieben
3541bc8b2a Add DNSSEC test already; but disable it 2016-03-28 11:28:47 +01:00
Miek Gieben
6eae17b0bd Add testing package
This already includes a bunch of helper functions that aid in testing.
Factor out etcd and file testing to use this package.

Fixes: #50
2016-03-28 10:49:28 +01:00
Miek Gieben
5a919198ac Merge pull request #45 from miekg/etcd-stub
Etcd stub
2016-03-28 10:18:08 +01:00
Miek Gieben
5387c162c9 Implement a DNS zone
Full implementation, DNS (and in the future DNSSEC). Returns answer in a
hopefully standards compliant way.
Testing with my miek.nl zone are included as well.
This should correctly handle nodata, nxdomain and cnames.
2016-03-28 10:15:05 +01:00
Miek Gieben
7a4ca687a2 Fix docs 2016-03-26 16:32:36 +00:00
Miek Gieben
ebef64280a Support SkyDNS' stubzones
This implements stubzones in the same way as SkyDNS. This
also works with multiple configured domains and has tests.
Also add more configuration parameters for TLS and path prefix and
enabling stubzones.  Run StubUpdates as a startup command to keep up to
date with the list in etcd.
2016-03-26 16:29:35 +00:00
Miek Gieben
b2c221c9cd Add test for CNAME ordering
Add a test for SkyDNS':
https://github.com/skynetservices/skydns/issues/217

Put the CNAME in front for both answer and extra sections. Note that
the etcd middleware seems to already to the correct thing though.
2016-03-26 13:26:46 +00:00
Miek Gieben
90f73c50cf Add Scrub function
This function will make the message fit for the client's buffer, or
set the TC bit.
2016-03-26 09:26:54 +00:00