Compare commits

..
3 Commits
4 changed files with 8 additions and 40 deletions
-7
View File
@@ -325,13 +325,6 @@ logformat = "text"
## Changelog ## Changelog
- v0.7.2
- Changed
- Fixed: Regression error of not being able to answer to incoming random-case requests.
- Fixed: SOA record added to a correct header field in NXDOMAIN responses.
- v0.7.1
- Changed
- Fixed: SOA record correctly added to the TCP DNS server when using both, UDP and TCP servers.
- v0.7 - v0.7
- New - New
- Added an endpoint to perform health checks - Added an endpoint to perform health checks
+4 -4
View File
@@ -104,7 +104,7 @@ func (d *DNSServer) readQuery(m *dns.Msg) {
m.MsgHdr.Authoritative = authoritative m.MsgHdr.Authoritative = authoritative
if authoritative { if authoritative {
if m.MsgHdr.Rcode == dns.RcodeNameError { if m.MsgHdr.Rcode == dns.RcodeNameError {
m.Ns = append(m.Ns, d.SOA) m.Answer = append(m.Answer, d.SOA)
} }
} }
@@ -113,7 +113,7 @@ func (d *DNSServer) readQuery(m *dns.Msg) {
func (d *DNSServer) getRecord(q dns.Question) ([]dns.RR, error) { func (d *DNSServer) getRecord(q dns.Question) ([]dns.RR, error) {
var rr []dns.RR var rr []dns.RR
var cnames []dns.RR var cnames []dns.RR
domain, ok := d.Domains[strings.ToLower(q.Name)] domain, ok := d.Domains[q.Name]
if !ok { if !ok {
return rr, fmt.Errorf("No records for domain %s", q.Name) return rr, fmt.Errorf("No records for domain %s", q.Name)
} }
@@ -133,7 +133,7 @@ func (d *DNSServer) getRecord(q dns.Question) ([]dns.RR, error) {
// answeringForDomain checks if we have any records for a domain // answeringForDomain checks if we have any records for a domain
func (d *DNSServer) answeringForDomain(name string) bool { func (d *DNSServer) answeringForDomain(name string) bool {
_, ok := d.Domains[strings.ToLower(name)] _, ok := d.Domains[name]
return ok return ok
} }
@@ -141,7 +141,7 @@ func (d *DNSServer) isAuthoritative(q dns.Question) bool {
if d.answeringForDomain(q.Name) { if d.answeringForDomain(q.Name) {
return true return true
} }
domainParts := strings.Split(strings.ToLower(q.Name), ".") domainParts := strings.Split(q.Name, ".")
for i := range domainParts { for i := range domainParts {
if d.answeringForDomain(strings.Join(domainParts[i:], ".")) { if d.answeringForDomain(strings.Join(domainParts[i:], ".")) {
return true return true
+4 -28
View File
@@ -140,11 +140,11 @@ func TestAuthoritative(t *testing.T) {
if answer.Rcode != dns.RcodeNameError { if answer.Rcode != dns.RcodeNameError {
t.Errorf("Was expecing NXDOMAIN rcode, but got [%s] instead.", dns.RcodeToString[answer.Rcode]) t.Errorf("Was expecing NXDOMAIN rcode, but got [%s] instead.", dns.RcodeToString[answer.Rcode])
} }
if len(answer.Ns) != 1 { if len(answer.Answer) != 1 {
t.Errorf("Was expecting exactly one answer (SOA) for invalid subdomain, but got %d", len(answer.Ns)) t.Errorf("Was expecting exactly one answer (SOA) for invalid subdomain, but got %d", len(answer.Answer))
} }
if answer.Ns[0].Header().Rrtype != dns.TypeSOA { if answer.Answer[0].Header().Rrtype != dns.TypeSOA {
t.Errorf("Was expecting SOA record as answer for NXDOMAIN but got [%s]", dns.TypeToString[answer.Ns[0].Header().Rrtype]) t.Errorf("Was expecting SOA record as answer for NXDOMAIN but got [%s]", dns.TypeToString[answer.Answer[0].Header().Rrtype])
} }
if !answer.MsgHdr.Authoritative { if !answer.MsgHdr.Authoritative {
t.Errorf("Was expecting authoritative bit to be set") t.Errorf("Was expecting authoritative bit to be set")
@@ -218,27 +218,3 @@ func TestResolveTXT(t *testing.T) {
} }
} }
} }
func TestCaseInsensitiveResolveA(t *testing.T) {
resolv := resolver{server: "127.0.0.1:15353"}
answer, err := resolv.lookup("aUtH.eXAmpLe.org", dns.TypeA)
if err != nil {
t.Errorf("%v", err)
}
if len(answer.Answer) == 0 {
t.Error("No answer for DNS query")
}
}
func TestCaseInsensitiveResolveSOA(t *testing.T) {
resolv := resolver{server: "127.0.0.1:15353"}
answer, _ := resolv.lookup("doesnotexist.aUtH.eXAmpLe.org", dns.TypeSOA)
if answer.Rcode != dns.RcodeNameError {
t.Errorf("Was expecing NXDOMAIN rcode, but got [%s] instead.", dns.RcodeToString[answer.Rcode])
}
if len(answer.Ns) == 0 {
t.Error("No SOA answer for DNS query")
}
}
-1
View File
@@ -73,7 +73,6 @@ func main() {
dnsServerTCP := NewDNSServer(DB, Config.General.Listen, tcpProto) dnsServerTCP := NewDNSServer(DB, Config.General.Listen, tcpProto)
// No need to parse records from config again // No need to parse records from config again
dnsServerTCP.Domains = dnsServerUDP.Domains dnsServerTCP.Domains = dnsServerUDP.Domains
dnsServerTCP.SOA = dnsServerUDP.SOA
go dnsServerUDP.Start(errChan) go dnsServerUDP.Start(errChan)
go dnsServerTCP.Start(errChan) go dnsServerTCP.Start(errChan)
} else { } else {