Ensure member names are valid (ish) DNS names, ignore case in queries

This commit is contained in:
Matthew Edwards
2019-10-01 23:07:02 +13:00
parent 871aac50ba
commit a4cd63519a
2 changed files with 10 additions and 2 deletions
+8 -1
View File
@@ -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
View File
@@ -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) {