mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-26 21:53:48 +03:00
http: Shorten regexp matcher placeholders; allow "=/" for simple matcher
This commit is contained in:
parent
14d3fd7d03
commit
7c7ef8d40e
3 changed files with 10 additions and 10 deletions
|
@ -477,7 +477,7 @@ func matcherSetFromMatcherToken(
|
|||
if tkn.Text == "*" {
|
||||
// match all requests == no matchers, so nothing to do
|
||||
return nil, true, nil
|
||||
} else if strings.HasPrefix(tkn.Text, "/") {
|
||||
} else if strings.HasPrefix(tkn.Text, "/") || strings.HasPrefix(tkn.Text, "=/") {
|
||||
// convenient way to specify a single path match
|
||||
return map[string]json.RawMessage{
|
||||
"path": caddyconfig.JSON(caddyhttp.MatchPath{tkn.Text}, warnings),
|
||||
|
|
|
@ -216,7 +216,7 @@ func (MatchPathRE) CaddyModule() caddy.ModuleInfo {
|
|||
// Match returns true if r matches m.
|
||||
func (m MatchPathRE) Match(r *http.Request) bool {
|
||||
repl := r.Context().Value(caddy.ReplacerCtxKey).(caddy.Replacer)
|
||||
return m.MatchRegexp.Match(r.URL.Path, repl, "path_regexp")
|
||||
return m.MatchRegexp.Match(r.URL.Path, repl)
|
||||
}
|
||||
|
||||
// CaddyModule returns the Caddy module information.
|
||||
|
@ -363,7 +363,7 @@ func (m *MatchHeaderRE) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
|
|||
func (m MatchHeaderRE) Match(r *http.Request) bool {
|
||||
for field, rm := range m {
|
||||
repl := r.Context().Value(caddy.ReplacerCtxKey).(caddy.Replacer)
|
||||
match := rm.Match(r.Header.Get(field), repl, "header_regexp")
|
||||
match := rm.Match(r.Header.Get(field), repl)
|
||||
if !match {
|
||||
return false
|
||||
}
|
||||
|
@ -638,7 +638,7 @@ func (mre *MatchRegexp) Validate() error {
|
|||
// (namespace). Capture groups stored to repl will take on
|
||||
// the name "http.matchers.<scope>.<mre.Name>.<N>" where
|
||||
// <N> is the name or number of the capture group.
|
||||
func (mre *MatchRegexp) Match(input string, repl caddy.Replacer, scope string) bool {
|
||||
func (mre *MatchRegexp) Match(input string, repl caddy.Replacer) bool {
|
||||
matches := mre.compiled.FindStringSubmatch(input)
|
||||
if matches == nil {
|
||||
return false
|
||||
|
@ -646,14 +646,14 @@ func (mre *MatchRegexp) Match(input string, repl caddy.Replacer, scope string) b
|
|||
|
||||
// save all capture groups, first by index
|
||||
for i, match := range matches {
|
||||
key := fmt.Sprintf("http.matchers.%s.%s.%d", scope, mre.Name, i)
|
||||
key := fmt.Sprintf("http.regexp.%s.%d", mre.Name, i)
|
||||
repl.Set(key, match)
|
||||
}
|
||||
|
||||
// then by name
|
||||
for i, name := range mre.compiled.SubexpNames() {
|
||||
if i != 0 && name != "" {
|
||||
key := fmt.Sprintf("http.matchers.%s.%s.%s", scope, mre.Name, name)
|
||||
key := fmt.Sprintf("http.regexp.%s.%s", mre.Name, name)
|
||||
repl.Set(key, matches[i])
|
||||
}
|
||||
}
|
||||
|
|
|
@ -324,10 +324,10 @@ func TestPathREMatcher(t *testing.T) {
|
|||
}
|
||||
|
||||
for key, expectVal := range tc.expectRepl {
|
||||
placeholder := fmt.Sprintf("{http.matchers.path_regexp.%s}", key)
|
||||
placeholder := fmt.Sprintf("{http.regexp.%s}", key)
|
||||
actualVal := repl.ReplaceAll(placeholder, "<empty>")
|
||||
if actualVal != expectVal {
|
||||
t.Errorf("Test %d [%v]: Expected placeholder {http.matchers.path_regexp.%s} to be '%s' but got '%s'",
|
||||
t.Errorf("Test %d [%v]: Expected placeholder {http.regexp.%s} to be '%s' but got '%s'",
|
||||
i, tc.match.Pattern, key, expectVal, actualVal)
|
||||
continue
|
||||
}
|
||||
|
@ -442,10 +442,10 @@ func TestHeaderREMatcher(t *testing.T) {
|
|||
}
|
||||
|
||||
for key, expectVal := range tc.expectRepl {
|
||||
placeholder := fmt.Sprintf("{http.matchers.header_regexp.%s}", key)
|
||||
placeholder := fmt.Sprintf("{http.regexp.%s}", key)
|
||||
actualVal := repl.ReplaceAll(placeholder, "<empty>")
|
||||
if actualVal != expectVal {
|
||||
t.Errorf("Test %d [%v]: Expected placeholder {http.matchers.header_regexp.%s} to be '%s' but got '%s'",
|
||||
t.Errorf("Test %d [%v]: Expected placeholder {http.regexp.%s} to be '%s' but got '%s'",
|
||||
i, tc.match, key, expectVal, actualVal)
|
||||
continue
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue