What happened?
Наткнулся на несостыковку: /api/sets/check-domain говорит, что сабдомен не матчится, хотя по факту трафик на него сроутится.
Вот что в src/http/handler/sets.go, в методе handleCheckDomain:
for _, d := range set.Targets.SNIDomains {
if strings.ToLower(d) == domain {
matches = append(matches, setMatch{SetName: set.Name, SetId: set.Id, Via: "manual"})
}
}
for _, d := range set.Targets.DomainsToMatch {
if strings.ToLower(d) == domain {
matches = append(matches, setMatch{SetName: set.Name, SetId: set.Id, Via: "geosite"})
}
}
А вот так работает SNI матчер в src/sni/match.go:
if set, ok := s.sets[host]; ok {
// ...
} else {
remaining := host
for {
idx := strings.IndexByte(remaining, '.')
if idx == -1 { break }
remaining = remaining[idx+1:]
if set, ok := s.sets[remaining]; ok {
...
}
}
}
При этом, в src/sni/match_test.go тесты TestMatchSNI_SuffixMatch подтверждают, что подразумевалась логика суффиксного матчинга.
Версия: v1.73.0.
Steps to reproduce
POST /api/sets с {"name":"test","enabled":true,"targets":{"sni_domains":["example.com"]}}
GET /api/sets/check-domain?domain=example.com - возвращает match;
GET /api/sets/check-domain?domain=www.example.com - возвращает null;
- При этом, реальный трафик в
www.example.com сматчиться и сроутится
Platform
OpenWrt
Installation method
install.sh (recommended script)
System diagnostics (--sysinfo output)
root@OpenWrt:~# uname -a
Linux OpenWrt 6.6.73 #0 SMP Mon Feb 3 23:09:37 2025 aarch64 GNU/Linux
b4 configuration (b4.json)
Logs
Additional context
No response
What happened?
Наткнулся на несостыковку:
/api/sets/check-domainговорит, что сабдомен не матчится, хотя по факту трафик на него сроутится.Вот что в
src/http/handler/sets.go, в методеhandleCheckDomain:А вот так работает SNI матчер в
src/sni/match.go:При этом, в
src/sni/match_test.goтестыTestMatchSNI_SuffixMatchподтверждают, что подразумевалась логика суффиксного матчинга.Версия: v1.73.0.
Steps to reproduce
POST /api/setsс{"name":"test","enabled":true,"targets":{"sni_domains":["example.com"]}}GET /api/sets/check-domain?domain=example.com- возвращает match;GET /api/sets/check-domain?domain=www.example.com- возвращает null;www.example.comсматчиться и сроутитсяPlatform
OpenWrt
Installation method
install.sh (recommended script)
System diagnostics (--sysinfo output)
b4 configuration (b4.json)
Logs
Additional context
No response