Pārlūkot izejas kodu

default value of dns config

v2ray 9 gadi atpakaļ
vecāks
revīzija
10d1d9288b
3 mainītis faili ar 36 papildinājumiem un 1 dzēšanām
  1. 24 0
      app/dns/nameserver.go
  2. 5 1
      app/dns/server.go
  3. 7 0
      shell/point/config_json.go

+ 24 - 0
app/dns/nameserver.go

@@ -156,3 +156,27 @@ func (this *UDPNameServer) QueryA(domain string) <-chan *ARecord {
 
 	return response
 }
+
+type LocalNameServer struct {
+}
+
+func (this *LocalNameServer) QueryA(domain string) <-chan *ARecord {
+	response := make(chan *ARecord)
+
+	go func() {
+		defer close(response)
+
+		ips, err := net.LookupIP(domain)
+		if err != nil {
+			log.Info("DNS: Failed to lookup IPs for domain ", domain)
+			return
+		}
+
+		response <- &ARecord{
+			IPs:    ips,
+			Expire: time.Now().Add(time.Second * time.Duration(DefaultTTL)),
+		}
+	}()
+
+	return response
+}

+ 5 - 1
app/dns/server.go

@@ -32,7 +32,11 @@ func NewCacheServer(space app.Space, config *Config) *CacheServer {
 	}
 	dispatcher := space.GetApp(dispatcher.APP_ID).(dispatcher.PacketDispatcher)
 	for idx, ns := range config.NameServers {
-		server.servers[idx] = NewUDPNameServer(ns, dispatcher)
+		if ns.Address().IsDomain() && ns.Address().Domain() == "localhost" {
+			server.servers[idx] = &LocalNameServer{}
+		} else {
+			server.servers[idx] = NewUDPNameServer(ns, dispatcher)
+		}
 	}
 	return server
 }

+ 7 - 0
shell/point/config_json.go

@@ -40,6 +40,13 @@ func (this *Config) UnmarshalJSON(data []byte) error {
 	this.OutboundConfig = jsonConfig.OutboundConfig
 	this.InboundDetours = jsonConfig.InboundDetours
 	this.OutboundDetours = jsonConfig.OutboundDetours
+	if jsonConfig.DNSConfig == nil {
+		jsonConfig.DNSConfig = &dns.Config{
+			NameServers: []v2net.Destination{
+				v2net.UDPDestination(v2net.DomainAddress("localhost"), v2net.Port(53)),
+			},
+		}
+	}
 	this.DNSConfig = jsonConfig.DNSConfig
 	return nil
 }