mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05: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