aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml1
-rw-r--r--README.md21
-rw-r--r--core/caddy.go4
-rw-r--r--core/parse/parsing.go9
4 files changed, 25 insertions, 10 deletions
diff --git a/.travis.yml b/.travis.yml
index 5f16201cf..f3cabe893 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,6 +3,7 @@ go:
- 1.5
- 1.6
before_script:
+ - go get
- go get github.com/coreos/etcd
- go get github.com/coreos/go-etcd/etcd
- go build -o $HOME/gopath/src/github.com/coreos/etcd/etcd.run github.com/coreos/etcd
diff --git a/README.md b/README.md
index 313939431..083b4c58f 100644
--- a/README.md
+++ b/README.md
@@ -5,26 +5,32 @@ same model: it chains middleware.
## Status
+I'm using CoreDNS is my primary, authoritative, nameserver for my domains (`miek.nl`, `atoom.net`
+and a few others). CoreDNS should be stable enough to provide you with a good DNS service.
+
Currently CoreDNS is able to:
-* Serve zone data from a file, both DNSSEC (NSEC only atm) and DNS is supported.
+* Serve zone data from a file, both DNSSEC (NSEC only atm) and DNS is supported. Delegation are
+ *not* supported as yet.
* Retrieve zone data from primaries, i.e. act as a secondary server.
* Allow for zone transfers, i.e. act as a primary server.
-* Use Etcd as a backend, i.e. a 90% replacement for
+* Use Etcd as a backend, i.e. a 92% replacement for
[SkyDNS](https://github.com/skynetservices/skydns).
* Serve as a proxy to forward queries to some other (recursive) nameserver.
* Rewrite queries (both qtype, qclass and qname).
-* Provide metrics (by using Prometheus)
+* Provide metrics (by using Prometheus).
* Provide Logging.
+* Provide load-balancing of returned responses.
+* Has support for the CH class: `version.bind` and friends.
There are corner cases not implemented and a few [issues](https://github.com/miekg/coredns/issues).
But all in all, CoreDNS should already be able to provide you with enough functionality to replace
parts of BIND9, Knot, NSD or PowerDNS.
-However CoreDNS is still in the early stages of development and should **not** be used on production
-servers yet. For now most documentation is in the source and some blog articles can be [found
-here](https://miek.nl/tags/coredns/). If you do want to use CoreDNS in production, please let us
-know and how we can help.
+
+However CoreDNS is still in the early stages of development. For now most documentation is in the
+source and some blog articles can be [found here](https://miek.nl/tags/coredns/). If you do want to
+use CoreDNS in production, please let us know and how we can help.
<https://caddyserver.com/> is also full of examples on how to structure a Corefile (renamed from
Caddyfile when I forked it).
@@ -64,7 +70,6 @@ nameserver *and* rewrite ANY queries to HINFO.
~~~ txt
.:1053 {
rewrite ANY HINFO
-
proxy . 8.8.8.8:53
file /var/lib/bind/miek.nl.signed miek.nl {
diff --git a/core/caddy.go b/core/caddy.go
index df84e679a..5b336a77e 100644
--- a/core/caddy.go
+++ b/core/caddy.go
@@ -390,8 +390,8 @@ type Input interface {
}
// TestServer returns a test server.
-// The port can be retreived with ... . The testserver itself can be stopped
-// with Stop(). It just takes a normal Corefile input, but doesn't use the port.
+// The ports can be retreived with server.LocalAddr(). The testserver itself can be stopped
+// with Stop(). It just takes a normal Corefile as input.
func TestServer(t *testing.T, corefile string) (*server.Server, error) {
cdyfile := CaddyfileInput{Contents: []byte(corefile)}
diff --git a/core/parse/parsing.go b/core/parse/parsing.go
index 6e73bd584..712695b22 100644
--- a/core/parse/parsing.go
+++ b/core/parse/parsing.go
@@ -1,6 +1,7 @@
package parse
import (
+ "fmt"
"net"
"os"
"path/filepath"
@@ -320,6 +321,14 @@ func standardAddress(str string) (address, error) {
// no error check here; return err at end of function
}
+ if len(host) > 255 {
+ return address{}, fmt.Errorf("specified address is too long: %d > 255", len(host))
+ }
+ _, d := dns.IsDomainName(host)
+ if !d {
+ return address{}, fmt.Errorf("host is not a valid domain: %s", host)
+ }
+
// see if we can set port based off scheme
if port == "" {
port = "53"