|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
package backend
|
|
|
|
|
|
|
|
|
|
import "github.com/golang/groupcache/lru"
|
|
|
|
|
import "github.com/miekg/dns"
|
|
|
|
|
import "github.com/hlandau/degoutils/log"
|
|
|
|
@ -175,7 +176,7 @@ func (tx *btx) determineDomain() (subname, basename, rootname string, err error)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for i := len(parts)-1; i >= 0; i-- {
|
|
|
|
|
for i := len(parts) - 1; i >= 0; i-- {
|
|
|
|
|
v := parts[i]
|
|
|
|
|
|
|
|
|
|
// scanning for rootname
|
|
|
|
@ -234,8 +235,8 @@ func (tx *btx) doRootDomain() (rrs []dns.RR, err error) {
|
|
|
|
|
nsname = "this.x--nmc." + tx.rootname
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
soa := &dns.SOA {
|
|
|
|
|
Hdr: dns.RR_Header {
|
|
|
|
|
soa := &dns.SOA{
|
|
|
|
|
Hdr: dns.RR_Header{
|
|
|
|
|
Name: dns.Fqdn(tx.rootname),
|
|
|
|
|
Ttl: 86400,
|
|
|
|
|
Class: dns.ClassINET,
|
|
|
|
@ -250,8 +251,8 @@ func (tx *btx) doRootDomain() (rrs []dns.RR, err error) {
|
|
|
|
|
Minttl: 600,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ns := &dns.NS {
|
|
|
|
|
Hdr: dns.RR_Header {
|
|
|
|
|
ns := &dns.NS{
|
|
|
|
|
Hdr: dns.RR_Header{
|
|
|
|
|
Name: dns.Fqdn(tx.rootname),
|
|
|
|
|
Ttl: 86400,
|
|
|
|
|
Class: dns.ClassINET,
|
|
|
|
@ -260,7 +261,7 @@ func (tx *btx) doRootDomain() (rrs []dns.RR, err error) {
|
|
|
|
|
Ns: dns.Fqdn(nsname),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rrs = []dns.RR{ soa, ns, }
|
|
|
|
|
rrs = []dns.RR{soa, ns}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -360,7 +361,7 @@ func (tx *btx) _findNCValue(ncv *ncValue, isubname, subname string, depth int,
|
|
|
|
|
return nil, "", merr.ErrNoSuchDomain
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return tx._findNCValue(sub, rest, head + "." + subname, depth+1, shortCircuitFunc)
|
|
|
|
|
return tx._findNCValue(sub, rest, head+"."+subname, depth+1, shortCircuitFunc)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if shortCircuitFunc != nil {
|
|
|
|
@ -382,9 +383,9 @@ func (tx *btx) addAnswersUnderNCValueActual(ncv *ncValue, sn string) (rrs []dns.
|
|
|
|
|
if pip == nil || pip.To4() == nil {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
rrs = append(rrs, &dns.A {
|
|
|
|
|
Hdr: dns.RR_Header { Name: dns.Fqdn(tx.qname), Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 600, },
|
|
|
|
|
A: pip })
|
|
|
|
|
rrs = append(rrs, &dns.A{
|
|
|
|
|
Hdr: dns.RR_Header{Name: dns.Fqdn(tx.qname), Rrtype: dns.TypeA, Class: dns.ClassINET, Ttl: 600},
|
|
|
|
|
A: pip})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// AAAA
|
|
|
|
@ -398,9 +399,9 @@ func (tx *btx) addAnswersUnderNCValueActual(ncv *ncValue, sn string) (rrs []dns.
|
|
|
|
|
if pip == nil || pip.To4() != nil {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
rrs = append(rrs, &dns.AAAA {
|
|
|
|
|
Hdr: dns.RR_Header { Name: dns.Fqdn(tx.qname), Rrtype: dns.TypeAAAA, Class: dns.ClassINET, Ttl: 600, },
|
|
|
|
|
AAAA: pip })
|
|
|
|
|
rrs = append(rrs, &dns.AAAA{
|
|
|
|
|
Hdr: dns.RR_Header{Name: dns.Fqdn(tx.qname), Rrtype: dns.TypeAAAA, Class: dns.ClassINET, Ttl: 600},
|
|
|
|
|
AAAA: pip})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NS
|
|
|
|
@ -411,9 +412,9 @@ func (tx *btx) addAnswersUnderNCValueActual(ncv *ncValue, sn string) (rrs []dns.
|
|
|
|
|
|
|
|
|
|
for _, ns := range nss {
|
|
|
|
|
ns = dns.Fqdn(ns)
|
|
|
|
|
rrs = append(rrs, &dns.NS {
|
|
|
|
|
Hdr: dns.RR_Header { Name: dns.Fqdn(tx.qname), Rrtype: dns.TypeNS, Class: dns.ClassINET, Ttl: 600, },
|
|
|
|
|
Ns: ns })
|
|
|
|
|
rrs = append(rrs, &dns.NS{
|
|
|
|
|
Hdr: dns.RR_Header{Name: dns.Fqdn(tx.qname), Rrtype: dns.TypeNS, Class: dns.ClassINET, Ttl: 600},
|
|
|
|
|
Ns: ns})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TXT
|
|
|
|
@ -423,9 +424,9 @@ func (tx *btx) addAnswersUnderNCValueActual(ncv *ncValue, sn string) (rrs []dns.
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, txt := range txts {
|
|
|
|
|
rrs = append(rrs, &dns.TXT {
|
|
|
|
|
Hdr: dns.RR_Header { Name: dns.Fqdn(tx.qname), Rrtype: dns.TypeTXT, Class: dns.ClassINET, Ttl: 600, },
|
|
|
|
|
Txt: txt })
|
|
|
|
|
rrs = append(rrs, &dns.TXT{
|
|
|
|
|
Hdr: dns.RR_Header{Name: dns.Fqdn(tx.qname), Rrtype: dns.TypeTXT, Class: dns.ClassINET, Ttl: 600},
|
|
|
|
|
Txt: txt})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO: MX
|
|
|
|
@ -568,8 +569,8 @@ func (ncv *ncValue) GetDSs() (dss []dns.DS, err error) {
|
|
|
|
|
|
|
|
|
|
a4h := hex.EncodeToString(a4b)
|
|
|
|
|
|
|
|
|
|
d := dns.DS {
|
|
|
|
|
Hdr: dns.RR_Header { Rrtype: dns.TypeDS, Class: dns.ClassINET, Ttl: 60, },
|
|
|
|
|
d := dns.DS{
|
|
|
|
|
Hdr: dns.RR_Header{Rrtype: dns.TypeDS, Class: dns.ClassINET, Ttl: 60},
|
|
|
|
|
KeyTag: uint16(a1),
|
|
|
|
|
Algorithm: uint8(a2),
|
|
|
|
|
DigestType: uint8(a3),
|
|
|
|
|