mirror of
				https://github.com/nadoo/glider.git
				synced 2025-11-04 07:42:38 +08:00 
			
		
		
		
	rule: compare domains as lowercase
This commit is contained in:
		
							parent
							
								
									6909a4a372
								
							
						
					
					
						commit
						e3b716206a
					
				
							
								
								
									
										8
									
								
								rule.go
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								rule.go
									
									
									
									
									
								
							@ -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 {
 | 
				
			||||||
 | 
				
			|||||||
@ -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)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user