From 295ba66e9811abd63a43cfba68d9d76bd1d79cc1 Mon Sep 17 00:00:00 2001 From: dtapps Date: Fri, 22 Dec 2023 09:10:10 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=20`ip`=20=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- go.mod | 5 ++- go.sum | 9 +++--- ip.go | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ version.go | 2 +- 5 files changed, 99 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 4dc83d0..2d1dc9e 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ #### 安装 ```go -go get -v -u go.dtapp.net/gorequest +go get -v -u go.dtapp.net/gorequest@v1.0.40 ``` #### 使用 diff --git a/go.mod b/go.mod index 9a8deb8..e6745b2 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module go.dtapp.net/gorequest -go 1.19 +go 1.21 require ( github.com/MercuryEngineering/CookieMonster v0.0.0-20180304172713-1584578b3403 github.com/gin-gonic/gin v1.9.1 github.com/shirou/gopsutil v3.21.11+incompatible go.dtapp.net/gojson v1.0.2 - go.dtapp.net/gostring v1.0.11 + go.dtapp.net/gostring v1.0.12 go.dtapp.net/gotime v1.0.6 go.dtapp.net/gotrace_id v1.0.6 ) @@ -23,7 +23,6 @@ require ( github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.16.0 // indirect github.com/goccy/go-json v0.10.2 // indirect - github.com/google/go-cmp v0.5.8 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.6 // indirect github.com/leodido/go-urn v1.2.4 // indirect diff --git a/go.sum b/go.sum index 9d212a5..fb8f15c 100644 --- a/go.sum +++ b/go.sum @@ -24,6 +24,7 @@ github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiU github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= @@ -33,9 +34,8 @@ github.com/go-playground/validator/v10 v10.16.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QX github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= @@ -83,8 +83,8 @@ go.dtapp.net/gojson v1.0.2 h1:NjslBOhAK3XvJepkML7LXcJRPtSfp3rDXGK/29VlDBw= go.dtapp.net/gojson v1.0.2/go.mod h1:U0Vd2iSLKqdyg6oungBJVHxuYswTbeQVjruQC3/JqQ4= go.dtapp.net/gorandom v1.0.2 h1:08BdcBP/fQiRw2Ii0OXATSTtObwNydlDlqc/j/u5O8Q= go.dtapp.net/gorandom v1.0.2/go.mod h1:ZPdgalKpvFV/ATQqR0k4ns/F/IpITAZpx6WkWirr5Y8= -go.dtapp.net/gostring v1.0.11 h1:lbrQNwquiZmO8+r4phzhEPXraROvutiYOGxqE1u29Yg= -go.dtapp.net/gostring v1.0.11/go.mod h1:nnoiVXLHHNh31TxvqQN7mS7wysmiaMkLTaWRnN6inBU= +go.dtapp.net/gostring v1.0.12 h1:r1gwy4sa3SZAPJLMXBeYu7zgZLThA9a06SwRnJ1dlnA= +go.dtapp.net/gostring v1.0.12/go.mod h1:QDO8ApzmwFYzlcpA7lQxSO5ofjQZDmbshhRxQWihzyM= go.dtapp.net/gotime v1.0.6 h1:f8YowUxpZtJbYawe5s5PmvGxRj61ydlzxAPYr5Fcetg= go.dtapp.net/gotime v1.0.6/go.mod h1:Gq7eNLr2iMLP18UNWONRq4V3Uhf/ADp4bIrS+Tc6ktY= go.dtapp.net/gotrace_id v1.0.6 h1:q6s8jy50vt1820b69JKQaFqbhGS5yJGMVtocwOGOPO0= @@ -104,6 +104,7 @@ golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= diff --git a/ip.go b/ip.go index b2d65b0..ef43cf3 100644 --- a/ip.go +++ b/ip.go @@ -1,6 +1,8 @@ package gorequest import ( + "context" + "go.dtapp.net/gojson" "net" "net/http" "strings" @@ -48,3 +50,91 @@ func ClientIp(r *http.Request) string { return "" } + +// GetInsideIp 内网ip +func GetInsideIp(ctx context.Context) string { + + conn, err := net.Dial("udp", "8.8.8.8:80") + if err != nil { + panic(err) + } + defer conn.Close() + + localAddr := conn.LocalAddr().(*net.UDPAddr) + return localAddr.IP.String() +} + +// Ips 获取全部网卡的全部IP +func Ips(ctx context.Context) (map[string]string, error) { + + ips := make(map[string]string) + + //返回 interface 结构体对象的列表,包含了全部网卡信息 + interfaces, err := net.Interfaces() + if err != nil { + return nil, err + } + + //遍历全部网卡 + for _, i := range interfaces { + + // Addrs() 方法返回一个网卡上全部的IP列表 + address, err := i.Addrs() + if err != nil { + return nil, err + } + + //遍历一个网卡上全部的IP列表,组合为一个字符串,放入对应网卡名称的map中 + for _, v := range address { + ips[i.Name] += v.String() + " " + } + } + return ips, nil +} + +// GetOutsideIp 外网ip +func GetOutsideIp(ctx context.Context) string { + + // 返回结果 + type respGetOutsideIp struct { + Data struct { + Ip string `json:"ip,omitempty"` + } `json:"data"` + } + + // 请求 + getHttp := NewHttp() + getHttp.SetUri("https://api.dtapp.net/ip") + getHttp.SetUserAgent(GetRandomUserAgentSystem()) + response, err := getHttp.Get(ctx) + if err != nil { + return "0.0.0.0" + } + // 解析 + var responseJson respGetOutsideIp + err = gojson.Unmarshal(response.ResponseBody, &responseJson) + if err != nil { + return "0.0.0.0" + } + if responseJson.Data.Ip == "" { + responseJson.Data.Ip = "0.0.0.0" + } + return responseJson.Data.Ip +} + +// GetMacAddr 获取Mac地址 +func GetMacAddr(ctx context.Context) (arrays []string) { + netInterfaces, err := net.Interfaces() + if err != nil { + return arrays + } + for _, netInterface := range netInterfaces { + addr := netInterface.HardwareAddr.String() + if len(addr) == 0 { + continue + } + + arrays = append(arrays, addr) + } + return arrays +} diff --git a/version.go b/version.go index 359c6b2..1d81dff 100644 --- a/version.go +++ b/version.go @@ -1,3 +1,3 @@ package gorequest -const Version = "1.0.39" +const Version = "1.0.40"