diff --git a/bosh-release/src/sslip.io-dns-server/xip/xip.go b/bosh-release/src/sslip.io-dns-server/xip/xip.go index 6820ff0..2501418 100644 --- a/bosh-release/src/sslip.io-dns-server/xip/xip.go +++ b/bosh-release/src/sslip.io-dns-server/xip/xip.go @@ -573,7 +573,7 @@ func ResponseHeader(query dnsmessage.Header, rcode dnsmessage.RCode) dnsmessage. func NameToA(fqdnString string) []dnsmessage.AResource { fqdn := []byte(fqdnString) // is it a customized A record? If so, return early - if domain, ok := Customizations[fqdnString]; ok && len(domain.A) > 0 { + if domain, ok := Customizations[strings.ToLower(fqdnString)]; ok && len(domain.A) > 0 { return domain.A } for _, ipv4RE := range []*regexp.Regexp{ipv4REDashes, ipv4REDots} { @@ -593,7 +593,7 @@ func NameToA(fqdnString string) []dnsmessage.AResource { func NameToAAAA(fqdnString string) []dnsmessage.AAAAResource { fqdn := []byte(fqdnString) // is it a customized AAAA record? If so, return early - if domain, ok := Customizations[fqdnString]; ok && len(domain.AAAA) > 0 { + if domain, ok := Customizations[strings.ToLower(fqdnString)]; ok && len(domain.AAAA) > 0 { return domain.AAAA } if !ipv6RE.Match(fqdn) { @@ -618,7 +618,7 @@ func NameToAAAA(fqdnString string) []dnsmessage.AAAAResource { // CNAMEResource returns the CNAME via Customizations, otherwise nil func CNAMEResource(fqdnString string) *dnsmessage.CNAMEResource { - if domain, ok := Customizations[fqdnString]; ok && domain.CNAME != (dnsmessage.CNAMEResource{}) { + if domain, ok := Customizations[strings.ToLower(fqdnString)]; ok && domain.CNAME != (dnsmessage.CNAMEResource{}) { return &domain.CNAME } return nil @@ -627,7 +627,7 @@ func CNAMEResource(fqdnString string) *dnsmessage.CNAMEResource { // MXResources returns either 1 or more MX records set via Customizations or // an MX record pointing to the queried record func MXResources(fqdnString string) []dnsmessage.MXResource { - if domain, ok := Customizations[fqdnString]; ok && len(domain.MX) > 0 { + if domain, ok := Customizations[strings.ToLower(fqdnString)]; ok && len(domain.MX) > 0 { return domain.MX } mx, _ := dnsmessage.NewName(fqdnString) @@ -661,7 +661,7 @@ func NSResources(fqdnString string) []dnsmessage.NSResource { // TXTResources returns TXT records from Customizations func TXTResources(fqdnString string) []dnsmessage.TXTResource { - if domain, ok := Customizations[fqdnString]; ok { + if domain, ok := Customizations[strings.ToLower(fqdnString)]; ok { return domain.TXT } return nil diff --git a/bosh-release/src/sslip.io-dns-server/xip/xip_test.go b/bosh-release/src/sslip.io-dns-server/xip/xip_test.go index dd1c839..90f5bcd 100644 --- a/bosh-release/src/sslip.io-dns-server/xip/xip_test.go +++ b/bosh-release/src/sslip.io-dns-server/xip/xip_test.go @@ -55,7 +55,7 @@ var _ = Describe("Xip", func() { }) When("querying one of sslip.io's DKIM CNAME's", func() { It("returns the CNAME", func() { - cname := xip.CNAMEResource("protonmail._domainkey.sslip.io.") + cname := xip.CNAMEResource("protonmail._domainkey.SSlip.Io.") Expect(cname.CNAME.String()).To(MatchRegexp("^protonmail\\.domainkey.*.domains\\.proton\\.ch\\.$")) }) }) @@ -99,7 +99,7 @@ var _ = Describe("Xip", func() { }) When("sslip.io is the domain being queried", func() { It("returns sslip.io's custom MX records", func() { - mx := xip.MXResources("sslip.io.") + mx := xip.MXResources("sslIP.iO.") Expect(len(mx)).To(Equal(2)) Expect(mx[0].MX.Data).To(Equal(xip.Customizations["sslip.io."].MX[0].MX.Data)) }) @@ -155,7 +155,7 @@ var _ = Describe("Xip", func() { }) When("queried for the sslip.io domain", func() { It("returns mail-related TXT resources for the sslip.io domain", func() { - domain := "sslip.io." + domain := "ssLip.iO." txts := xip.TXTResources(domain) Expect(err).To(Not(HaveOccurred())) Expect(len(txts)).To(Equal(2)) @@ -182,7 +182,7 @@ var _ = Describe("Xip", func() { Expect(ipv4Answers[0]).To(Equal(expectedA)) }, // sslip.io website - Entry("sslip.io", "sslip.io.", dnsmessage.AResource{A: [4]byte{78, 46, 204, 247}}), + Entry("sslip.io", "ssLIP.io.", dnsmessage.AResource{A: [4]byte{78, 46, 204, 247}}), // nameservers Entry("ns-aws", "ns-aws.nono.io.", dnsmessage.AResource{A: [4]byte{52, 0, 56, 137}}), Entry("ns-azure", "ns-azure.nono.io.", dnsmessage.AResource{A: [4]byte{52, 187, 42, 158}}), @@ -190,7 +190,7 @@ var _ = Describe("Xip", func() { // dots Entry("loopback", "127.0.0.1", dnsmessage.AResource{A: [4]byte{127, 0, 0, 1}}), Entry("255 with domain", "255.254.253.252.com", dnsmessage.AResource{A: [4]byte{255, 254, 253, 252}}), - Entry(`"This" network, pre-and-post`, "nono.io.0.1.2.3.sslip.io", dnsmessage.AResource{A: [4]byte{0, 1, 2, 3}}), + Entry(`"This" network, pre-and-post`, "nono.io.0.1.2.3.ssLIp.IO", dnsmessage.AResource{A: [4]byte{0, 1, 2, 3}}), Entry("private network, two IPs, grabs the leftmost", "nono.io.172.16.0.30.172.31.255.255.sslip.io", dnsmessage.AResource{A: [4]byte{172, 16, 0, 30}}), // dashes Entry("shared address with dashes", "100-64-1-2", dnsmessage.AResource{A: [4]byte{100, 64, 1, 2}}), @@ -199,7 +199,7 @@ var _ = Describe("Xip", func() { // dots-and-dashes, mix-and-matches Entry("Pandaxin's paradox", "minio-01.192-168-1-100.sslip.io", dnsmessage.AResource{A: [4]byte{192, 168, 1, 100}}), ) - DescribeTable("when it does not match an IP address", + DescribeTable("when it does NOT match an IP address", func(fqdn string) { ipv4Answers := xip.NameToA(fqdn) Expect(len(ipv4Answers)).To(Equal(0)) @@ -294,7 +294,7 @@ var _ = Describe("Xip", func() { Expect(ipv6Answers[0]).To(Equal(expectedAAAA)) }, // sslip.io website - Entry("sslip.io", "sslip.io.", xip.Customizations["sslip.io."].AAAA[0]), + Entry("sslip.io", "SSLip.io.", xip.Customizations["sslip.io."].AAAA[0]), // dashes only Entry("loopback", "--1", dnsmessage.AAAAResource{AAAA: [16]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}}), Entry("ff with domain", "fffe-fdfc-fbfa-f9f8-f7f6-f5f4-f3f2-f1f0.com", dnsmessage.AAAAResource{AAAA: [16]byte{255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240}}),