mirror of https://github.com/v2ray/v2ray-core
check domain name
parent
fae47083c2
commit
2aa0c08709
|
@ -196,6 +196,14 @@ func toNetIP(ips []net.Address) []net.IP {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) lookupIPInternal(domain string, option IPOption) ([]net.IP, error) {
|
func (s *Server) lookupIPInternal(domain string, option IPOption) ([]net.IP, error) {
|
||||||
|
if len(domain) == 0 {
|
||||||
|
return nil, newError("empty domain name")
|
||||||
|
}
|
||||||
|
|
||||||
|
if domain[len(domain)-1] == '.' {
|
||||||
|
domain = domain[:len(domain)-1]
|
||||||
|
}
|
||||||
|
|
||||||
ips := s.lookupStatic(domain, option, 0)
|
ips := s.lookupStatic(domain, option, 0)
|
||||||
if ips != nil && ips[0].Family().IsIP() {
|
if ips != nil && ips[0].Family().IsIP() {
|
||||||
return toNetIP(ips), nil
|
return toNetIP(ips), nil
|
||||||
|
|
|
@ -216,18 +216,18 @@ func (h *Handler) handleIPQuery(id uint16, qType dnsmessage.Type, domain string,
|
||||||
RCode: dnsmessage.RCodeSuccess,
|
RCode: dnsmessage.RCodeSuccess,
|
||||||
Response: true,
|
Response: true,
|
||||||
})
|
})
|
||||||
builder.StartAnswers()
|
common.Must(builder.StartAnswers())
|
||||||
|
|
||||||
rHeader := dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName(domain), Class: dnsmessage.ClassINET, TTL: 600}
|
rHeader := dnsmessage.ResourceHeader{Name: dnsmessage.MustNewName(domain), Class: dnsmessage.ClassINET, TTL: 600}
|
||||||
for _, ip := range ips {
|
for _, ip := range ips {
|
||||||
if len(ip) == net.IPv4len {
|
if len(ip) == net.IPv4len {
|
||||||
var r dnsmessage.AResource
|
var r dnsmessage.AResource
|
||||||
copy(r.A[:], ip)
|
copy(r.A[:], ip)
|
||||||
builder.AResource(rHeader, r)
|
common.Must(builder.AResource(rHeader, r))
|
||||||
} else {
|
} else {
|
||||||
var r dnsmessage.AAAAResource
|
var r dnsmessage.AAAAResource
|
||||||
copy(r.AAAA[:], ip)
|
copy(r.AAAA[:], ip)
|
||||||
builder.AAAAResource(rHeader, r)
|
common.Must(builder.AAAAResource(rHeader, r))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
msgBytes, err := builder.Finish()
|
msgBytes, err := builder.Finish()
|
||||||
|
|
Loading…
Reference in New Issue