Commit b5ec4622 authored by Matthew Holt's avatar Matthew Holt

internal: Allow use for only X-Accel-Redir (closes #1020)

(allow no arguments of paths to protect)
parent 61798884
......@@ -32,7 +32,6 @@ func isInternalRedirect(w http.ResponseWriter) bool {
// ServeHTTP implements the httpserver.Handler interface.
func (i Internal) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
// Internal location requested? -> Not found.
for _, prefix := range i.Paths {
if httpserver.Path(r.URL.Path).Matches(prefix) {
......@@ -50,7 +49,6 @@ func (i Internal) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error)
// "down the chain"
r.URL.Path = iw.Header().Get(redirectHeader)
iw.ClearHeader()
status, err = i.Next.ServeHTTP(iw, r)
}
......
......@@ -30,10 +30,12 @@ func internalParse(c *caddy.Controller) ([]string, error) {
var paths []string
for c.Next() {
if !c.NextArg() {
return paths, c.ArgErr()
if c.NextArg() {
paths = append(paths, c.Val())
}
if c.NextArg() {
return nil, c.ArgErr()
}
paths = append(paths, c.Val())
}
return paths, nil
......
......@@ -41,10 +41,14 @@ func TestInternalParse(t *testing.T) {
shouldErr bool
expectedInternalPaths []string
}{
{`internal`, false, []string{}},
{`internal /internal`, false, []string{"/internal"}},
{`internal /internal1
internal /internal2`, false, []string{"/internal1", "/internal2"}},
{`internal /internal1 /internal2`, true, nil},
}
for i, test := range tests {
actualInternalPaths, err := internalParse(caddy.NewTestController("http", test.inputInternalPaths))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment