fix: ensure ipv4 is checked, not sometimes ipv6
See coop-cloud/organising#490
This commit is contained in:
parent
d11ad61efb
commit
bc9f9fee22
|
@ -7,11 +7,16 @@ import (
|
|||
|
||||
// EnsureIPv4 ensures that an ipv4 address is set for a domain name
|
||||
func EnsureIPv4(domainName string) (string, error) {
|
||||
ipv4, err := net.ResolveIPAddr("ip", domainName)
|
||||
ipv4, err := net.ResolveIPAddr("ip4", domainName)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// NOTE(d1): e.g. when there is only an ipv6 record available
|
||||
if ipv4 == nil {
|
||||
return "", fmt.Errorf("unable to resolve ipv4 address for %s", domainName)
|
||||
}
|
||||
|
||||
return ipv4.String(), nil
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@ package dns
|
|||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"gotest.tools/v3/assert"
|
||||
)
|
||||
|
||||
func TestEnsureDomainsResolveSameIPv4(t *testing.T) {
|
||||
|
@ -36,3 +38,22 @@ func TestEnsureDomainsResolveSameIPv4(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestEnsureIpv4(t *testing.T) {
|
||||
domainName := "collabora.ostrom.collective.tools"
|
||||
serverName := "ostrom.collective.tools"
|
||||
|
||||
for i := 0; i < 15; i++ {
|
||||
domainIpv4, err := EnsureIPv4(domainName)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
serverIpv4, err := EnsureIPv4(serverName)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
assert.Equal(t, domainIpv4, serverIpv4)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue