fixed hostname processing
This commit is contained in:
parent
73c604e9c4
commit
1919aed4e6
@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"net"
|
||||
"sync"
|
||||
"strings"
|
||||
|
||||
"github.com/gologme/log"
|
||||
"github.com/miekg/dns"
|
||||
@ -92,33 +93,51 @@ func (s *MeshnameServer) handleMeshnameRequest(w dns.ResponseWriter, r *dns.Msg)
|
||||
var remoteLookups = make(map[string][]dns.Question)
|
||||
m := new(dns.Msg)
|
||||
m.SetReply(r)
|
||||
s.log.Debugln(r.String())
|
||||
s.log.Debugln(r.String()) // DEBUG
|
||||
s.log.Debugln(s.networks) // DEBUG
|
||||
|
||||
var tldList []string
|
||||
for tld := range s.networks {
|
||||
tldList = append(tldList, tld)
|
||||
}
|
||||
s.log.Debugln(tldList) // DEBUG
|
||||
s.log.Debugln("tldList:", tldList) // DEBUG
|
||||
|
||||
for _, q := range r.Question {
|
||||
s.log.Debugln("q.Name:", q.Name) // DEBUG
|
||||
labels := dns.SplitDomainName(q.Name)
|
||||
s.log.Debugln(labels) // DEBUG
|
||||
s.log.Debugln("labels:", labels) // DEBUG
|
||||
if len(labels) < 2 {
|
||||
s.log.Debugln("Error: invalid domain requested")
|
||||
continue
|
||||
}
|
||||
subDomain := labels[len(labels)-2]
|
||||
s.log.Debugln(subDomain) // DEBUG
|
||||
|
||||
// process domain
|
||||
input := strings.TrimSuffix(q.Name, ".")
|
||||
subDomain := ""
|
||||
tld := ""
|
||||
for i := range tldList {
|
||||
t := tldList[i]
|
||||
if strings.HasSuffix(input, "."+t) {
|
||||
// define tld
|
||||
tld = t
|
||||
domainParts := strings.SplitN(input, "."+t, 2)
|
||||
firstPart := domainParts[0]
|
||||
firstPartLabels := dns.SplitDomainName(firstPart)
|
||||
// define hostname ("subDomain")
|
||||
subDomain = firstPartLabels[len(firstPartLabels)-1]
|
||||
}
|
||||
}
|
||||
//subDomain := labels[len(labels)-2]
|
||||
s.log.Debugln("subDomain:", subDomain) // DEBUG
|
||||
|
||||
resolvedAddr, err := IPFromDomain(&subDomain)
|
||||
if err != nil {
|
||||
s.log.Debugln(err)
|
||||
continue
|
||||
}
|
||||
// check subnet validity
|
||||
tld := labels[len(labels)-1]
|
||||
|
||||
// check subnet validity
|
||||
//tld := labels[len(labels)-1]
|
||||
if subnet, ok := s.networks[tld]; ok && subnet.Contains(resolvedAddr) {
|
||||
remoteLookups[resolvedAddr.String()] = append(remoteLookups[resolvedAddr.String()], q)
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user