From e3b716206a8c5582b43ed8395a89ba499588a3a7 Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Tue, 30 Jan 2018 23:11:04 +0800 Subject: [PATCH] rule: compare domains as lowercase --- rule.go | 8 +++----- socks5.go | 1 - 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/rule.go b/rule.go index 2a11419..dca32c0 100644 --- a/rule.go +++ b/rule.go @@ -37,7 +37,7 @@ func NewRuleDialer(rules []*RuleConf, gDialer Dialer) *RuleDialer { sDialer := NewStrategyDialer(r.Strategy, fwdrs, r.CheckWebSite, r.CheckDuration) for _, domain := range r.Domain { - rd.domainMap.Store(domain, sDialer) + rd.domainMap.Store(strings.ToLower(domain), sDialer) } for _, ip := range r.IP { @@ -56,12 +56,10 @@ func NewRuleDialer(rules []*RuleConf, gDialer Dialer) *RuleDialer { } // Addr returns RuleDialer's address, always be "RULES" -// func (rd *RuleDialer) Addr() string { return "RULES" } -func (rd *RuleDialer) Addr() string { return rd.gDialer.Addr() } +func (rd *RuleDialer) Addr() string { return "RULE DIALER, DEFAULT: " + rd.gDialer.Addr() } // NextDialer return next dialer according to rule func (rd *RuleDialer) NextDialer(dstAddr string) Dialer { - host, _, err := net.SplitHostPort(dstAddr) if err != nil { // TODO: check here @@ -124,7 +122,7 @@ func (rd *RuleDialer) AddDomainIP(domain, ip string) error { domainParts := strings.Split(domain, ".") length := len(domainParts) for i := length - 2; i >= 0; i-- { - pDomain := strings.Join(domainParts[i:length], ".") + pDomain := strings.ToLower(strings.Join(domainParts[i:length], ".")) // find in domainMap if dialer, ok := rd.domainMap.Load(pDomain); ok { diff --git a/socks5.go b/socks5.go index ce6fbd4..8fbb92d 100644 --- a/socks5.go +++ b/socks5.go @@ -668,7 +668,6 @@ func (pc *Socks5PktConn) WriteTo(b []byte, addr net.Addr) (int, error) { return pc.PacketConn.WriteTo(b, addr) } - // buf := append([]byte{0, 0, 0}, b[:]...) buf := append([]byte{0, 0, 0}, pc.tgtAddr...) buf = append(buf, b[:]...) return pc.PacketConn.WriteTo(buf, pc.writeAddr)