fixed hostname processing
This commit is contained in:
parent
73c604e9c4
commit
1919aed4e6
@ -4,6 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
"sync"
|
"sync"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/gologme/log"
|
"github.com/gologme/log"
|
||||||
"github.com/miekg/dns"
|
"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)
|
var remoteLookups = make(map[string][]dns.Question)
|
||||||
m := new(dns.Msg)
|
m := new(dns.Msg)
|
||||||
m.SetReply(r)
|
m.SetReply(r)
|
||||||
s.log.Debugln(r.String())
|
s.log.Debugln(r.String()) // DEBUG
|
||||||
s.log.Debugln(s.networks) // DEBUG
|
s.log.Debugln(s.networks) // DEBUG
|
||||||
|
|
||||||
var tldList []string
|
var tldList []string
|
||||||
for tld := range s.networks {
|
for tld := range s.networks {
|
||||||
tldList = append(tldList, tld)
|
tldList = append(tldList, tld)
|
||||||
}
|
}
|
||||||
s.log.Debugln(tldList) // DEBUG
|
s.log.Debugln("tldList:", tldList) // DEBUG
|
||||||
|
|
||||||
for _, q := range r.Question {
|
for _, q := range r.Question {
|
||||||
|
s.log.Debugln("q.Name:", q.Name) // DEBUG
|
||||||
labels := dns.SplitDomainName(q.Name)
|
labels := dns.SplitDomainName(q.Name)
|
||||||
s.log.Debugln(labels) // DEBUG
|
s.log.Debugln("labels:", labels) // DEBUG
|
||||||
if len(labels) < 2 {
|
if len(labels) < 2 {
|
||||||
s.log.Debugln("Error: invalid domain requested")
|
s.log.Debugln("Error: invalid domain requested")
|
||||||
continue
|
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)
|
resolvedAddr, err := IPFromDomain(&subDomain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.log.Debugln(err)
|
s.log.Debugln(err)
|
||||||
continue
|
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) {
|
if subnet, ok := s.networks[tld]; ok && subnet.Contains(resolvedAddr) {
|
||||||
remoteLookups[resolvedAddr.String()] = append(remoteLookups[resolvedAddr.String()], q)
|
remoteLookups[resolvedAddr.String()] = append(remoteLookups[resolvedAddr.String()], q)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user