rule: change receiver name

This commit is contained in:
nadoo 2017-09-21 23:07:04 +08:00
parent 54e3f2ac6b
commit 65e3940bd6
2 changed files with 7 additions and 6 deletions

View File

@ -60,6 +60,7 @@ func (p *MixedProxy) ListenAndServe() {
} }
} }
// Serve .
func (p *MixedProxy) Serve(conn net.Conn) { func (p *MixedProxy) Serve(conn net.Conn) {
defer conn.Close() defer conn.Close()

12
rule.go
View File

@ -59,26 +59,26 @@ func NewRuleDialer(rules []*RuleConf, gDialer Dialer) *RuleDialer {
func (rd *RuleDialer) Addr() string { return "RULES" } func (rd *RuleDialer) Addr() string { return "RULES" }
// NextDialer return next dialer according to rule // NextDialer return next dialer according to rule
func (p *RuleDialer) NextDialer(dstAddr string) Dialer { func (rd *RuleDialer) NextDialer(dstAddr string) Dialer {
// TODO: change to index finders // TODO: change to index finders
host, _, err := net.SplitHostPort(dstAddr) host, _, err := net.SplitHostPort(dstAddr)
if err != nil { if err != nil {
// TODO: check here // TODO: check here
// logf("proxy-rule SplitHostPort ERROR: %s", err) // logf("proxy-rule SplitHostPort ERROR: %s", err)
return p.gDialer return rd.gDialer
} }
// find ip // find ip
if ip := net.ParseIP(host); ip != nil { if ip := net.ParseIP(host); ip != nil {
// check ip // check ip
if d, ok := p.ipMap.Load(ip.String()); ok { if d, ok := rd.ipMap.Load(ip.String()); ok {
return d.(Dialer) return d.(Dialer)
} }
var ret Dialer var ret Dialer
// check cidr // check cidr
p.cidrMap.Range(func(key, value interface{}) bool { rd.cidrMap.Range(func(key, value interface{}) bool {
cidr := key.(*net.IPNet) cidr := key.(*net.IPNet)
if cidr.Contains(ip) { if cidr.Contains(ip) {
ret = value.(Dialer) ret = value.(Dialer)
@ -100,12 +100,12 @@ func (p *RuleDialer) NextDialer(dstAddr string) Dialer {
domain := strings.Join(domainParts[i:length], ".") domain := strings.Join(domainParts[i:length], ".")
// find in domainMap // find in domainMap
if d, ok := p.domainMap.Load(domain); ok { if d, ok := rd.domainMap.Load(domain); ok {
return d.(Dialer) return d.(Dialer)
} }
} }
return p.gDialer return rd.gDialer
} }
// Dial dials to targer addr and return a conn // Dial dials to targer addr and return a conn