Handle .ygg and .cjd domains
This commit is contained in:
parent
a2be79ddcb
commit
2050bd9f13
@ -1,11 +1,11 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"fmt"
|
|
||||||
"flag"
|
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/gologme/log"
|
"github.com/gologme/log"
|
||||||
@ -13,9 +13,9 @@ import (
|
|||||||
"github.com/zhoreeq/meshname/src/meshname"
|
"github.com/zhoreeq/meshname/src/meshname"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
genconf := flag.String("genconf", "", "generate a new config for IP address")
|
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")
|
useconffile := flag.String("useconffile", "", "run daemon with a config file")
|
||||||
listenAddr := flag.String("listenaddr", "[::1]:53535", "address to listen on")
|
listenAddr := flag.String("listenaddr", "[::1]:53535", "address to listen on")
|
||||||
meshSubnetStr := flag.String("meshsubnet", "::/0", "valid IPv6 address space")
|
meshSubnetStr := flag.String("meshsubnet", "::/0", "valid IPv6 address space")
|
||||||
@ -34,7 +34,7 @@ func main() {
|
|||||||
|
|
||||||
switch {
|
switch {
|
||||||
case *genconf != "":
|
case *genconf != "":
|
||||||
confString, err := meshname.GenConf(*genconf)
|
confString, err := meshname.GenConf(*genconf, *subdomain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Errorln(err)
|
logger.Errorln(err)
|
||||||
} else {
|
} else {
|
||||||
|
@ -14,7 +14,7 @@ import (
|
|||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
)
|
)
|
||||||
|
|
||||||
const DomainZone = "meshname."
|
var DomainZones = []string{"meshname.", "ygg.", "cjd."}
|
||||||
|
|
||||||
func DomainFromIP(target net.IP) string {
|
func DomainFromIP(target net.IP) string {
|
||||||
return strings.ToLower(base32.StdEncoding.EncodeToString(target)[0:26])
|
return strings.ToLower(base32.StdEncoding.EncodeToString(target)[0:26])
|
||||||
@ -36,14 +36,14 @@ func IPFromDomain(domain string) (net.IP, error) {
|
|||||||
return ipAddr, nil
|
return ipAddr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GenConf(target string) (string, error) {
|
func GenConf(target, zone string) (string, error) {
|
||||||
ip := net.ParseIP(target)
|
ip := net.ParseIP(target)
|
||||||
if ip == nil {
|
if ip == nil {
|
||||||
return "", errors.New("Invalid IP address")
|
return "", errors.New("Invalid IP address")
|
||||||
}
|
}
|
||||||
zone := DomainFromIP(ip)
|
subDomain := DomainFromIP(ip)
|
||||||
selfRecord := fmt.Sprintf("\t\t\"%s.%s AAAA %s\"\n", zone, DomainZone, target)
|
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}", zone, selfRecord)
|
confString := fmt.Sprintf("{\n\t\"Domain\":\"%s\",\n\t\"Records\":[\n%s\t]\n}", subDomain, selfRecord)
|
||||||
|
|
||||||
return confString, nil
|
return confString, nil
|
||||||
}
|
}
|
||||||
@ -119,7 +119,9 @@ func (s *MeshnameServer) Stop() error {
|
|||||||
|
|
||||||
func (s *MeshnameServer) Start() error {
|
func (s *MeshnameServer) Start() error {
|
||||||
s.dnsServer = &dns.Server{Addr: s.listenAddr, Net: "udp"}
|
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()
|
go s.dnsServer.ListenAndServe()
|
||||||
s.log.Infoln("Started meshnamed on:", s.listenAddr)
|
s.log.Infoln("Started meshnamed on:", s.listenAddr)
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user