rule: compare domains as lowercase

This commit is contained in:
nadoo 2018-01-30 23:11:04 +08:00
parent 6909a4a372
commit e3b716206a
2 changed files with 3 additions and 6 deletions

View File

@ -37,7 +37,7 @@ func NewRuleDialer(rules []*RuleConf, gDialer Dialer) *RuleDialer {
sDialer := NewStrategyDialer(r.Strategy, fwdrs, r.CheckWebSite, r.CheckDuration) sDialer := NewStrategyDialer(r.Strategy, fwdrs, r.CheckWebSite, r.CheckDuration)
for _, domain := range r.Domain { for _, domain := range r.Domain {
rd.domainMap.Store(domain, sDialer) rd.domainMap.Store(strings.ToLower(domain), sDialer)
} }
for _, ip := range r.IP { for _, ip := range r.IP {
@ -56,12 +56,10 @@ func NewRuleDialer(rules []*RuleConf, gDialer Dialer) *RuleDialer {
} }
// Addr returns RuleDialer's address, always be "RULES" // Addr returns RuleDialer's address, always be "RULES"
// func (rd *RuleDialer) Addr() string { return "RULES" } func (rd *RuleDialer) Addr() string { return "RULE DIALER, DEFAULT: " + rd.gDialer.Addr() }
func (rd *RuleDialer) Addr() string { return rd.gDialer.Addr() }
// NextDialer return next dialer according to rule // NextDialer return next dialer according to rule
func (rd *RuleDialer) NextDialer(dstAddr string) Dialer { func (rd *RuleDialer) NextDialer(dstAddr string) Dialer {
host, _, err := net.SplitHostPort(dstAddr) host, _, err := net.SplitHostPort(dstAddr)
if err != nil { if err != nil {
// TODO: check here // TODO: check here
@ -124,7 +122,7 @@ func (rd *RuleDialer) AddDomainIP(domain, ip string) error {
domainParts := strings.Split(domain, ".") domainParts := strings.Split(domain, ".")
length := len(domainParts) length := len(domainParts)
for i := length - 2; i >= 0; i-- { for i := length - 2; i >= 0; i-- {
pDomain := strings.Join(domainParts[i:length], ".") pDomain := strings.ToLower(strings.Join(domainParts[i:length], "."))
// find in domainMap // find in domainMap
if dialer, ok := rd.domainMap.Load(pDomain); ok { if dialer, ok := rd.domainMap.Load(pDomain); ok {

View File

@ -668,7 +668,6 @@ func (pc *Socks5PktConn) WriteTo(b []byte, addr net.Addr) (int, error) {
return pc.PacketConn.WriteTo(b, addr) return pc.PacketConn.WriteTo(b, addr)
} }
// buf := append([]byte{0, 0, 0}, b[:]...)
buf := append([]byte{0, 0, 0}, pc.tgtAddr...) buf := append([]byte{0, 0, 0}, pc.tgtAddr...)
buf = append(buf, b[:]...) buf = append(buf, b[:]...)
return pc.PacketConn.WriteTo(buf, pc.writeAddr) return pc.PacketConn.WriteTo(buf, pc.writeAddr)