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 { func (u *staticUpstream) AllowedPath(requestPath string) bool {
for _, ignoredSubPath := range u.IgnoredSubPaths { 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 return false
} }
} }

View file

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