diff --git a/component/dns/response_routing.go b/component/dns/response_routing.go index 83a6f22b2a..25382cda26 100644 --- a/component/dns/response_routing.go +++ b/component/dns/response_routing.go @@ -9,7 +9,6 @@ import ( "fmt" "net/netip" "strconv" - "strings" "github.com/daeuniverse/dae/common/consts" "github.com/daeuniverse/dae/component/routing" @@ -225,7 +224,6 @@ func (m *ResponseMatcher) Match( if qName == "" { return 0, fmt.Errorf("qName cannot be empty") } - qName = strings.TrimSuffix(strings.ToLower(qName), ".") domainMatchBitmap := m.domainMatcher.MatchDomainBitmap(qName) bin128 := make([]string, 0, len(ips)) for _, ip := range ips { diff --git a/component/routing/domain_matcher/ahocorasick_slimtrie.go b/component/routing/domain_matcher/ahocorasick_slimtrie.go index 3f9fc785d1..dd9b908ba3 100644 --- a/component/routing/domain_matcher/ahocorasick_slimtrie.go +++ b/component/routing/domain_matcher/ahocorasick_slimtrie.go @@ -7,15 +7,16 @@ package domain_matcher import ( "fmt" + "regexp" + "strings" + "github.com/daeuniverse/dae/common/consts" "github.com/daeuniverse/dae/pkg/trie" "github.com/sirupsen/logrus" "github.com/v2rayA/ahocorasick-domain" - "regexp" - "strings" ) -var ValidDomainChars = trie.NewValidChars([]byte("0123456789abcdefghijklmnopqrstuvwxyz-.^")) +var ValidDomainChars = trie.NewValidChars([]byte("0123456789abcdefghijklmnopqrstuvwxyz-.^_")) type AhocorasickSlimtrie struct { log *logrus.Logger @@ -52,7 +53,7 @@ nextPattern: case consts.RoutingDomainKey_Full: for _, r := range []byte(d) { if !ValidDomainChars.IsValidChar(r) { - n.log.Warnf("DomainMatcher: skip bad full domain: %v: unexpected chat: %v", d, r) + n.log.Warnf("DomainMatcher: skip bad full domain: %v: unexpected char: %v", d, string(r)) continue nextPattern } } @@ -60,7 +61,7 @@ nextPattern: case consts.RoutingDomainKey_Suffix: for _, r := range []byte(d) { if !ValidDomainChars.IsValidChar(r) { - n.log.Warnf("DomainMatcher: skip bad suffix domain: %v: unexpected chat: %v", d, r) + n.log.Warnf("DomainMatcher: skip bad suffix domain: %v: unexpected char: %v", d, string(r)) continue nextPattern } } diff --git a/pkg/trie/trie_test.go b/pkg/trie/trie_test.go index 408ca7cd95..d9e5697c7d 100644 --- a/pkg/trie/trie_test.go +++ b/pkg/trie/trie_test.go @@ -94,7 +94,8 @@ func TestTrie(t *testing.T) { "zib.fmc^", "zk.ytamlacbci.", "zk.ytamlacbci^", - }, NewValidChars([]byte("0123456789abcdefghijklmnopqrstuvwxyz-.^"))) + "nc.ude.ctsu.srorrim.pct_.sptth_", // https://github.com/daeuniverse/daed/issues/400 + }, NewValidChars([]byte("0123456789abcdefghijklmnopqrstuvwxyz-.^_"))) if err != nil { t.Fatal(err) }