Skip to content

Commit 5f7e50b

Browse files
authored
Merge pull request #210 from anywherelan/disable-awldns-option
app: add DisableDNS, ListenAddress dns options
2 parents 701b0bd + a816404 commit 5f7e50b

5 files changed

Lines changed: 25 additions & 15 deletions

File tree

application.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,6 @@ func FrontendStatic() fs.FS {
5252
return fsys
5353
}
5454

55-
// useAwldns is used for tests
56-
var useAwldns = true
57-
5855
// @title Anywherelan API
5956
// @version 0.1
6057
// @description Anywherelan API
@@ -154,7 +151,7 @@ func (a *Application) Init(ctx context.Context, tunDevice tun.Device) error {
154151
go a.AuthStatus.BackgroundExchangeStatusInfo(a.ctx)
155152
go a.SOCKS5.ServeConns(a.ctx)
156153

157-
if useAwldns && !a.Conf.VPNConfig.DisableVPNInterface {
154+
if !a.Conf.DNS.DisableDNS && !a.Conf.VPNConfig.DisableVPNInterface {
158155
interfaceName, err := a.vpnDevice.InterfaceName()
159156
if err != nil {
160157
a.logger.Errorf("failed to get TUN interface name: %v", err)
@@ -324,7 +321,14 @@ func NewDNSService(conf *config.Config, eventbus awlevent.Bus, ctx context.Conte
324321

325322
func (a *DNSService) initDNS(interfaceName string) {
326323
var err error
327-
a.dnsResolver = awldns.NewResolver(awldns.DNSAddress)
324+
dnsAddr := a.conf.DNS.ListenAddress
325+
dnsHost, _, err := net.SplitHostPort(dnsAddr)
326+
if err != nil {
327+
a.logger.Errorf("invalid dns listen address %s: %v", dnsAddr, err)
328+
return
329+
}
330+
331+
a.dnsResolver = awldns.NewResolver(dnsAddr)
328332
a.upstreamDNS = awldns.DefaultUpstreamDNSAddress
329333
a.refreshDNSConfig()
330334

@@ -338,7 +342,7 @@ func (a *DNSService) initDNS(interfaceName string) {
338342
tsLogger.Infof(format, args...)
339343
}, nil, &controlknobs.Knobs{}, interfaceName)
340344
if err != nil {
341-
a.logger.Errorf("create dns os configurator: %v", err)
345+
a.logger.Errorf("unable to create dns os configurator: %v", err)
342346
return
343347
}
344348

@@ -347,7 +351,7 @@ func (a *DNSService) initDNS(interfaceName string) {
347351
panic(err)
348352
}
349353
newOSConfig := dns.OSConfig{
350-
Nameservers: []netip.Addr{netip.MustParseAddr(awldns.DNSIp)},
354+
Nameservers: []netip.Addr{netip.MustParseAddr(dnsHost)},
351355
MatchDomains: []dnsname.FQDN{fqdn},
352356
}
353357

awldns/awldns.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ const (
1919

2020
const (
2121
LocalDomain = "awl"
22-
DNSIp = "127.0.0.66"
22+
DefaultDNSAddress = "127.0.0.66:53"
2323
DefaultDNSPort = "53"
24-
DNSAddress = "127.0.0.66:53"
2524
DefaultUpstreamDNSAddress = "1.1.1.1:53"
2625
)
2726

config/config.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type (
5151
P2pNode P2pNodeConfig `json:"p2pNode"`
5252
VPNConfig VPNConfig `json:"vpn"`
5353
SOCKS5 SOCKS5Config `json:"socks5"`
54+
DNS DNSConfig `json:"dns"`
5455
KnownPeers map[string]KnownPeer `json:"knownPeers"`
5556
BlockedPeers map[string]BlockedPeer `json:"blockedPeers"`
5657
Update UpdateConfig `json:"update"`
@@ -83,6 +84,10 @@ type (
8384
// peer that is set as proxy
8485
UsingPeerID string `json:"usingPeerID"`
8586
}
87+
DNSConfig struct {
88+
DisableDNS bool `json:"disableDNS"`
89+
ListenAddress string `json:"listenAddress"`
90+
}
8691
KnownPeer struct {
8792
// Hex-encoded multihash representing a peer ID
8893
PeerID string `json:"peerId"`

config/other.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,10 @@ func setDefaults(conf *Config, bus awlevent.Bus) {
185185
conf.SOCKS5.ListenAddress = defaultSOCKS5ListenAddress
186186
}
187187

188+
if conf.DNS.ListenAddress == "" {
189+
conf.DNS.ListenAddress = awldns.DefaultDNSAddress
190+
}
191+
188192
uniqAliases := make(map[string]struct{}, len(conf.KnownPeers))
189193
if conf.KnownPeers == nil {
190194
conf.KnownPeers = make(map[string]KnownPeer)

test_suite_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,6 @@ import (
3939

4040
const TestTUNBatchSize = 100
4141

42-
func init() {
43-
// TODO: move to config
44-
useAwldns = false
45-
config.DefaultBootstrapPeers = nil
46-
}
47-
4842
// TODO: add support for goleak in TestSuite
4943
type TestSuite struct {
5044
*require.Assertions
@@ -153,6 +147,8 @@ func (ts *TestSuite) newTestPeerWithConfig(disableLogging bool, listenAddrs []mu
153147
app.Conf.HttpListenOnAdminHost = false
154148
app.Conf.SetListenAddresses(listenAddrs)
155149
app.Conf.P2pNode.BootstrapPeers = ts.bootstrapAddrsStr
150+
t := true
151+
app.Conf.P2pNode.IgnoreDefaultBootstrapPeers = &t
156152
app.Conf.P2pNode.ParallelSendingStreamsCount = 1
157153
app.Conf.P2pNode.UseDedicatedConnForEachStream = false
158154

@@ -170,6 +166,8 @@ func (ts *TestSuite) newTestPeerWithConfig(disableLogging bool, listenAddrs []mu
170166
}
171167
}
172168

169+
app.Conf.DNS.DisableDNS = true
170+
173171
if configModifier != nil {
174172
configModifier(app.Conf)
175173
}

0 commit comments

Comments
 (0)