From 1cf9321aa01c29241cb34b3e6154ca48960fc6d7 Mon Sep 17 00:00:00 2001 From: Skyxim Date: Sat, 16 Apr 2022 11:55:49 +0800 Subject: [PATCH] fix: domain tree match failed --- component/sniffer/dispatcher.go | 24 ++++++++++++------------ config/config.go | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/component/sniffer/dispatcher.go b/component/sniffer/dispatcher.go index 42f1b2da0..73e2e9eb2 100644 --- a/component/sniffer/dispatcher.go +++ b/component/sniffer/dispatcher.go @@ -19,17 +19,17 @@ var ( var Dispatcher SnifferDispatcher type SnifferDispatcher struct { - enable bool - force bool - sniffers []C.Sniffer - reverseDomainTree *trie.DomainTrie[struct{}] - tcpHandler func(conn *CN.BufferedConn, metadata *C.Metadata) + enable bool + force bool + sniffers []C.Sniffer + domains *trie.DomainTrie[bool] + tcpHandler func(conn *CN.BufferedConn, metadata *C.Metadata) } func (sd *SnifferDispatcher) forceReplace(conn *CN.BufferedConn, metadata *C.Metadata) { host, err := sd.sniffDomain(conn, metadata) if err != nil { - log.Debugln("[Sniffer] All sniffing sniff failed with from [%s:%s] to [%s:%s]", metadata.SrcIP, metadata.SrcPort, metadata.DstIP, metadata.DstPort) + log.Debugln("[Sniffer] All sniffing sniff failed with from [%s:%s] to [%s:%s]", metadata.SrcIP, metadata.SrcPort, metadata.String(), metadata.DstPort) return } else { if sd.inReverse(host) { @@ -49,7 +49,7 @@ func (sd *SnifferDispatcher) replace(conn *CN.BufferedConn, metadata *C.Metadata host, err := sd.sniffDomain(conn, metadata) if err != nil { - log.Debugln("[Sniffer] All sniffing sniff failed with from [%s:%s] to [%s:%s]", metadata.SrcIP, metadata.SrcPort, metadata.DstIP, metadata.DstPort) + log.Debugln("[Sniffer] All sniffing sniff failed with from [%s:%s] to [%s:%s]", metadata.SrcIP, metadata.SrcPort, metadata.String(), metadata.DstPort) return } @@ -66,7 +66,7 @@ func (sd *SnifferDispatcher) TCPSniff(conn net.Conn, metadata *C.Metadata) { } func (sd *SnifferDispatcher) inReverse(host string) bool { - return sd.reverseDomainTree != nil && sd.reverseDomainTree.Search(host) != nil + return sd.domains != nil && sd.domains.Search(host) != nil } func (sd *SnifferDispatcher) replaceDomain(metadata *C.Metadata, host string) { @@ -122,11 +122,11 @@ func NewCloseSnifferDispatcher() (*SnifferDispatcher, error) { return &dispatcher, nil } -func NewSnifferDispatcher(needSniffer []C.SnifferType, force bool, reverses *trie.DomainTrie[struct{}]) (*SnifferDispatcher, error) { +func NewSnifferDispatcher(needSniffer []C.SnifferType, force bool, reverses *trie.DomainTrie[bool]) (*SnifferDispatcher, error) { dispatcher := SnifferDispatcher{ - enable: true, - force: force, - reverseDomainTree: reverses, + enable: true, + force: force, + domains: reverses, } for _, snifferName := range needSniffer { diff --git a/config/config.go b/config/config.go index c91e29aa8..5d2c6847c 100644 --- a/config/config.go +++ b/config/config.go @@ -124,7 +124,7 @@ type Sniffer struct { Enable bool Force bool Sniffers []C.SnifferType - Reverses *trie.DomainTrie[struct{}] + Reverses *trie.DomainTrie[bool] } // Experimental config @@ -928,9 +928,9 @@ func parseSniffer(snifferRaw SnifferRaw) (*Sniffer, error) { sniffer.Sniffers = append(sniffer.Sniffers, st) } - sniffer.Reverses = trie.New[struct{}]() + sniffer.Reverses = trie.New[bool]() for _, domain := range snifferRaw.Reverse { - err := sniffer.Reverses.Insert(domain, struct{}{}) + err := sniffer.Reverses.Insert(domain, true) if err != nil { return nil, fmt.Errorf("error domian[%s], error:%v", domain, err) }