Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit704f29f

Browse files
committed
review
1 parenta1f980f commit704f29f

File tree

2 files changed

+103
-27
lines changed

2 files changed

+103
-27
lines changed

‎vpn/dns.go‎

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,57 @@ package vpn
22

33
import"tailscale.com/net/dns"
44

5-
funcNewVPNManager(t*Tunnel) dns.OSConfigurator {
6-
return&vpnDNSManager{tunnel:t}
5+
funcNewDNSConfigurator(t*Tunnel) dns.OSConfigurator {
6+
return&dnsManager{tunnel:t}
77
}
88

9-
typevpnDNSManagerstruct {
9+
typednsManagerstruct {
1010
tunnel*Tunnel
1111
}
1212

13-
func (v*vpnDNSManager)SetDNS(cfg dns.OSConfig)error {
14-
servers:=make([]string,0,len(cfg.Nameservers))
15-
for_,ns:=rangecfg.Nameservers {
16-
servers=append(servers,ns.String())
17-
}
18-
searchDomains:=make([]string,0,len(cfg.SearchDomains))
19-
for_,domain:=rangecfg.SearchDomains {
20-
searchDomains=append(searchDomains,domain.WithoutTrailingDot())
21-
}
22-
matchDomains:=make([]string,0,len(cfg.MatchDomains))
23-
for_,domain:=rangecfg.MatchDomains {
24-
matchDomains=append(matchDomains,domain.WithoutTrailingDot())
25-
}
13+
func (v*dnsManager)SetDNS(cfg dns.OSConfig)error {
14+
settings:=convertDNSConfig(cfg)
2615
returnv.tunnel.ApplyNetworkSettings(v.tunnel.ctx,&NetworkSettingsRequest{
27-
DnsSettings:&NetworkSettingsRequest_DNSSettings{
28-
Servers:servers,
29-
SearchDomains:searchDomains,
30-
DomainName:"coder",
31-
MatchDomains:matchDomains,
32-
MatchDomainsNoSearch:false,
33-
},
16+
DnsSettings:settings,
3417
})
3518
}
3619

37-
func (vpnDNSManager)GetBaseConfig() (dns.OSConfig,error) {
20+
func (*dnsManager)GetBaseConfig() (dns.OSConfig,error) {
3821
// Tailscale calls this function to blend the OS's DNS configuration with
3922
// it's own, so this is only called if `SupportsSplitDNS` returns false.
4023
return dns.OSConfig{},dns.ErrGetBaseConfigNotSupported
4124
}
4225

43-
func (*vpnDNSManager)SupportsSplitDNS()bool {
26+
func (*dnsManager)SupportsSplitDNS()bool {
4427
// macOS & Windows 10+ support split DNS, so we'll assume all CoderVPN
4528
// clients do too.
4629
returntrue
4730
}
4831

4932
// Close implements dns.OSConfigurator.
50-
func (*vpnDNSManager)Close()error {
33+
func (*dnsManager)Close()error {
5134
// There's no cleanup that we need to initiate from within the dylib.
5235
returnnil
5336
}
5437

55-
var_ dns.OSConfigurator= (*vpnDNSManager)(nil)
38+
funcconvertDNSConfig(cfg dns.OSConfig)*NetworkSettingsRequest_DNSSettings {
39+
servers:=make([]string,0,len(cfg.Nameservers))
40+
for_,ns:=rangecfg.Nameservers {
41+
servers=append(servers,ns.String())
42+
}
43+
searchDomains:=make([]string,0,len(cfg.SearchDomains))
44+
for_,domain:=rangecfg.SearchDomains {
45+
searchDomains=append(searchDomains,domain.WithoutTrailingDot())
46+
}
47+
matchDomains:=make([]string,0,len(cfg.MatchDomains))
48+
for_,domain:=rangecfg.MatchDomains {
49+
matchDomains=append(matchDomains,domain.WithoutTrailingDot())
50+
}
51+
return&NetworkSettingsRequest_DNSSettings{
52+
Servers:servers,
53+
SearchDomains:searchDomains,
54+
DomainName:"coder",
55+
MatchDomains:matchDomains,
56+
MatchDomainsNoSearch:false,
57+
}
58+
}

‎vpn/dns_internal_test.go‎

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package vpn
2+
3+
import (
4+
"net/netip"
5+
"testing"
6+
7+
"github.com/stretchr/testify/require"
8+
"tailscale.com/net/dns"
9+
"tailscale.com/util/dnsname"
10+
)
11+
12+
funcTestConvertDNSConfig(t*testing.T) {
13+
t.Parallel()
14+
15+
tests:= []struct {
16+
namestring
17+
input dns.OSConfig
18+
expected*NetworkSettingsRequest_DNSSettings
19+
}{
20+
{
21+
name:"Basic",
22+
input: dns.OSConfig{
23+
Nameservers: []netip.Addr{
24+
netip.MustParseAddr("1.1.1.1"),
25+
netip.MustParseAddr("8.8.8.8"),
26+
},
27+
SearchDomains: []dnsname.FQDN{
28+
"example.com.",
29+
"test.local.",
30+
},
31+
MatchDomains: []dnsname.FQDN{
32+
"internal.domain.",
33+
},
34+
},
35+
expected:&NetworkSettingsRequest_DNSSettings{
36+
Servers: []string{"1.1.1.1","8.8.8.8"},
37+
SearchDomains: []string{"example.com","test.local"},
38+
DomainName:"coder",
39+
MatchDomains: []string{"internal.domain"},
40+
MatchDomainsNoSearch:false,
41+
},
42+
},
43+
{
44+
name:"Empty",
45+
input: dns.OSConfig{
46+
Nameservers: []netip.Addr{},
47+
SearchDomains: []dnsname.FQDN{},
48+
MatchDomains: []dnsname.FQDN{},
49+
},
50+
expected:&NetworkSettingsRequest_DNSSettings{
51+
Servers: []string{},
52+
SearchDomains: []string{},
53+
DomainName:"coder",
54+
MatchDomains: []string{},
55+
MatchDomainsNoSearch:false,
56+
},
57+
},
58+
}
59+
60+
//nolint:paralleltest // outdated rule
61+
for_,tt:=rangetests {
62+
t.Run(tt.name,func(t*testing.T) {
63+
t.Parallel()
64+
65+
result:=convertDNSConfig(tt.input)
66+
require.Equal(t,tt.expected.Servers,result.Servers)
67+
require.Equal(t,tt.expected.SearchDomains,result.SearchDomains)
68+
require.Equal(t,tt.expected.DomainName,result.DomainName)
69+
require.Equal(t,tt.expected.MatchDomains,result.MatchDomains)
70+
require.Equal(t,tt.expected.MatchDomainsNoSearch,result.MatchDomainsNoSearch)
71+
})
72+
}
73+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp