fix SOA responses when no answer
This commit is contained in:
parent
c9399a3b21
commit
c9fa805523
16
xip/xip.go
16
xip/xip.go
@ -139,8 +139,7 @@ func (xip *Xip) fqdnToA(fqdn string) []*dns.A {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (xip *Xip) nonExistentDomain(question dns.Question, message *dns.Msg) {
|
func (xip *Xip) answerWithAuthority(question dns.Question, message *dns.Msg) {
|
||||||
message.Rcode = dns.RcodeNameError
|
|
||||||
message.Ns = append(message.Ns, xip.SOARecord(question))
|
message.Ns = append(message.Ns, xip.SOARecord(question))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,7 +148,8 @@ func (xip *Xip) handleA(question dns.Question, message *dns.Msg) {
|
|||||||
records := xip.fqdnToA(fqdn)
|
records := xip.fqdnToA(fqdn)
|
||||||
|
|
||||||
if len(records) == 0 {
|
if len(records) == 0 {
|
||||||
xip.nonExistentDomain(question, message)
|
message.Rcode = dns.RcodeNameError
|
||||||
|
xip.answerWithAuthority(question, message)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ func (xip *Xip) handleA(question dns.Question, message *dns.Msg) {
|
|||||||
func (xip *Xip) handleAAAA(question dns.Question, message *dns.Msg) {
|
func (xip *Xip) handleAAAA(question dns.Question, message *dns.Msg) {
|
||||||
fqdn := question.Name
|
fqdn := question.Name
|
||||||
if hardcodedRecords[strings.ToLower(fqdn)].AAAA == nil {
|
if hardcodedRecords[strings.ToLower(fqdn)].AAAA == nil {
|
||||||
xip.nonExistentDomain(question, message)
|
xip.answerWithAuthority(question, message)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,14 +211,14 @@ func (xip *Xip) handleNS(question dns.Question, message *dns.Msg) {
|
|||||||
func (xip *Xip) handleTXT(question dns.Question, message *dns.Msg) {
|
func (xip *Xip) handleTXT(question dns.Question, message *dns.Msg) {
|
||||||
fqdn := question.Name
|
fqdn := question.Name
|
||||||
if hardcodedRecords[strings.ToLower(fqdn)].TXT == nil {
|
if hardcodedRecords[strings.ToLower(fqdn)].TXT == nil {
|
||||||
xip.nonExistentDomain(question, message)
|
xip.answerWithAuthority(question, message)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
message.Answer = append(message.Answer, &dns.TXT{
|
message.Answer = append(message.Answer, &dns.TXT{
|
||||||
Hdr: dns.RR_Header{
|
Hdr: dns.RR_Header{
|
||||||
// Ttl: uint32((time.Hour * 24 * 7).Seconds()),
|
// Ttl: uint32((time.Hour * 24 * 7).Seconds()),
|
||||||
Ttl: uint32((time.Second * 10).Seconds()),
|
Ttl: uint32((time.Second * 120).Seconds()),
|
||||||
Name: fqdn,
|
Name: fqdn,
|
||||||
Rrtype: dns.TypeTXT,
|
Rrtype: dns.TypeTXT,
|
||||||
Class: dns.ClassINET,
|
Class: dns.ClassINET,
|
||||||
@ -230,7 +230,7 @@ func (xip *Xip) handleTXT(question dns.Question, message *dns.Msg) {
|
|||||||
func (xip *Xip) handleMX(question dns.Question, message *dns.Msg) {
|
func (xip *Xip) handleMX(question dns.Question, message *dns.Msg) {
|
||||||
fqdn := question.Name
|
fqdn := question.Name
|
||||||
if hardcodedRecords[strings.ToLower(fqdn)].MX == nil {
|
if hardcodedRecords[strings.ToLower(fqdn)].MX == nil {
|
||||||
xip.nonExistentDomain(question, message)
|
xip.answerWithAuthority(question, message)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,7 +252,7 @@ func (xip *Xip) handleMX(question dns.Question, message *dns.Msg) {
|
|||||||
func (xip *Xip) handleCNAME(question dns.Question, message *dns.Msg) {
|
func (xip *Xip) handleCNAME(question dns.Question, message *dns.Msg) {
|
||||||
fqdn := question.Name
|
fqdn := question.Name
|
||||||
if hardcodedRecords[strings.ToLower(fqdn)].CNAME == nil {
|
if hardcodedRecords[strings.ToLower(fqdn)].CNAME == nil {
|
||||||
xip.nonExistentDomain(question, message)
|
xip.answerWithAuthority(question, message)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user