From 2050bd9f13545335bea110944a8fe43576b6fd3d Mon Sep 17 00:00:00 2001 From: George Date: Sun, 8 Mar 2020 01:01:25 -0500 Subject: [PATCH] Handle .ygg and .cjd domains --- cmd/meshnamed/main.go | 8 ++++---- src/meshname/server.go | 14 ++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/cmd/meshnamed/main.go b/cmd/meshnamed/main.go index c99c3a5..9c7edbe 100644 --- a/cmd/meshnamed/main.go +++ b/cmd/meshnamed/main.go @@ -1,11 +1,11 @@ package main import ( + "flag" + "fmt" "net" "os" "os/signal" - "fmt" - "flag" "syscall" "github.com/gologme/log" @@ -13,9 +13,9 @@ import ( "github.com/zhoreeq/meshname/src/meshname" ) - func main() { genconf := flag.String("genconf", "", "generate a new config for IP address") + subdomain := flag.String("subdomain", "meshname.", "subdomain used to generate config") useconffile := flag.String("useconffile", "", "run daemon with a config file") listenAddr := flag.String("listenaddr", "[::1]:53535", "address to listen on") meshSubnetStr := flag.String("meshsubnet", "::/0", "valid IPv6 address space") @@ -34,7 +34,7 @@ func main() { switch { case *genconf != "": - confString, err := meshname.GenConf(*genconf) + confString, err := meshname.GenConf(*genconf, *subdomain) if err != nil { logger.Errorln(err) } else { diff --git a/src/meshname/server.go b/src/meshname/server.go index 988e00b..382d76f 100644 --- a/src/meshname/server.go +++ b/src/meshname/server.go @@ -14,7 +14,7 @@ import ( "github.com/miekg/dns" ) -const DomainZone = "meshname." +var DomainZones = []string{"meshname.", "ygg.", "cjd."} func DomainFromIP(target net.IP) string { return strings.ToLower(base32.StdEncoding.EncodeToString(target)[0:26]) @@ -36,14 +36,14 @@ func IPFromDomain(domain string) (net.IP, error) { return ipAddr, nil } -func GenConf(target string) (string, error) { +func GenConf(target, zone string) (string, error) { ip := net.ParseIP(target) if ip == nil { return "", errors.New("Invalid IP address") } - zone := DomainFromIP(ip) - selfRecord := fmt.Sprintf("\t\t\"%s.%s AAAA %s\"\n", zone, DomainZone, target) - confString := fmt.Sprintf("{\n\t\"Domain\":\"%s\",\n\t\"Records\":[\n%s\t]\n}", zone, selfRecord) + subDomain := DomainFromIP(ip) + selfRecord := fmt.Sprintf("\t\t\"%s.%s AAAA %s\"\n", subDomain, zone, target) + confString := fmt.Sprintf("{\n\t\"Domain\":\"%s\",\n\t\"Records\":[\n%s\t]\n}", subDomain, selfRecord) return confString, nil } @@ -119,7 +119,9 @@ func (s *MeshnameServer) Stop() error { func (s *MeshnameServer) Start() error { s.dnsServer = &dns.Server{Addr: s.listenAddr, Net: "udp"} - dns.HandleFunc(DomainZone, s.handleRequest) + for _, domain := range DomainZones { + dns.HandleFunc(domain, s.handleRequest) + } go s.dnsServer.ListenAndServe() s.log.Infoln("Started meshnamed on:", s.listenAddr) return nil