Skip to content

Commit

Permalink
feat: update dependencies and fix bug in mmdb.go
Browse files Browse the repository at this point in the history
- Fix a bug in `cmd/debug/mmdb.go` where the variable `err` was not being checked after calling `exnet.OutboundIPv2()`. If an error occurred, a warning message is logged.
- Update the dependency `github.com/ergoapi/util` in `go.mod` from version `v0.7.4` to `v0.7.5`.
- Update the dependency `k8s.io/apimachinery` in `go.mod` from version `v0.30.0` to `v0.30.1`.
- Update the dependency `tailscale.com` in `go.mod` from version `v1.66.1` to `v1.66.3`.
- Add a new function `MatchGlobal(src string)` in `pkg/util/ipdb/ipdb.go` to return the ISO code of a given IP address.

Signed-off-by: ysicing <i@ysicing.me>
  • Loading branch information
ysicing committed May 19, 2024
1 parent 6b13dca commit 3dfaaba
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 27 deletions.
9 changes: 7 additions & 2 deletions cmd/debug/mmdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,13 @@ func IPMMDBCommand(f factory.Factory) *cobra.Command {
return ipdb.InitMMDB()
},
Run: func(cmd *cobra.Command, args []string) {
var err error
if len(ip) == 0 {
ip, _ = exnet.OutboundIPv2()
ip, err = exnet.OutboundIPv2()
if err != nil {
logpkg.Warnf("get outbound ip failed: %s", err.Error())
return
}
if len(ip) == 0 {
logpkg.Warnf("ip is empty")
return
Expand All @@ -35,7 +40,7 @@ func IPMMDBCommand(f factory.Factory) *cobra.Command {
logpkg.Infof("China ip %s", color.SGreen(ip))
return
}
logpkg.Infof("Global ip %s", color.SBlue(ip))
logpkg.Infof("Global ip %s, Code %s", color.SBlue(ip), color.SBlue(ipdb.MatchGlobal(ip)))
},
}
cmd.Flags().StringVar(&ip, "ip", "", "ip")
Expand Down
10 changes: 5 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ require (
github.com/cheggaaa/pb/v3 v3.1.5
github.com/cockroachdb/errors v1.11.1
github.com/containerd/continuity v0.4.3
github.com/ergoapi/util v0.7.4
github.com/ergoapi/util v0.7.5
github.com/go-ping/ping v1.1.0
github.com/gofrs/flock v0.8.1
github.com/google/gops v0.3.28
Expand Down Expand Up @@ -44,10 +44,10 @@ require (
golang.org/x/net v0.25.0
google.golang.org/grpc v1.64.0
gopkg.in/natefinch/lumberjack.v2 v2.2.1
k8s.io/apimachinery v0.30.0
k8s.io/apimachinery v0.30.1
k8s.io/kubectl v0.30.0
sigs.k8s.io/yaml v1.4.0
tailscale.com v1.66.1
tailscale.com v1.66.3
)

require (
Expand Down Expand Up @@ -176,9 +176,9 @@ require (
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/api v0.30.0 // indirect
k8s.io/api v0.30.1 // indirect
k8s.io/cli-runtime v0.30.0 // indirect
k8s.io/client-go v0.30.0 // indirect
k8s.io/client-go v0.30.1 // indirect
k8s.io/component-base v0.30.0 // indirect
k8s.io/klog/v2 v2.120.1 // indirect
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
Expand Down
20 changes: 10 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/emicklei/go-restful/v3 v3.11.2 h1:1onLa9DcsMYO9P+CXaL0dStDqQ2EHHXLiz+BtnqkLAU=
github.com/emicklei/go-restful/v3 v3.11.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/ergoapi/util v0.7.4 h1:MRcj3LruGq7cc94gw7Wnz8tDE1LQ/ZQ+BUzrwyDTCfQ=
github.com/ergoapi/util v0.7.4/go.mod h1:NsV78DG20e2wkFYD7zfYzB3q2t9A4Wt3Pd4teh+A82Q=
github.com/ergoapi/util v0.7.5 h1:qjHrpE7+N3J3E2aItodp25Qn/3CvE+GHBrP58PM3J6s=
github.com/ergoapi/util v0.7.5/go.mod h1:sYCz9FgzvuU4z4GY7AL/yc5MlICu6zzGCUjSj6oZlmI=
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM=
Expand Down Expand Up @@ -502,14 +502,14 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gvisor.dev/gvisor v0.0.0-20240306221502-ee1e1f6070e3 h1:/8/t5pz/mgdRXhYOIeqqYhFAQLE4DDGegc0Y4ZjyFJM=
gvisor.dev/gvisor v0.0.0-20240306221502-ee1e1f6070e3/go.mod h1:NQHVAzMwvZ+Qe3ElSiHmq9RUm1MdNHpUZ52fiEqvn+0=
k8s.io/api v0.30.0 h1:siWhRq7cNjy2iHssOB9SCGNCl2spiF1dO3dABqZ8niA=
k8s.io/api v0.30.0/go.mod h1:OPlaYhoHs8EQ1ql0R/TsUgaRPhpKNxIMrKQfWUp8QSE=
k8s.io/apimachinery v0.30.0 h1:qxVPsyDM5XS96NIh9Oj6LavoVFYff/Pon9cZeDIkHHA=
k8s.io/apimachinery v0.30.0/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
k8s.io/api v0.30.1 h1:kCm/6mADMdbAxmIh0LBjS54nQBE+U4KmbCfIkF5CpJY=
k8s.io/api v0.30.1/go.mod h1:ddbN2C0+0DIiPntan/bye3SW3PdwLa11/0yqwvuRrJM=
k8s.io/apimachinery v0.30.1 h1:ZQStsEfo4n65yAdlGTfP/uSHMQSoYzU/oeEbkmF7P2U=
k8s.io/apimachinery v0.30.1/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
k8s.io/cli-runtime v0.30.0 h1:0vn6/XhOvn1RJ2KJOC6IRR2CGqrpT6QQF4+8pYpWQ48=
k8s.io/cli-runtime v0.30.0/go.mod h1:vATpDMATVTMA79sZ0YUCzlMelf6rUjoBzlp+RnoM+cg=
k8s.io/client-go v0.30.0 h1:sB1AGGlhY/o7KCyCEQ0bPWzYDL0pwOZO4vAtTSh/gJQ=
k8s.io/client-go v0.30.0/go.mod h1:g7li5O5256qe6TYdAMyX/otJqMhIiGgTapdLchhmOaY=
k8s.io/client-go v0.30.1 h1:uC/Ir6A3R46wdkgCV3vbLyNOYyCJ8oZnjtJGKfytl/Q=
k8s.io/client-go v0.30.1/go.mod h1:wrAqLNs2trwiCH/wxxmT/x3hKVH9PuV0GGW0oDoHVqc=
k8s.io/component-base v0.30.0 h1:cj6bp38g0ainlfYtaOQuRELh5KSYjhKxM+io7AUIk4o=
k8s.io/component-base v0.30.0/go.mod h1:V9x/0ePFNaKeKYA3bOvIbrNoluTSG+fSJKjLdjOoeXQ=
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
Expand All @@ -534,5 +534,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+s
sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
tailscale.com v1.66.1 h1:phrngVEaH9IzP2bDcy8oHmwv4dbbmTzxZsjx836aKlc=
tailscale.com v1.66.1/go.mod h1:99BIV4U3UPw36Sva04xK2ZsEpVRUkY9jCdEDSAhaNGM=
tailscale.com v1.66.3 h1:jpWat+hiobTtCosSV/c8D6S/ubgROf/S59MaIBdM9pY=
tailscale.com v1.66.3/go.mod h1:99BIV4U3UPw36Sva04xK2ZsEpVRUkY9jCdEDSAhaNGM=
36 changes: 26 additions & 10 deletions pkg/util/ipdb/ipdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,22 @@ func downLoadMMDB(path string) error {
func InitMMDB() error {
logpkg := log.GetInstance()
dbfile := common.GetDefaultMMDB()
if file, err := os.Stat(dbfile); os.IsNotExist(err) {
logpkg.Debugf("mmdb file not exist, downloading...")
if err := downLoadMMDB(dbfile); err != nil {
return err
}
logpkg.Info("mmdb file download success")
} else {
if time.Since(file.ModTime()) > 7*24*time.Hour {
logpkg.Debugf("mmdb file expired 7d, downloading...")
_ = os.Remove(dbfile)
file, err := os.Stat(dbfile)
if err != nil {
if os.IsNotExist(err) {
logpkg.Debugf("mmdb file not exist, downloading...")
if err := downLoadMMDB(dbfile); err != nil {
return err
}
logpkg.Info("mmdb file download success")
return InitMMDB()
}
return err
}
if time.Since(file.ModTime()) > 24*time.Hour {
logpkg.Debugf("mmdb file expired 1d, downloading...")
_ = os.Remove(dbfile)
return InitMMDB()
}
if !Verify() {
logpkg.Warn("mmdb invalid, remove and download")
Expand Down Expand Up @@ -107,6 +111,18 @@ func MatchCN(src string) bool {
return strings.EqualFold(record.Country.IsoCode, "CN")
}

func MatchGlobal(src string) string {
ip := net.ParseIP(src)
if ip == nil {
return "unknown"
}
if ip.IsPrivate() || ip.IsLoopback() {
return "private"
}
record, _ := Instance().Country(ip)
return record.Country.IsoCode
}

// ValidateIP 验证IP
func ValidateIP(ip string) bool {
return net.ParseIP(ip) != nil
Expand Down

0 comments on commit 3dfaaba

Please sign in to comment.