mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-05-01 01:44:15 +00:00
Add Fake DNS support (#309)
Co-authored-by: Xiaokang Wang <xiaokangwang@outlook.com> Co-authored-by: loyalsoldier <10487845+Loyalsoldier@users.noreply.github.com> Co-authored-by: kslr <kslrwang@gmail.com>
This commit is contained in:
parent
db32ce6fd9
commit
f50eff5ebb
43 changed files with 1351 additions and 301 deletions
99
app/dns/fakedns/fakedns_test.go
Normal file
99
app/dns/fakedns/fakedns_test.go
Normal file
|
@ -0,0 +1,99 @@
|
|||
package fakedns
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/xtls/xray-core/common"
|
||||
"github.com/xtls/xray-core/common/net"
|
||||
"github.com/xtls/xray-core/common/uuid"
|
||||
)
|
||||
|
||||
func TestNewFakeDnsHolder(_ *testing.T) {
|
||||
_, err := NewFakeDNSHolder()
|
||||
common.Must(err)
|
||||
}
|
||||
|
||||
func TestFakeDnsHolderCreateMapping(t *testing.T) {
|
||||
fkdns, err := NewFakeDNSHolder()
|
||||
common.Must(err)
|
||||
|
||||
addr := fkdns.GetFakeIPForDomain("fakednstest.v2fly.org")
|
||||
assert.Equal(t, "240.", addr[0].IP().String()[0:4])
|
||||
}
|
||||
|
||||
func TestFakeDnsHolderCreateMappingMany(t *testing.T) {
|
||||
fkdns, err := NewFakeDNSHolder()
|
||||
common.Must(err)
|
||||
|
||||
addr := fkdns.GetFakeIPForDomain("fakednstest.v2fly.org")
|
||||
assert.Equal(t, "240.", addr[0].IP().String()[0:4])
|
||||
|
||||
addr2 := fkdns.GetFakeIPForDomain("fakednstest2.v2fly.org")
|
||||
assert.Equal(t, "240.", addr2[0].IP().String()[0:4])
|
||||
assert.NotEqual(t, addr[0].IP().String(), addr2[0].IP().String())
|
||||
}
|
||||
|
||||
func TestFakeDnsHolderCreateMappingManyAndResolve(t *testing.T) {
|
||||
fkdns, err := NewFakeDNSHolder()
|
||||
common.Must(err)
|
||||
|
||||
addr := fkdns.GetFakeIPForDomain("fakednstest.v2fly.org")
|
||||
addr2 := fkdns.GetFakeIPForDomain("fakednstest2.v2fly.org")
|
||||
|
||||
{
|
||||
result := fkdns.GetDomainFromFakeDNS(addr[0])
|
||||
assert.Equal(t, "fakednstest.v2fly.org", result)
|
||||
}
|
||||
|
||||
{
|
||||
result := fkdns.GetDomainFromFakeDNS(addr2[0])
|
||||
assert.Equal(t, "fakednstest2.v2fly.org", result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFakeDnsHolderCreateMappingManySingleDomain(t *testing.T) {
|
||||
fkdns, err := NewFakeDNSHolder()
|
||||
common.Must(err)
|
||||
|
||||
addr := fkdns.GetFakeIPForDomain("fakednstest.v2fly.org")
|
||||
addr2 := fkdns.GetFakeIPForDomain("fakednstest.v2fly.org")
|
||||
assert.Equal(t, addr[0].IP().String(), addr2[0].IP().String())
|
||||
}
|
||||
|
||||
func TestFakeDnsHolderCreateMappingAndRollOver(t *testing.T) {
|
||||
fkdns, err := NewFakeDNSHolderConfigOnly(&FakeDnsPool{
|
||||
IpPool: "240.0.0.0/12",
|
||||
LruSize: 256,
|
||||
})
|
||||
common.Must(err)
|
||||
|
||||
err = fkdns.Start()
|
||||
|
||||
common.Must(err)
|
||||
|
||||
addr := fkdns.GetFakeIPForDomain("fakednstest.v2fly.org")
|
||||
addr2 := fkdns.GetFakeIPForDomain("fakednstest2.v2fly.org")
|
||||
|
||||
for i := 0; i <= 8192; i++ {
|
||||
{
|
||||
result := fkdns.GetDomainFromFakeDNS(addr[0])
|
||||
assert.Equal(t, "fakednstest.v2fly.org", result)
|
||||
}
|
||||
|
||||
{
|
||||
result := fkdns.GetDomainFromFakeDNS(addr2[0])
|
||||
assert.Equal(t, "fakednstest2.v2fly.org", result)
|
||||
}
|
||||
|
||||
{
|
||||
uuid := uuid.New()
|
||||
domain := uuid.String() + ".fakednstest.v2fly.org"
|
||||
tempAddr := fkdns.GetFakeIPForDomain(domain)
|
||||
rsaddr := tempAddr[0].IP().String()
|
||||
|
||||
result := fkdns.GetDomainFromFakeDNS(net.ParseAddress(rsaddr))
|
||||
assert.Equal(t, domain, result)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue