diff --git a/http.go b/http.go
index 7e89ac9..59ab7b8 100644
--- a/http.go
+++ b/http.go
@@ -440,8 +440,10 @@ func summaryHandler(w http.ResponseWriter, r *http.Request) {
}
writeHeader(w, r)
- // loop through each of the seeders
- for _, s := range config.seeders {
+ // loop through each of the seeder name from a slice so they are always returned in
+ // the same order then get a pointer to the seeder struct
+ for _, n := range config.order {
+ s := config.seeders[n]
hc.Name = s.name
// fill the structs so they can be displayed via the template
@@ -505,16 +507,23 @@ func summaryHandler(w http.ResponseWriter, r *http.Request) {
// writeHeader will output the standard header
func writeHeader(w http.ResponseWriter, r *http.Request) {
// we are using basic and simple html here. No fancy graphics or css
- h := `
+ h1 := `
dnsseeder
Summary
-
-
-
`
- fmt.Fprintf(w, h)
+ fmt.Fprintf(w, h1)
+
+ // read the seeder name
+ n := r.FormValue("s")
+ if n != "" {
+ s := getSeederByName(n)
+ if s != nil {
+ fmt.Fprintf(w, "
Seeder: %s", html.EscapeString(s.name))
+ }
+ }
+ fmt.Fprintf(w, "
")
}
// writeFooter will output the standard footer
diff --git a/main.go b/main.go
index 689c68e..47b696d 100644
--- a/main.go
+++ b/main.go
@@ -37,6 +37,7 @@ type configData struct {
stats bool // stats cmdline option
seeders map[string]*dnsseeder // holds a pointer to all the current seeders
smtx sync.RWMutex // protect the seeders map
+ order []string // the order of loading the netfiles so we can display in this order
dns map[string][]dns.RR // holds details of all the currently served dns records
dnsmtx sync.RWMutex // protect the dns map
dnsUnknown uint64 // the number of dns requests for we are not configured to handle
@@ -77,6 +78,7 @@ func main() {
config.seeders = make(map[string]*dnsseeder)
config.dns = make(map[string][]dns.RR)
+ config.order = []string{}
for _, nwFile := range netwFiles {
nnw, err := loadNetwork(nwFile)
@@ -87,6 +89,7 @@ func main() {
if nnw != nil {
// FIXME - lock this
config.seeders[nnw.name] = nnw
+ config.order = append(config.order, nnw.name)
}
}
@@ -214,15 +217,6 @@ func updateDNSCounts(name, qtype string) {
}
}
-func getSeederByName(name string) *dnsseeder {
- for _, s := range config.seeders {
- if s.name == name {
- return s
- }
- }
- return nil
-}
-
/*
*/
diff --git a/seeder.go b/seeder.go
index a54075f..3ae3dfe 100644
--- a/seeder.go
+++ b/seeder.go
@@ -390,6 +390,16 @@ func (s *dnsseeder) isFull() bool {
return false
}
+// getSeederByName returns a pointer to the seeder based on its name or nil if not found
+func getSeederByName(name string) *dnsseeder {
+ for _, s := range config.seeders {
+ if s.name == name {
+ return s
+ }
+ }
+ return nil
+}
+
/*
*/