flag for trusting proxy headers

This commit is contained in:
Matt Drollette
2014-12-11 15:02:18 -06:00
parent f4cb92b4fa
commit 76c594b83a
2 changed files with 23 additions and 8 deletions

View File

@@ -23,17 +23,21 @@ type Server struct {
Reseeder Reseeder
}
func NewServer() *Server {
func NewServer(prefix string, trustProxy bool) *Server {
config := &tls.Config{MinVersion: tls.VersionTLS10}
h := &http.Server{TLSConfig: config}
server := Server{h, nil}
th := throttled.RateLimit(throttled.PerHour(120), &throttled.VaryBy{RemoteAddr: true}, store.NewMemStore(10000))
middlewareChain := alice.New(proxiedMiddleware, loggingMiddleware, verifyMiddleware, th.Throttle)
middlewareChain := alice.New()
if trustProxy {
middlewareChain.Append(proxiedMiddleware)
}
middlewareChain.Append(loggingMiddleware, verifyMiddleware, th.Throttle)
mux := http.NewServeMux()
mux.Handle("/i2pseeds.su3", middlewareChain.Then(http.HandlerFunc(server.reseedHandler)))
mux.Handle(prefix+"/i2pseeds.su3", middlewareChain.Then(http.HandlerFunc(server.reseedHandler)))
server.Handler = mux
return &server