Skip to content

Commit 5aa053a

Browse files
badO1a5A90RPRX
andauthored
Convert domain names to lowercase before matching (#195)
Co-authored-by: RPRX <[email protected]>
1 parent 0b4858d commit 5aa053a

File tree

5 files changed

+7
-2
lines changed

5 files changed

+7
-2
lines changed

app/dns/server.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ func (s *Server) lookupIPInternal(domain string, option IPOption) ([]net.IP, err
364364
if domain == "" {
365365
return nil, newError("empty domain name")
366366
}
367+
domain = strings.ToLower(domain)
367368

368369
// normalize the FQDN form query
369370
if domain[len(domain)-1] == '.' {

app/router/condition.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ func (m *DomainMatcher) Apply(ctx routing.Context) bool {
9191
if len(domain) == 0 {
9292
return false
9393
}
94-
return m.ApplyDomain(domain)
94+
return m.ApplyDomain(strings.ToLower(domain))
9595
}
9696

9797
type MultiGeoIPMatcher struct {

common/protocol/tls/sniff.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func ReadClientHello(data []byte, h *SniffHeader) error {
102102
return errNotClientHello
103103
}
104104
if nameType == 0 {
105-
serverName := string(d[:nameLen])
105+
serverName := strings.ToLower(string(d[:nameLen]))
106106
// An SNI value may not include a
107107
// trailing dot. See
108108
// https://tools.ietf.org/html/rfc6066#section-3.

proxy/trojan/server.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,8 @@ func (s *Server) fallback(ctx context.Context, sid errors.ExportOption, err erro
412412
newError("realName = " + name).AtInfo().WriteToLog(sid)
413413
newError("realAlpn = " + alpn).AtInfo().WriteToLog(sid)
414414
}
415+
name = strings.ToLower(name)
416+
alpn = strings.ToLower(alpn)
415417

416418
if len(napfb) > 1 || napfb[""] == nil {
417419
if name != "" && napfb[name] == nil {

proxy/vless/inbound/inbound.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,8 @@ func (h *Handler) Process(ctx context.Context, network net.Network, connection i
232232
newError("realName = " + name).AtInfo().WriteToLog(sid)
233233
newError("realAlpn = " + alpn).AtInfo().WriteToLog(sid)
234234
}
235+
name = strings.ToLower(name)
236+
alpn = strings.ToLower(alpn)
235237

236238
if len(napfb) > 1 || napfb[""] == nil {
237239
if name != "" && napfb[name] == nil {

0 commit comments

Comments
 (0)