mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	core: add more transports (#574)
* core: add listening for other protocols
Allow CoreDNS to listen for TLS request coming over port 853. This can
be enabled with `tls://` in the config file.
Implement listening for grps:// as well.
a Corefile like:
~~~
. tls://.:1853 {
    whoami
    tls
}
~~~
Means we listen on 1853 for tls requests, the `tls` config item allows
configuration for TLS parameters. We *might* be tempted to use Caddy's
Let's Encrypt implementation here.
* Refactor coredns/grpc into CoreDNS
This makes gRPC a first class citizen in CoreDNS. Add defines as being
just another server.
* some cleanups
* unexport the servers
* Move protobuf dir
* Hook up TLS properly
* Fix test
* listen for TLS as well. README updates
* disable test, fix package
* fix test
* Fix tests
* Fix remaining test
* Some tests
* Make the test work
* Add grpc test from #580
* fix crash
* Fix tests
* Close conn
* README cleanups
* README
* link RFC
			
			
This commit is contained in:
		| @@ -7,6 +7,8 @@ import ( | ||||
| 	"github.com/miekg/dns" | ||||
| ) | ||||
|  | ||||
| // See core/dnsserver/address.go - we should unify these two impls. | ||||
|  | ||||
| // Zones respresents a lists of zone names. | ||||
| type Zones []string | ||||
|  | ||||
| @@ -56,12 +58,24 @@ type ( | ||||
| ) | ||||
|  | ||||
| // Normalize will return the host portion of host, stripping | ||||
| // of any port. The host will also be fully qualified and lowercased. | ||||
| // of any port or transport. The host will also be fully qualified and lowercased. | ||||
| func (h Host) Normalize() string { | ||||
|  | ||||
| 	s := string(h) | ||||
|  | ||||
| 	switch { | ||||
| 	case strings.HasPrefix(s, TransportTLS+"://"): | ||||
| 		s = s[len(TransportTLS+"://"):] | ||||
| 	case strings.HasPrefix(s, TransportDNS+"://"): | ||||
| 		s = s[len(TransportDNS+"://"):] | ||||
| 	case strings.HasPrefix(s, TransportGRPC+"://"): | ||||
| 		s = s[len(TransportGRPC+"://"):] | ||||
| 	} | ||||
|  | ||||
| 	// separate host and port | ||||
| 	host, _, err := net.SplitHostPort(string(h)) | ||||
| 	host, _, err := net.SplitHostPort(s) | ||||
| 	if err != nil { | ||||
| 		host, _, _ = net.SplitHostPort(string(h) + ":") | ||||
| 		host, _, _ = net.SplitHostPort(s + ":") | ||||
| 	} | ||||
| 	return Name(host).Normalize() | ||||
| } | ||||
| @@ -77,3 +91,10 @@ func (a Addr) Normalize() string { | ||||
| 	// TODO(miek): lowercase it? | ||||
| 	return net.JoinHostPort(addr, port) | ||||
| } | ||||
|  | ||||
| // Duplicated from core/dnsserver/address.go ! | ||||
| const ( | ||||
| 	TransportDNS  = "dns" | ||||
| 	TransportTLS  = "tls" | ||||
| 	TransportGRPC = "grpc" | ||||
| ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user