Merge branch 'master' of ssh://github.com/mholt/caddy

This commit is contained in:
Matthew Holt 2019-02-15 12:00:02 -07:00
commit c1d6c928e3
2 changed files with 14 additions and 2 deletions

View file

@ -665,7 +665,17 @@ func (u *staticUpstream) Select(r *http.Request) *UpstreamHost {
func (u *staticUpstream) AllowedPath(requestPath string) bool {
for _, ignoredSubPath := range u.IgnoredSubPaths {
if httpserver.Path(path.Clean(requestPath)).Matches(path.Join(u.From(), ignoredSubPath)) {
p := path.Clean(requestPath)
e := path.Join(u.From(), ignoredSubPath)
// Re-add a trailing slashes if the original
// paths had one and the cleaned paths don't
if strings.HasSuffix(requestPath, "/") && !strings.HasSuffix(p, "/") {
p = p + "/"
}
if strings.HasSuffix(ignoredSubPath, "/") && !strings.HasSuffix(e, "/") {
e = e + "/"
}
if httpserver.Path(p).Matches(e) {
return false
}
}

View file

@ -136,7 +136,7 @@ func TestRegisterPolicy(t *testing.T) {
func TestAllowedPaths(t *testing.T) {
upstream := &staticUpstream{
from: "/proxy",
IgnoredSubPaths: []string{"/download", "/static"},
IgnoredSubPaths: []string{"/download", "/static", "/trailingslash/"},
}
tests := []struct {
url string
@ -153,6 +153,8 @@ func TestAllowedPaths(t *testing.T) {
{"/proxy//static", false},
{"/proxy//static//download", false},
{"/proxy//download", false},
{"/proxy/trailingslash", true},
{"/proxy/trailingslash/", false},
}
for i, test := range tests {