decouple dns server

pull/330/head
Darien Raymond 2016-12-16 16:20:12 +01:00
parent 5e297692da
commit c4144af223
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
4 changed files with 18 additions and 17 deletions

2
all.go
View File

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

View File

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

View File

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

View File

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