From 4869c11d60526ba67509953afc87adb749d15b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Sun, 27 Jun 2021 17:29:16 +0800 Subject: [PATCH] =?UTF-8?q?ip2region=E5=A2=9E=E5=8A=A0IP=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/iplibrary/library_ip2region.go | 6 ++++- internal/iplibrary/library_ip2region_test.go | 23 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/internal/iplibrary/library_ip2region.go b/internal/iplibrary/library_ip2region.go index a0c6918b..8dc9deb9 100644 --- a/internal/iplibrary/library_ip2region.go +++ b/internal/iplibrary/library_ip2region.go @@ -5,6 +5,7 @@ import ( "github.com/TeaOSLab/EdgeAPI/internal/errors" "github.com/TeaOSLab/EdgeAPI/internal/remotelogs" "github.com/lionsoul2014/ip2region/binding/golang/ip2region" + "net" "strings" ) @@ -27,10 +28,13 @@ func (this *IP2RegionLibrary) Lookup(ip string) (*Result, error) { return nil, errors.New("library has not been loaded") } - // 暂不支持IPv6 + // 只支持IPv4 if strings.Contains(ip, ":") { return nil, nil } + if net.ParseIP(ip) == nil { + return nil, nil + } defer func() { // 防止panic发生 diff --git a/internal/iplibrary/library_ip2region_test.go b/internal/iplibrary/library_ip2region_test.go index fef27ef6..81df4e50 100644 --- a/internal/iplibrary/library_ip2region_test.go +++ b/internal/iplibrary/library_ip2region_test.go @@ -24,6 +24,29 @@ func TestIP2RegionLibrary_Lookup(t *testing.T) { logs.PrintAsJSON(result, t) } +func TestIP2RegionLibrary_Lookup_Valid_IP(t *testing.T) { + library := &IP2RegionLibrary{} + err := library.Load(Tea.Root + "/resources/ipdata/ip2region/ip2region.db") + if err != nil { + t.Fatal(err) + } + { + result, err := library.Lookup("114.240.223") + if err != nil { + t.Fatal(err) + } + logs.PrintAsJSON(result, t) + } + { + result, err := library.Lookup("abc") + if err != nil { + t.Fatal(err) + } + logs.PrintAsJSON(result, t) + } +} + + func TestIP2RegionLibrary_Memory(t *testing.T) { library := &IP2RegionLibrary{} err := library.Load(Tea.Root + "/resources/ipdata/ip2region/ip2region.db")