mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-27 22:23:48 +03:00
Merge branch 'master' of ssh://github.com/mholt/caddy
This commit is contained in:
commit
c1d6c928e3
2 changed files with 14 additions and 2 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue