diff --git a/app.go b/app.go index 1cfe933..d7722ba 100644 --- a/app.go +++ b/app.go @@ -8,7 +8,7 @@ import ( "strings" ) -const Version = "1.0.11" +const Version = "1.0.12" type App struct { V4Region ip2region.Ip2Region // IPV4 diff --git a/app_test.go b/app_test.go index 7fe1acb..17de700 100644 --- a/app_test.go +++ b/app_test.go @@ -8,8 +8,9 @@ import ( var app App func TestOnlineDownload(t *testing.T) { - //t.Log(app.V4db.OnlineDownload()) // 在线下载ipv4数据库 - //t.Log(app.V6db.OnlineDownload()) // 在线下载ipv6数据库 + //t.Log(app.V4db.OnlineDownload()) // 在线下载ipv4数据库 + //t.Log(app.V6db.OnlineDownload()) // 在线下载ipv6数据库 + //t.Log(app.V4Region.OnlineDownload()) // 在线下载ip2region数据库 } func TestIp(t *testing.T) { diff --git a/ip2region/download.go b/ip2region/download.go new file mode 100644 index 0000000..2e95e61 --- /dev/null +++ b/ip2region/download.go @@ -0,0 +1,17 @@ +package ip2region + +import ( + "io/ioutil" + "net/http" +) + +func getOnline() ([]byte, error) { + resp, err := http.Get("https://ghproxy.com/?q=https://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.db?raw=true") + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + return body, err +} diff --git a/ip2region/ip2region.db b/ip2region/ip2region.db index 3b6a296..c43f884 100644 Binary files a/ip2region/ip2region.db and b/ip2region/ip2region.db differ diff --git a/ip2region/ip2region.go b/ip2region/ip2region.go index 16305d1..a767860 100644 --- a/ip2region/ip2region.go +++ b/ip2region/ip2region.go @@ -4,6 +4,8 @@ import ( _ "embed" "errors" "go.dtapp.net/gostring" + "io/ioutil" + "log" "os" "strconv" "strings" @@ -160,3 +162,16 @@ func ip2long(IpStr string) (int64, error) { return sum, nil } + +func (r *Ip2Region) OnlineDownload() (err error) { + tmpData, err := getOnline() + if err != nil { + return errors.New("下载失败 %s" + err.Error()) + } + if err := ioutil.WriteFile("./ip2region.db", tmpData, 0644); err == nil { + log.Printf("已下载最新 ip2region 数据库 %s ", "./ip2region.db") + } else { + return errors.New("保存失败") + } + return nil +}