From d177f3df69296ec9c6868e824614d877a6ccc49a Mon Sep 17 00:00:00 2001 From: zhylmzr Date: Mon, 25 Nov 2019 18:02:14 +0800 Subject: [PATCH] fix addr judge --- bypass.go | 14 ++++++++++---- bypass_test.go | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/bypass.go b/bypass.go index 6ad3805..e55bf97 100644 --- a/bypass.go +++ b/bypass.go @@ -179,10 +179,16 @@ func (bp *Bypass) Contains(addr string) bool { if ip == nil { // avoid long time lookupIP // invalid domain when CI - if u, err := url.ParseRequestURI(addr); err == nil { - if ipArr, err := net.LookupIP(u.Hostname()); err == nil { - for _, ip := range ipArr { - ips = append(ips, fmt.Sprintf("%v", ip)) + if _, _, ok := net.ParseCIDR(addr); ok != nil { + newAddr := addr + if strings.Index(addr, "http://") == -1 && strings.Index(addr, "https://") == -1 { + newAddr = "http://" + addr + } + if u, err := url.Parse(newAddr); err == nil { + if ipArr, err := net.LookupIP(u.Hostname()); err == nil { + for _, ip := range ipArr { + ips = append(ips, fmt.Sprintf("%v", ip)) + } } } } diff --git a/bypass_test.go b/bypass_test.go index edf6511..a81a8a1 100644 --- a/bypass_test.go +++ b/bypass_test.go @@ -174,8 +174,8 @@ var bypassContainTests = []struct { {CNIP, false, "http://www.baidu.com", true}, {CNIP, false, "http://www.google.com", false}, - {CNIP, true, "http://www.jd.com", false}, - {CNIP, true, "http://www.facebook.com", true}, + {CNIP, true, "www.jd.com", false}, + {CNIP, true, "www.facebook.com", true}, } func TestBypassContains(t *testing.T) {