mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-05 17:16:59 +02:00
fix: IDNA awareness in the zone finder
Signed-off-by: Hiroki Hanada <hiroki-hanada@cybozu.co.jp>
This commit is contained in:
parent
1b9d7cddc0
commit
d4a6294b01
@ -20,7 +20,8 @@ import (
|
||||
"strings"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
"golang.org/x/net/idna"
|
||||
|
||||
"sigs.k8s.io/external-dns/internal/idna"
|
||||
)
|
||||
|
||||
type ZoneIDName map[string]string
|
||||
@ -48,7 +49,7 @@ func (z ZoneIDName) FindZone(hostname string) (string, string) {
|
||||
if strings.Contains(label, "_") {
|
||||
continue
|
||||
}
|
||||
convertedLabel, err := idna.Lookup.ToUnicode(label)
|
||||
convertedLabel, err := idna.Profile.ToUnicode(label)
|
||||
if err != nil {
|
||||
log.Warnf("Failed to convert label %q of hostname %q to its Unicode form: %v", label, hostname, err)
|
||||
convertedLabel = label
|
||||
|
@ -34,6 +34,7 @@ func TestZoneIDName(t *testing.T) {
|
||||
z.Add("123123", "_metadata.example.com")
|
||||
z.Add("1231231", "_foo._metadata.example.com")
|
||||
z.Add("456456", "_metadata.エイミー.みんな")
|
||||
z.Add("123412", "*.example.com")
|
||||
|
||||
assert.Equal(t, ZoneIDName{
|
||||
"123456": "qux.baz",
|
||||
@ -42,6 +43,7 @@ func TestZoneIDName(t *testing.T) {
|
||||
"123123": "_metadata.example.com",
|
||||
"1231231": "_foo._metadata.example.com",
|
||||
"456456": "_metadata.エイミー.みんな",
|
||||
"123412": "*.example.com",
|
||||
}, z)
|
||||
|
||||
// simple entry in a domain
|
||||
@ -83,8 +85,12 @@ func TestZoneIDName(t *testing.T) {
|
||||
assert.Equal(t, "_foo._metadata.example.com", zoneName)
|
||||
assert.Equal(t, "1231231", zoneID)
|
||||
|
||||
hook := testutils.LogsUnderTestWithLogLevel(log.WarnLevel, t)
|
||||
_, _ = z.FindZone("???")
|
||||
zoneID, zoneName = z.FindZone("*.example.com")
|
||||
assert.Equal(t, "*.example.com", zoneName)
|
||||
assert.Equal(t, "123412", zoneID)
|
||||
|
||||
testutils.TestHelperLogContains("Failed to convert label \"???\" of hostname \"???\" to its Unicode form: idna: disallowed rune U+003F", hook, t)
|
||||
hook := testutils.LogsUnderTestWithLogLevel(log.WarnLevel, t)
|
||||
_, _ = z.FindZone("xn--not-a-valid-punycode")
|
||||
|
||||
testutils.TestHelperLogContains("Failed to convert label \"xn--not-a-valid-punycode\" of hostname \"xn--not-a-valid-punycode\" to its Unicode form: idna: invalid label", hook, t)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user