Prechádzať zdrojové kódy

decouple dns server

Darien Raymond 9 rokov pred
rodič
commit
c4144af223
4 zmenil súbory, kde vykonal 18 pridanie a 17 odobranie
  1. 1 1
      all.go
  2. 1 1
      app/dns/server/nameserver.go
  3. 8 7
      app/dns/server/server.go
  4. 8 8
      v2ray.go

+ 1 - 1
all.go

@@ -3,7 +3,7 @@ package core
 import (
 	// The following are necessary as they register handlers in their init functions.
 	_ "v2ray.com/core/app/dispatcher/impl"
-	_ "v2ray.com/core/app/dns"
+	_ "v2ray.com/core/app/dns/server"
 	_ "v2ray.com/core/app/proxy"
 	_ "v2ray.com/core/app/router"
 

+ 1 - 1
app/dns/nameserver.go → app/dns/server/nameserver.go

@@ -1,4 +1,4 @@
-package dns
+package server
 
 import (
 	"net"

+ 8 - 7
app/dns/server.go → app/dns/server/server.go

@@ -1,4 +1,4 @@
-package dns
+package server
 
 import (
 	"net"
@@ -7,12 +7,13 @@ import (
 
 	"v2ray.com/core/app"
 	"v2ray.com/core/app/dispatcher"
+	"v2ray.com/core/app/dns"
 	"v2ray.com/core/common/errors"
 	"v2ray.com/core/common/log"
 	v2net "v2ray.com/core/common/net"
 	"v2ray.com/core/common/serial"
 
-	"github.com/miekg/dns"
+	dnsmsg "github.com/miekg/dns"
 )
 
 const (
@@ -31,7 +32,7 @@ type CacheServer struct {
 	servers []NameServer
 }
 
-func NewCacheServer(space app.Space, config *Config) *CacheServer {
+func NewCacheServer(space app.Space, config *dns.Config) *CacheServer {
 	server := &CacheServer{
 		records: make(map[string]*DomainRecord),
 		servers: make([]NameServer, len(config.NameServers)),
@@ -85,7 +86,7 @@ func (v *CacheServer) Get(domain string) []net.IP {
 		return []net.IP{ip}
 	}
 
-	domain = dns.Fqdn(domain)
+	domain = dnsmsg.Fqdn(domain)
 	ips := v.GetCached(domain)
 	if ips != nil {
 		return ips
@@ -116,14 +117,14 @@ func (v *CacheServer) Get(domain string) []net.IP {
 type CacheServerFactory struct{}
 
 func (v CacheServerFactory) Create(space app.Space, config interface{}) (app.Application, error) {
-	server := NewCacheServer(space, config.(*Config))
+	server := NewCacheServer(space, config.(*dns.Config))
 	return server, nil
 }
 
 func (v CacheServerFactory) AppId() app.ID {
-	return APP_ID
+	return dns.APP_ID
 }
 
 func init() {
-	app.RegisterApplicationFactory(serial.GetMessageType(new(Config)), CacheServerFactory{})
+	app.RegisterApplicationFactory(serial.GetMessageType(new(dns.Config)), CacheServerFactory{})
 }

+ 8 - 8
v2ray.go

@@ -59,14 +59,14 @@ func NewPoint(pConfig *Config) (*Point, error) {
 	}
 
 	if !space.HasApp(dns.APP_ID) {
-		dnsServer := dns.NewCacheServer(space, &dns.Config{
-			NameServers: []*v2net.Endpoint{
-				{
-					Address: v2net.NewIPOrDomain(v2net.LocalHostDomain),
-				},
-			},
-		})
-		space.BindApp(dns.APP_ID, dnsServer)
+		dnsConfig := &dns.Config{
+			NameServers: []*v2net.Endpoint{{
+				Address: v2net.NewIPOrDomain(v2net.LocalHostDomain),
+			}},
+		}
+		if err := space.BindFromConfig(serial.GetMessageType(dnsConfig), dnsConfig); err != nil {
+			return nil, err
+		}
 	}
 
 	dispatcherConfig := new(dispatcher.Config)