You've already forked speedtest-go
23
web/web.go
23
web/web.go
@ -14,6 +14,7 @@ import (
|
||||
"github.com/go-chi/chi/middleware"
|
||||
"github.com/go-chi/cors"
|
||||
"github.com/go-chi/render"
|
||||
"github.com/pires/go-proxyproto"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/librespeed/speedtest/config"
|
||||
@ -46,7 +47,8 @@ func ListenAndServe(conf *config.Config) error {
|
||||
r.Use(middleware.Logger)
|
||||
r.Use(middleware.Recoverer)
|
||||
|
||||
log.Infof("Starting backend server on %s", net.JoinHostPort(conf.BindAddress, conf.Port))
|
||||
addr := net.JoinHostPort(conf.BindAddress, conf.Port)
|
||||
log.Infof("Starting backend server on %s", addr)
|
||||
r.Get("/*", pages)
|
||||
r.HandleFunc("/empty", empty)
|
||||
r.HandleFunc("/backend/empty", empty)
|
||||
@ -75,7 +77,24 @@ func ListenAndServe(conf *config.Config) error {
|
||||
r.HandleFunc("/stats.php", results.Stats)
|
||||
r.HandleFunc("/backend/stats.php", results.Stats)
|
||||
|
||||
return http.ListenAndServe(net.JoinHostPort(conf.BindAddress, conf.Port), r)
|
||||
go listenProxyProtocol(conf, r)
|
||||
return http.ListenAndServe(addr, r)
|
||||
}
|
||||
|
||||
func listenProxyProtocol(conf *config.Config, r *chi.Mux) {
|
||||
if conf.ProxyProtocolPort != "0" {
|
||||
addr := net.JoinHostPort(conf.BindAddress, conf.ProxyProtocolPort)
|
||||
l, err := net.Listen("tcp", addr)
|
||||
if err != nil {
|
||||
log.Fatal("Cannot listen on proxy protocol port %s: %s", conf.ProxyProtocolPort, err)
|
||||
}
|
||||
|
||||
pl := &proxyproto.Listener{Listener: l}
|
||||
defer pl.Close()
|
||||
|
||||
log.Infof("Starting proxy protocol listener on %s", addr)
|
||||
log.Fatal(http.Serve(pl, r))
|
||||
}
|
||||
}
|
||||
|
||||
func pages(w http.ResponseWriter, r *http.Request) {
|
||||
|
Reference in New Issue
Block a user