cmd/derper: allow http port configuration

Signed-off-by: Arnaud Dezandee <dezandee.arnaud@gmail.com>
pull/3534/head
Arnaud Dezandee 3 years ago committed by Brad Fitzpatrick
parent e34ba3223c
commit 656809e4ee

@ -12,6 +12,7 @@ import (
"errors" "errors"
"expvar" "expvar"
"flag" "flag"
"fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"log" "log"
@ -36,6 +37,7 @@ import (
var ( var (
dev = flag.Bool("dev", false, "run in localhost development mode") dev = flag.Bool("dev", false, "run in localhost development mode")
addr = flag.String("a", ":443", "server address") addr = flag.String("a", ":443", "server address")
httpPort = flag.Int("http-port", 80, "The port on which to serve HTTP. Set to -1 to disable")
configPath = flag.String("c", "", "config file path") configPath = flag.String("c", "", "config file path")
certMode = flag.String("certmode", "letsencrypt", "mode for getting a cert. possible options: manual, letsencrypt") certMode = flag.String("certmode", "letsencrypt", "mode for getting a cert. possible options: manual, letsencrypt")
certDir = flag.String("certdir", tsweb.DefaultCertDir("derper-certs"), "directory to store LetsEncrypt certs, if addr's port is :443") certDir = flag.String("certdir", tsweb.DefaultCertDir("derper-certs"), "directory to store LetsEncrypt certs, if addr's port is :443")
@ -250,24 +252,26 @@ func main() {
w.Header().Set("Content-Security-Policy", "default-src 'none'; frame-ancestors 'none'; form-action 'none'; base-uri 'self'; block-all-mixed-content; plugin-types 'none'") w.Header().Set("Content-Security-Policy", "default-src 'none'; frame-ancestors 'none'; form-action 'none'; base-uri 'self'; block-all-mixed-content; plugin-types 'none'")
mux.ServeHTTP(w, r) mux.ServeHTTP(w, r)
}) })
go func() { if *httpPort > -1 {
port80srv := &http.Server{ go func() {
Addr: net.JoinHostPort(listenHost, "80"), port80srv := &http.Server{
Handler: certManager.HTTPHandler(tsweb.Port80Handler{Main: mux}), Addr: net.JoinHostPort(listenHost, fmt.Sprintf("%d", *httpPort)),
ReadTimeout: 30 * time.Second, Handler: certManager.HTTPHandler(tsweb.Port80Handler{Main: mux}),
// Crank up WriteTimeout a bit more than usually ReadTimeout: 30 * time.Second,
// necessary just so we can do long CPU profiles // Crank up WriteTimeout a bit more than usually
// and not hit net/http/pprof's "profile // necessary just so we can do long CPU profiles
// duration exceeds server's WriteTimeout". // and not hit net/http/pprof's "profile
WriteTimeout: 5 * time.Minute, // duration exceeds server's WriteTimeout".
} WriteTimeout: 5 * time.Minute,
err := port80srv.ListenAndServe()
if err != nil {
if err != http.ErrServerClosed {
log.Fatal(err)
} }
} err := port80srv.ListenAndServe()
}() if err != nil {
if err != http.ErrServerClosed {
log.Fatal(err)
}
}
}()
}
err = httpsrv.ListenAndServeTLS("", "") err = httpsrv.ListenAndServeTLS("", "")
} else { } else {
log.Printf("derper: serving on %s", *addr) log.Printf("derper: serving on %s", *addr)

Loading…
Cancel
Save