|
|
|
@ -206,6 +206,7 @@ func main() {
|
|
|
|
|
mux.Handle("/robots.txt", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
io.WriteString(w, "User-agent: *\nDisallow: /\n")
|
|
|
|
|
}))
|
|
|
|
|
mux.Handle("/generate_204", http.HandlerFunc(serveNoContent))
|
|
|
|
|
debug := tsweb.Debugger(mux)
|
|
|
|
|
debug.KV("TLS hostname", *hostname)
|
|
|
|
|
debug.KV("Mesh key", s.HasMeshKey())
|
|
|
|
@ -293,9 +294,12 @@ func main() {
|
|
|
|
|
})
|
|
|
|
|
if *httpPort > -1 {
|
|
|
|
|
go func() {
|
|
|
|
|
port80mux := http.NewServeMux()
|
|
|
|
|
port80mux.HandleFunc("/generate_204", serveNoContent)
|
|
|
|
|
port80mux.Handle("/", certManager.HTTPHandler(tsweb.Port80Handler{Main: mux}))
|
|
|
|
|
port80srv := &http.Server{
|
|
|
|
|
Addr: net.JoinHostPort(listenHost, fmt.Sprintf("%d", *httpPort)),
|
|
|
|
|
Handler: certManager.HTTPHandler(tsweb.Port80Handler{Main: mux}),
|
|
|
|
|
Handler: port80mux,
|
|
|
|
|
ErrorLog: quietLogger,
|
|
|
|
|
ReadTimeout: 30 * time.Second,
|
|
|
|
|
// Crank up WriteTimeout a bit more than usually
|
|
|
|
@ -322,6 +326,11 @@ func main() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// For captive portal detection
|
|
|
|
|
func serveNoContent(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
w.WriteHeader(http.StatusNoContent)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// probeHandler is the endpoint that js/wasm clients hit to measure
|
|
|
|
|
// DERP latency, since they can't do UDP STUN queries.
|
|
|
|
|
func probeHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|