Infinite entry point redirection.

This commit is contained in:
Ludovic Fernandez 2018-02-26 09:34:03 +01:00 committed by Traefiker Bot
parent f460c1990e
commit ed65d00574
2 changed files with 5 additions and 5 deletions

View file

@ -952,7 +952,7 @@ func (s *Server) loadConfig(configurations types.Configurations, globalConfigura
entryPoint := globalConfiguration.EntryPoints[entryPointName] entryPoint := globalConfiguration.EntryPoints[entryPointName]
n := negroni.New() n := negroni.New()
if entryPoint.Redirect != nil { if entryPoint.Redirect != nil && entryPointName != entryPoint.Redirect.EntryPoint {
if redirectHandlers[entryPointName] != nil { if redirectHandlers[entryPointName] != nil {
n.Use(redirectHandlers[entryPointName]) n.Use(redirectHandlers[entryPointName])
} else if handler, err := s.buildRedirectHandler(entryPointName, entryPoint.Redirect); err != nil { } else if handler, err := s.buildRedirectHandler(entryPointName, entryPoint.Redirect); err != nil {
@ -1141,7 +1141,7 @@ func (s *Server) loadConfig(configurations types.Configurations, globalConfigura
log.Infof("Configured IP Whitelists: %s", frontend.WhitelistSourceRange) log.Infof("Configured IP Whitelists: %s", frontend.WhitelistSourceRange)
} }
if frontend.Redirect != nil { if frontend.Redirect != nil && entryPointName != frontend.Redirect.EntryPoint {
rewrite, err := s.buildRedirectHandler(entryPointName, frontend.Redirect) rewrite, err := s.buildRedirectHandler(entryPointName, frontend.Redirect)
if err != nil { if err != nil {
log.Errorf("Error creating Frontend Redirect: %v", err) log.Errorf("Error creating Frontend Redirect: %v", err)
@ -1347,7 +1347,7 @@ func (s *Server) buildRedirect(entryPointName string) (string, string, error) {
protocol = "https" protocol = "https"
} }
replacement := protocol + "://$1" + match[0] + "$2" replacement := protocol + "://${1}" + match[0] + "${2}"
return defaultRedirectRegex, replacement, nil return defaultRedirectRegex, replacement, nil
} }

View file

@ -1071,7 +1071,7 @@ func TestServerBuildRedirect(t *testing.T) {
"https": &configuration.EntryPoint{Address: ":443", TLS: &tls.TLS{}}, "https": &configuration.EntryPoint{Address: ":443", TLS: &tls.TLS{}},
}, },
}, },
expectedReplacement: "https://$1:443$2", expectedReplacement: "https://${1}:443${2}",
}, },
{ {
desc: "Redirect endpoint http to http02 with HTTP protocol", desc: "Redirect endpoint http to http02 with HTTP protocol",
@ -1082,7 +1082,7 @@ func TestServerBuildRedirect(t *testing.T) {
"http02": &configuration.EntryPoint{Address: ":88"}, "http02": &configuration.EntryPoint{Address: ":88"},
}, },
}, },
expectedReplacement: "http://$1:88$2", expectedReplacement: "http://${1}:88${2}",
}, },
{ {
desc: "Redirect endpoint to non-existent entry point", desc: "Redirect endpoint to non-existent entry point",