Only force DNS resolution for domain-type resources

This commit is contained in:
Viktor Liu
2026-07-23 18:06:41 +02:00
parent 753d80f280
commit 7e44f7f918
2 changed files with 13 additions and 3 deletions

View File

@@ -1531,7 +1531,7 @@ func (a *Account) forcesRoutingPeerDNSResolution(peerID string, routers map[stri
}
for _, resource := range a.NetworkResources {
if resource == nil || !resource.Enabled {
if resource == nil || !resource.Enabled || resource.Type != resourceTypes.Domain {
continue
}
if _, ok := targeted[resource.ID]; !ok {

View File

@@ -1753,7 +1753,7 @@ func hasPrivateAccessPolicy(account *Account, serviceID string) bool {
}
func TestForcesRoutingPeerDNSResolution(t *testing.T) {
buildAccount := func(serviceEnabled, targetEnabled, resourceEnabled bool, targetType service.TargetType) *Account {
buildAccountRes := func(serviceEnabled, targetEnabled, resourceEnabled bool, targetType service.TargetType, resType resourceTypes.NetworkResourceType) *Account {
return &Account{
Id: "accountID",
Groups: map[string]*Group{
@@ -1764,7 +1764,7 @@ func TestForcesRoutingPeerDNSResolution(t *testing.T) {
{ID: "r2", NetworkID: "net-1", AccountID: "accountID", PeerGroups: []string{"router-group"}, Enabled: true},
},
NetworkResources: []*resourceTypes.NetworkResource{
{ID: "res-domain", AccountID: "accountID", NetworkID: "net-1", Type: resourceTypes.Domain, Domain: "ipinfo.io", Enabled: resourceEnabled},
{ID: "res-domain", AccountID: "accountID", NetworkID: "net-1", Type: resType, Domain: "example.org", Enabled: resourceEnabled},
},
Services: []*service.Service{
{
@@ -1777,6 +1777,10 @@ func TestForcesRoutingPeerDNSResolution(t *testing.T) {
}
}
buildAccount := func(serviceEnabled, targetEnabled, resourceEnabled bool, targetType service.TargetType) *Account {
return buildAccountRes(serviceEnabled, targetEnabled, resourceEnabled, targetType, resourceTypes.Domain)
}
t.Run("router peer for RP-targeted domain resource is forced", func(t *testing.T) {
account := buildAccount(true, true, true, service.TargetTypeDomain)
routers := account.GetResourceRoutersMap()
@@ -1808,4 +1812,10 @@ func TestForcesRoutingPeerDNSResolution(t *testing.T) {
account := buildAccount(true, true, true, service.TargetTypePeer)
assert.False(t, account.forcesRoutingPeerDNSResolution("router-peer", account.GetResourceRoutersMap()))
})
t.Run("not forced when targeted resource is not a domain", func(t *testing.T) {
account := buildAccountRes(true, true, true, service.TargetTypeDomain, resourceTypes.Host)
assert.False(t, account.forcesRoutingPeerDNSResolution("router-peer", account.GetResourceRoutersMap()),
"a domain target pointing at a non-domain resource must not force resolution")
})
}