mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-11-03 19:17:29 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package middleware
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
const caseSensitivePathEnv = "CASE_SENSITIVE_PATH"
 | 
						|
 | 
						|
func init() {
 | 
						|
	initCaseSettings()
 | 
						|
}
 | 
						|
 | 
						|
// CaseSensitivePath determines if paths should be case sensitive.
 | 
						|
// This is configurable via CASE_SENSITIVE_PATH environment variable.
 | 
						|
// It defaults to false.
 | 
						|
var CaseSensitivePath = true
 | 
						|
 | 
						|
// initCaseSettings loads case sensitivity config from environment variable.
 | 
						|
//
 | 
						|
// This could have been in init, but init cannot be called from tests.
 | 
						|
func initCaseSettings() {
 | 
						|
	switch os.Getenv(caseSensitivePathEnv) {
 | 
						|
	case "0", "false":
 | 
						|
		CaseSensitivePath = false
 | 
						|
	default:
 | 
						|
		CaseSensitivePath = true
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// Path represents a URI path, maybe with pattern characters.
 | 
						|
type Path string
 | 
						|
 | 
						|
// Matches checks to see if other matches p.
 | 
						|
//
 | 
						|
// Path matching will probably not always be a direct
 | 
						|
// comparison; this method assures that paths can be
 | 
						|
// easily and consistently matched.
 | 
						|
func (p Path) Matches(other string) bool {
 | 
						|
	if CaseSensitivePath {
 | 
						|
		return strings.HasPrefix(string(p), other)
 | 
						|
	}
 | 
						|
	return strings.HasPrefix(strings.ToLower(string(p)), strings.ToLower(other))
 | 
						|
}
 |