mirror of
https://github.com/caddyserver/caddy.git
synced 2025-05-30 19:55:04 -04:00
http: Fix vars matcher
This commit is contained in:
parent
0742530d3d
commit
c6bddbfbe2
@ -16,6 +16,7 @@ package caddyhttp
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/caddyserver/caddy/v2"
|
"github.com/caddyserver/caddy/v2"
|
||||||
@ -64,12 +65,23 @@ func (VarsMatcher) CaddyModule() caddy.ModuleInfo {
|
|||||||
|
|
||||||
// Match matches a request based on variables in the context.
|
// Match matches a request based on variables in the context.
|
||||||
func (m VarsMatcher) Match(r *http.Request) bool {
|
func (m VarsMatcher) Match(r *http.Request) bool {
|
||||||
vars := r.Context().Value(VarsCtxKey).(map[string]string)
|
vars := r.Context().Value(VarsCtxKey).(map[string]interface{})
|
||||||
repl := r.Context().Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
|
repl := r.Context().Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
|
||||||
for k, v := range m {
|
for k, v := range m {
|
||||||
keyExpanded := repl.ReplaceAll(k, "")
|
keyExpanded := repl.ReplaceAll(k, "")
|
||||||
valExpanded := repl.ReplaceAll(v, "")
|
valExpanded := repl.ReplaceAll(v, "")
|
||||||
if vars[keyExpanded] != valExpanded {
|
var varStr string
|
||||||
|
switch vv := vars[keyExpanded].(type) {
|
||||||
|
case string:
|
||||||
|
varStr = vv
|
||||||
|
case fmt.Stringer:
|
||||||
|
varStr = vv.String()
|
||||||
|
case error:
|
||||||
|
varStr = vv.Error()
|
||||||
|
default:
|
||||||
|
varStr = fmt.Sprintf("%v", vv)
|
||||||
|
}
|
||||||
|
if varStr != valExpanded {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user