|
@@ -23,6 +23,7 @@ import (
|
|
"net"
|
|
"net"
|
|
"os"
|
|
"os"
|
|
"os/signal"
|
|
"os/signal"
|
|
|
|
+ "path/filepath"
|
|
"runtime/pprof"
|
|
"runtime/pprof"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
@@ -35,6 +36,8 @@ var serverId string
|
|
var timeStarted = time.Now()
|
|
var timeStarted = time.Now()
|
|
var qCounter = expvar.NewInt("qCounter")
|
|
var qCounter = expvar.NewInt("qCounter")
|
|
|
|
|
|
|
|
+var Config = new(AppConfig)
|
|
|
|
+
|
|
var (
|
|
var (
|
|
flagconfig = flag.String("config", "./dns/", "directory of zone files")
|
|
flagconfig = flag.String("config", "./dns/", "directory of zone files")
|
|
flagcheckconfig = flag.Bool("checkconfig", false, "check configuration and exit")
|
|
flagcheckconfig = flag.Bool("checkconfig", false, "check configuration and exit")
|
|
@@ -59,13 +62,22 @@ func init() {
|
|
func main() {
|
|
func main() {
|
|
flag.Parse()
|
|
flag.Parse()
|
|
|
|
|
|
|
|
+ configFileName := filepath.Clean(*flagconfig + "/geodns.conf")
|
|
|
|
+
|
|
if *flagcheckconfig {
|
|
if *flagcheckconfig {
|
|
dirName := *flagconfig
|
|
dirName := *flagconfig
|
|
|
|
+
|
|
|
|
+ err := configReader(configFileName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("Errors reading config", err)
|
|
|
|
+ os.Exit(2)
|
|
|
|
+ }
|
|
|
|
+
|
|
Zones := make(Zones)
|
|
Zones := make(Zones)
|
|
setupPgeodnsZone(Zones)
|
|
setupPgeodnsZone(Zones)
|
|
- err := zonesReadDir(dirName, Zones)
|
|
|
|
|
|
+ err = zonesReadDir(dirName, Zones)
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Println("Errors reading config")
|
|
|
|
|
|
+ log.Println("Errors reading zones", err)
|
|
os.Exit(2)
|
|
os.Exit(2)
|
|
}
|
|
}
|
|
return
|
|
return
|
|
@@ -90,6 +102,8 @@ func main() {
|
|
}()
|
|
}()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ go configWatcher(configFileName)
|
|
|
|
+
|
|
if *flaginter == "*" {
|
|
if *flaginter == "*" {
|
|
addrs, _ := net.InterfaceAddrs()
|
|
addrs, _ := net.InterfaceAddrs()
|
|
ips := make([]string, 0)
|
|
ips := make([]string, 0)
|