mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 17:35:40 +08:00
rule: change receiver name
This commit is contained in:
parent
54e3f2ac6b
commit
65e3940bd6
1
mixed.go
1
mixed.go
@ -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
12
rule.go
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user