ensure hosts are sorted by length

Signed-off-by: Ronni Skansing <rskansing@gmail.com>
This commit is contained in:
Ronni Skansing
2025-11-23 12:59:55 +01:00
parent 4754e8bf6c
commit a9317da42b
+11 -1
View File
@@ -1248,7 +1248,17 @@ func (m *ProxyHandler) replaceHostWithPhished(hostname string, config map[string
}
// second pass: look for subdomain matches
for originalHost, hostConfig := range config {
// sort keys by length (longest first) to ensure most specific matches are checked first
var sortedHosts []string
for originalHost := range config {
sortedHosts = append(sortedHosts, originalHost)
}
sort.Slice(sortedHosts, func(i, j int) bool {
return len(sortedHosts[i]) > len(sortedHosts[j])
})
for _, originalHost := range sortedHosts {
hostConfig := config[originalHost]
if strings.HasSuffix(strings.ToLower(hostname), "."+strings.ToLower(originalHost)) {
// use case-insensitive trimming to handle mixed case properly
lowerHostname := strings.ToLower(hostname)