mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 08:14:18 -04:00
Use IsDomainName (#119)
Liberal as it as it still has its use. Reject invalid domain names in the config. Unrelated: clear up the README as well. And fix travis script.
This commit is contained in:
@@ -3,6 +3,7 @@ go:
|
|||||||
- 1.5
|
- 1.5
|
||||||
- 1.6
|
- 1.6
|
||||||
before_script:
|
before_script:
|
||||||
|
- go get
|
||||||
- go get github.com/coreos/etcd
|
- go get github.com/coreos/etcd
|
||||||
- go get github.com/coreos/go-etcd/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
|
- go build -o $HOME/gopath/src/github.com/coreos/etcd/etcd.run github.com/coreos/etcd
|
||||||
|
|||||||
21
README.md
21
README.md
@@ -5,26 +5,32 @@ same model: it chains middleware.
|
|||||||
|
|
||||||
## Status
|
## 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:
|
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.
|
* Retrieve zone data from primaries, i.e. act as a secondary server.
|
||||||
* Allow for zone transfers, i.e. act as a primary 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).
|
[SkyDNS](https://github.com/skynetservices/skydns).
|
||||||
* Serve as a proxy to forward queries to some other (recursive) nameserver.
|
* Serve as a proxy to forward queries to some other (recursive) nameserver.
|
||||||
* Rewrite queries (both qtype, qclass and qname).
|
* Rewrite queries (both qtype, qclass and qname).
|
||||||
* Provide metrics (by using Prometheus)
|
* Provide metrics (by using Prometheus).
|
||||||
* Provide Logging.
|
* 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).
|
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
|
But all in all, CoreDNS should already be able to provide you with enough functionality to replace
|
||||||
parts of BIND9, Knot, NSD or PowerDNS.
|
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
|
However CoreDNS is still in the early stages of development. For now most documentation is in the
|
||||||
here](https://miek.nl/tags/coredns/). If you do want to use CoreDNS in production, please let us
|
source and some blog articles can be [found here](https://miek.nl/tags/coredns/). If you do want to
|
||||||
know and how we can help.
|
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
|
<https://caddyserver.com/> is also full of examples on how to structure a Corefile (renamed from
|
||||||
Caddyfile when I forked it).
|
Caddyfile when I forked it).
|
||||||
@@ -64,7 +70,6 @@ nameserver *and* rewrite ANY queries to HINFO.
|
|||||||
~~~ txt
|
~~~ txt
|
||||||
.:1053 {
|
.:1053 {
|
||||||
rewrite ANY HINFO
|
rewrite ANY HINFO
|
||||||
|
|
||||||
proxy . 8.8.8.8:53
|
proxy . 8.8.8.8:53
|
||||||
|
|
||||||
file /var/lib/bind/miek.nl.signed miek.nl {
|
file /var/lib/bind/miek.nl.signed miek.nl {
|
||||||
|
|||||||
@@ -390,8 +390,8 @@ type Input interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TestServer returns a test server.
|
// TestServer returns a test server.
|
||||||
// The port can be retreived with ... . The testserver itself can be stopped
|
// The ports can be retreived with server.LocalAddr(). The testserver itself can be stopped
|
||||||
// with Stop(). It just takes a normal Corefile input, but doesn't use the port.
|
// with Stop(). It just takes a normal Corefile as input.
|
||||||
func TestServer(t *testing.T, corefile string) (*server.Server, error) {
|
func TestServer(t *testing.T, corefile string) (*server.Server, error) {
|
||||||
|
|
||||||
cdyfile := CaddyfileInput{Contents: []byte(corefile)}
|
cdyfile := CaddyfileInput{Contents: []byte(corefile)}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package parse
|
package parse
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -320,6 +321,14 @@ func standardAddress(str string) (address, error) {
|
|||||||
// no error check here; return err at end of function
|
// 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
|
// see if we can set port based off scheme
|
||||||
if port == "" {
|
if port == "" {
|
||||||
port = "53"
|
port = "53"
|
||||||
|
|||||||
Reference in New Issue
Block a user