mirror of
https://github.com/mje-nz/zerotier-dns.git
synced 2024-05-11 05:55:15 +00:00
Ensure member names are valid (ish) DNS names, ignore case in queries
This commit is contained in:
+8
-1
@@ -7,6 +7,7 @@ import (
|
||||
"fmt"
|
||||
"net"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
@@ -106,8 +107,14 @@ func updateDNS() time.Time {
|
||||
for _, n := range *lst {
|
||||
// For all online members
|
||||
if n.Online {
|
||||
// Sanitize name
|
||||
name := strings.ToLower(n.Name)
|
||||
name = strings.ReplaceAll(name, " ", "-")
|
||||
re := regexp.MustCompile("[^a-zA-Z0-9-]+")
|
||||
name = re.ReplaceAllString(name, "")
|
||||
record := name + "." + domain + "." + suffix + "."
|
||||
|
||||
// Clear current DNS records
|
||||
record := n.Name + "." + domain + "." + suffix + "."
|
||||
dnssrv.DNSDatabase[record] = dnssrv.Records{}
|
||||
ip6 := []net.IP{}
|
||||
ip4 := []net.IP{}
|
||||
|
||||
+2
-1
@@ -8,6 +8,7 @@ import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
@@ -110,7 +111,7 @@ func handleDNSRequest(w dns.ResponseWriter, r *dns.Msg) {
|
||||
func parseQuery(m *dns.Msg) {
|
||||
for _, q := range m.Question {
|
||||
queryChan <- q.Name
|
||||
if rec, ok := DNSDatabase[q.Name]; ok {
|
||||
if rec, ok := DNSDatabase[strings.ToLower(q.Name)]; ok {
|
||||
switch q.Qtype {
|
||||
case dns.TypeA:
|
||||
for _, ip := range shuffle(rec.A) {
|
||||
|
||||
Reference in New Issue
Block a user