Browse Source

Make Options part of the Zone

Ask Bjørn Hansen 13 years ago
parent
commit
85a76407ff
2 changed files with 12 additions and 15 deletions
  1. 9 12
      geodns.go
  2. 3 3
      serve.go

+ 9 - 12
geodns.go

@@ -34,6 +34,7 @@ type Zone struct {
 	Origin    string
 	Origin    string
 	Labels    labels
 	Labels    labels
 	LenLabels int
 	LenLabels int
+	Options   Options
 }
 }
 
 
 var (
 var (
@@ -63,17 +64,13 @@ func main() {
 	Zone.Origin = "ntppool.org"
 	Zone.Origin = "ntppool.org"
 	Zone.LenLabels = dns.LenLabels(Zone.Origin)
 	Zone.LenLabels = dns.LenLabels(Zone.Origin)
 
 
-	Options := new(Options)
-
-	//var objmap map[string]json.RawMessage
-	var objmap map[string]interface{}
-
 	b, err := ioutil.ReadFile("ntppool.org.json")
 	b, err := ioutil.ReadFile("ntppool.org.json")
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
 
 
 	if err == nil {
 	if err == nil {
+		var objmap map[string]interface{}
 		err := json.Unmarshal(b, &objmap)
 		err := json.Unmarshal(b, &objmap)
 		if err != nil {
 		if err != nil {
 			panic(err)
 			panic(err)
@@ -89,9 +86,9 @@ func main() {
 			case "ttl", "serial":
 			case "ttl", "serial":
 				switch option := k; option {
 				switch option := k; option {
 				case "ttl":
 				case "ttl":
-					Options.Ttl = int(v.(float64))
+					Zone.Options.Ttl = int(v.(float64))
 				case "serial":
 				case "serial":
-					Options.Serial = int(v.(float64))
+					Zone.Options.Serial = int(v.(float64))
 				}
 				}
 				continue
 				continue
 
 
@@ -100,7 +97,7 @@ func main() {
 			}
 			}
 		}
 		}
 
 
-		setupZoneData(data, Zone, Options)
+		setupZoneData(data, Zone)
 
 
 	}
 	}
 
 
@@ -108,10 +105,10 @@ func main() {
 
 
 	//fmt.Println("IP", string(Zone.Regions["0.us"].IPv4[0].ip))
 	//fmt.Println("IP", string(Zone.Regions["0.us"].IPv4[0].ip))
 
 
-	runServe(Zone, Options)
+	runServe(Zone)
 }
 }
 
 
-func setupZoneData(data map[string]interface{}, Zone *Zone, Options *Options) {
+func setupZoneData(data map[string]interface{}, Zone *Zone) {
 
 
 	var recordTypes = map[string]uint16{
 	var recordTypes = map[string]uint16{
 		"a":    dns.TypeA,
 		"a":    dns.TypeA,
@@ -160,8 +157,8 @@ func setupZoneData(data map[string]interface{}, Zone *Zone, Options *Options) {
 				record := new(Record)
 				record := new(Record)
 
 
 				var h dns.RR_Header
 				var h dns.RR_Header
-				fmt.Println("TTL OPTIONS", Options.Ttl)
-				h.Ttl = uint32(Options.Ttl)
+				// fmt.Println("TTL OPTIONS", Zone.Options.Ttl)
+				h.Ttl = uint32(Zone.Options.Ttl)
 				h.Class = dns.ClassINET
 				h.Class = dns.ClassINET
 				h.Rrtype = dnsType
 				h.Rrtype = dnsType
 
 

+ 3 - 3
serve.go

@@ -16,7 +16,7 @@ func getQuestionName(z *Zone, req *dns.Msg) string {
 	return strings.Join(ql, ".")
 	return strings.Join(ql, ".")
 }
 }
 
 
-func serve(w dns.ResponseWriter, req *dns.Msg, z *Zone, opt *Options) {
+func serve(w dns.ResponseWriter, req *dns.Msg, z *Zone) {
 	logPrintf("[zone %s] incoming %s %s %d from %s\n", z.Origin, req.Question[0].Name, dns.Rr_str[req.Question[0].Qtype], req.MsgHdr.Id, w.RemoteAddr())
 	logPrintf("[zone %s] incoming %s %s %d from %s\n", z.Origin, req.Question[0].Name, dns.Rr_str[req.Question[0].Qtype], req.MsgHdr.Id, w.RemoteAddr())
 
 
 	fmt.Println("Got request", req)
 	fmt.Println("Got request", req)
@@ -67,9 +67,9 @@ func serve(w dns.ResponseWriter, req *dns.Msg, z *Zone, opt *Options) {
 	return
 	return
 }
 }
 
 
-func runServe(Zone *Zone, Options *Options) {
+func runServe(Zone *Zone) {
 
 
-	dns.HandleFunc(".", func(w dns.ResponseWriter, r *dns.Msg) { serve(w, r, Zone, Options) })
+	dns.HandleFunc(".", func(w dns.ResponseWriter, r *dns.Msg) { serve(w, r, Zone) })
 	// Only listen on UDP
 	// Only listen on UDP
 	go func() {
 	go func() {
 		if err := dns.ListenAndServe(*listen, "udp", nil); err != nil {
 		if err := dns.ListenAndServe(*listen, "udp", nil); err != nil {