dns

DNS client and server implementations using the Go project's dnsmessage package
Log | Files | Refs | README | LICENSE

commit 692accac0fc8763da7b9063b1948fa08415b4b7f
parent 015a48510c60210055aa9a6ac0ca5fa6d5678d74
Author: Oliver Lowe <o@olowe.co>
Date:   Thu, 18 Nov 2021 12:42:57 +1100

dohproxy: forward queries using DoT if set in config

Diffstat:
Mcmd/dohproxy/dohproxy.go | 19+++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/cmd/dohproxy/dohproxy.go b/cmd/dohproxy/dohproxy.go @@ -7,6 +7,7 @@ import ( "io" "log" "net/http" + "os" "strconv" "git.sr.ht/~otl/dns" @@ -74,7 +75,13 @@ func dnsHandler(w http.ResponseWriter, req *http.Request) { http.Error(w, "unpack query: "+err.Error(), http.StatusInternalServerError) } - resolved, err := dns.Exchange(msg, quad9) + var resolved dnsmessage.Message + var err error + if conf.usetls { + resolved, err = dns.ExchangeTLS(msg, conf.forwardaddr) + } else { + resolved, err = dns.Exchange(msg, conf.forwardaddr) + } if err != nil { log.Println(err.Error()) http.Error(w, err.Error(), http.StatusInternalServerError) @@ -92,7 +99,15 @@ func dnsHandler(w http.ResponseWriter, req *http.Request) { } } +var conf config + func main() { + var err error + conf, err = configFromFile("dohproxy.conf") + if err != nil { + fmt.Fprintln(os.Stderr, "read configuration:", err) + os.Exit(1) + } http.HandleFunc("/dns-query", dnsHandler) - log.Fatalln(http.Serve(autocert.NewListener("syd.olowe.co"), nil)) + log.Fatalln(http.Serve(autocert.NewListener(conf.listenaddr), nil)) }