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"