From a9317da42be423272669b9b7449d976df0389022 Mon Sep 17 00:00:00 2001 From: Ronni Skansing Date: Sun, 23 Nov 2025 12:59:55 +0100 Subject: [PATCH] ensure hosts are sorted by length Signed-off-by: Ronni Skansing --- backend/proxy/proxy.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/backend/proxy/proxy.go b/backend/proxy/proxy.go index 69d446d..872ae0d 100644 --- a/backend/proxy/proxy.go +++ b/backend/proxy/proxy.go @@ -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)