|
|
|
@ -2,6 +2,7 @@ package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"flag"
|
|
|
|
|
"fmt"
|
|
|
|
|
"log"
|
|
|
|
|
"net"
|
|
|
|
|
"net/http"
|
|
|
|
@ -14,10 +15,11 @@ var (
|
|
|
|
|
configFilePath = flag.String("config", "./config.json", "config file path")
|
|
|
|
|
httpAddress = flag.String("bind-http", "127.0.0.1", "interface to bind the HTTP server to")
|
|
|
|
|
dnsAddress = flag.String("bind-dns", "127.0.0.1", "interface to bind the DNS server to")
|
|
|
|
|
verbose = flag.Bool("verbose", false, "enable verbose logging")
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
log.SetPrefix("[Entrypoint] ")
|
|
|
|
|
log.SetFlags(log.LUTC | log.Lshortfile)
|
|
|
|
|
flag.Parse()
|
|
|
|
|
|
|
|
|
|
cfg, err := LoadConfig(*configFilePath)
|
|
|
|
@ -26,8 +28,9 @@ func main() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
|
log.Println("HTTP server listening")
|
|
|
|
|
if err := http.ListenAndServe(":80", http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
|
|
|
|
httpAddr := fmt.Sprintf("%s:80", *httpAddress)
|
|
|
|
|
log.Printf("HTTP server listening @ %s", httpAddr)
|
|
|
|
|
if err := http.ListenAndServe(httpAddr, http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
|
|
|
|
log.Printf("got request for: %s", req.URL.Hostname())
|
|
|
|
|
})); err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
@ -49,8 +52,9 @@ func main() {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.Println("DNS server listening")
|
|
|
|
|
srv := &dns.Server{Addr: ":53", Net: "udp", Handler: handler}
|
|
|
|
|
dnsAddr := fmt.Sprintf("%s:53", *dnsAddress)
|
|
|
|
|
log.Printf("DNS server listening @ %s", dnsAddr)
|
|
|
|
|
srv := &dns.Server{Addr: dnsAddr, Net: "udp", Handler: handler}
|
|
|
|
|
if err := srv.ListenAndServe(); err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|