Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
admin-backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Odysseus
admin-backend
Commits
e25dd244
Commit
e25dd244
authored
Apr 29, 2024
by
brent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add get ip address
parent
11e92e6c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
99 additions
and
1 deletion
+99
-1
GeoLite2-City.mmdb
GeoLite2-City.mmdb
+0
-0
explorer.go
controllers/explorer.go
+14
-0
go.mod
go.mod
+6
-1
go.sum
go.sum
+7
-0
ipgeo.go
libs/ipgeo/ipgeo.go
+72
-0
No files found.
GeoLite2-City.mmdb
0 → 100644
View file @
e25dd244
File added
controllers/explorer.go
View file @
e25dd244
package
controllers
package
controllers
import
(
import
(
"ai_developer_admin/libs/ipgeo"
"ai_developer_admin/libs/odysseus"
"ai_developer_admin/libs/odysseus"
"ai_developer_admin/libs/postgres"
"ai_developer_admin/libs/postgres"
"ai_developer_admin/libs/registry"
"ai_developer_admin/libs/registry"
...
@@ -74,6 +75,19 @@ func (server *ExplorerController) AddressByIP() {
...
@@ -74,6 +75,19 @@ func (server *ExplorerController) AddressByIP() {
server
.
respond
(
models
.
MissingParameter
,
"Missing ips parameter"
)
server
.
respond
(
models
.
MissingParameter
,
"Missing ips parameter"
)
return
return
}
}
address
:=
make
(
map
[
string
]
interface
{})
for
_
,
value
:=
range
appRequest
.
Ips
{
temp
:=
ipgeo
.
GetIpAddr
(
value
)
logs
.
Debug
(
"AddressByIP"
,
temp
)
address
[
value
]
=
temp
}
//data, err := json.Marshal(address)
//if err != nil {
// server.respond(models.BusinessFailed, err.Error())
// return
//}
server
.
respond
(
http
.
StatusOK
,
""
,
address
)
}
}
func
(
server
*
ExplorerController
)
AllNode
()
{
func
(
server
*
ExplorerController
)
AllNode
()
{
...
...
go.mod
View file @
e25dd244
...
@@ -14,6 +14,8 @@ require (
...
@@ -14,6 +14,8 @@ require (
github.com/lib/pq v1.0.0
github.com/lib/pq v1.0.0
github.com/odysseus/cache v0.0.0-00010101000000-000000000000
github.com/odysseus/cache v0.0.0-00010101000000-000000000000
github.com/odysseus/service-registry v0.0.0-00010101000000-000000000000
github.com/odysseus/service-registry v0.0.0-00010101000000-000000000000
github.com/oschwald/geoip2-golang v1.9.0
github.com/prometheus/common v0.10.0
github.com/questdb/go-questdb-client/v2 v2.0.0
github.com/questdb/go-questdb-client/v2 v2.0.0
github.com/robfig/cron/v3 v3.0.1
github.com/robfig/cron/v3 v3.0.1
github.com/smartystreets/goconvey v1.6.4
github.com/smartystreets/goconvey v1.6.4
...
@@ -23,6 +25,8 @@ require (
...
@@ -23,6 +25,8 @@ require (
)
)
require (
require (
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 // indirect
github.com/astaxie/beego v1.12.3 // indirect
github.com/astaxie/beego v1.12.3 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
...
@@ -42,10 +46,10 @@ require (
...
@@ -42,10 +46,10 @@ require (
github.com/jtolds/gls v4.20.0+incompatible // indirect
github.com/jtolds/gls v4.20.0+incompatible // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/mitchellh/mapstructure v1.3.3 // indirect
github.com/mitchellh/mapstructure v1.3.3 // indirect
github.com/oschwald/maxminddb-golang v1.11.0 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.7.0 // indirect
github.com/prometheus/client_golang v1.7.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.10.0 // indirect
github.com/prometheus/procfs v0.1.3 // indirect
github.com/prometheus/procfs v0.1.3 // indirect
github.com/redis/go-redis/v9 v9.5.1 // indirect
github.com/redis/go-redis/v9 v9.5.1 // indirect
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
...
@@ -57,6 +61,7 @@ require (
...
@@ -57,6 +61,7 @@ require (
golang.org/x/text v0.14.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/tools v0.14.0 // indirect
golang.org/x/tools v0.14.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect
gopkg.in/yaml.v2 v2.2.8 // indirect
gopkg.in/yaml.v2 v2.2.8 // indirect
)
)
...
...
go.sum
View file @
e25dd244
...
@@ -6,8 +6,10 @@ github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8L
...
@@ -6,8 +6,10 @@ github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8L
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
github.com/Microsoft/hcsshim v0.11.1 h1:hJ3s7GbWlGK4YVV92sO88BQSyF4ZLVy7/awqOlPxFbA=
github.com/Microsoft/hcsshim v0.11.1 h1:hJ3s7GbWlGK4YVV92sO88BQSyF4ZLVy7/awqOlPxFbA=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4 h1:Hs82Z41s6SdL1CELW+XaDYmOH4hkBN4/N9og/AsOv7E=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
github.com/alicebob/gopher-json v0.0.0-20180125190556-5a6b3ba71ee6/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk=
github.com/alicebob/miniredis v2.5.0+incompatible/go.mod h1:8HZjEj4yU0dwhYHky+DxYx+6BMjkBbe5ONFIF1MXffk=
...
@@ -184,6 +186,10 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
...
@@ -184,6 +186,10 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8
github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI=
github.com/opencontainers/runc v1.1.9 h1:XR0VIHTGce5eWPkaPesqTBrhW2yAcaraWfsEalNwQLM=
github.com/opencontainers/runc v1.1.9 h1:XR0VIHTGce5eWPkaPesqTBrhW2yAcaraWfsEalNwQLM=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/oschwald/geoip2-golang v1.9.0 h1:uvD3O6fXAXs+usU+UGExshpdP13GAqp4GBrzN7IgKZc=
github.com/oschwald/geoip2-golang v1.9.0/go.mod h1:BHK6TvDyATVQhKNbQBdrj9eAvuwOMi2zSFXizL3K81Y=
github.com/oschwald/maxminddb-golang v1.11.0 h1:aSXMqYR/EPNjGE8epgqwDay+P30hCBZIveY0WZbAWh0=
github.com/oschwald/maxminddb-golang v1.11.0/go.mod h1:YmVI+H0zh3ySFR3w+oz8PCfglAFj3PuCmui13+P9zDg=
github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
...
@@ -365,6 +371,7 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
...
@@ -365,6 +371,7 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
...
...
libs/ipgeo/ipgeo.go
0 → 100644
View file @
e25dd244
package
ipgeo
import
(
"fmt"
"github.com/oschwald/geoip2-golang"
"github.com/prometheus/common/log"
"math"
"net"
)
// EarthRadius 地球半径(单位:千米)
const
EarthRadius
=
6371
// Coordinates 经纬度坐标结构体
type
Coordinates
struct
{
Latitude
float64
// 纬度
Longitude
float64
// 经度
}
// 将角度转换为弧度
func
degreesToRadians
(
degrees
float64
)
float64
{
return
degrees
*
(
math
.
Pi
/
180.0
)
}
// CalculateDistance 计算两个经纬度坐标之间的距离(单位:千米)
func
calculateDistance
(
coord1
,
coord2
*
Coordinates
)
float64
{
lat1
:=
degreesToRadians
(
coord1
.
Latitude
)
lat2
:=
degreesToRadians
(
coord2
.
Latitude
)
lon1
:=
degreesToRadians
(
coord1
.
Longitude
)
lon2
:=
degreesToRadians
(
coord2
.
Longitude
)
// Haversine 公式
dlon
:=
lon2
-
lon1
dlat
:=
lat2
-
lat1
a
:=
math
.
Pow
(
math
.
Sin
(
dlat
/
2
),
2
)
+
math
.
Cos
(
lat1
)
*
math
.
Cos
(
lat2
)
*
math
.
Pow
(
math
.
Sin
(
dlon
/
2
),
2
)
c
:=
2
*
math
.
Atan2
(
math
.
Sqrt
(
a
),
math
.
Sqrt
(
1
-
a
))
distance
:=
EarthRadius
*
c
return
distance
}
// GetIpAddr 获取Ip地址信息
func
GetIpAddr
(
ipAddress
string
)
*
geoip2
.
City
{
// 打开 MaxMind 的 GeoIP2 数据库文件
db
,
err
:=
geoip2
.
Open
(
"GeoLite2-City.mmdb"
)
if
err
!=
nil
{
log
.
Error
(
" geoip2 open error:"
,
err
)
return
nil
}
defer
func
(
db
*
geoip2
.
Reader
)
{
err
:=
db
.
Close
()
if
err
!=
nil
{
log
.
Error
(
" geoip2 close error:"
,
err
)
}
}(
db
)
// 解析 IP 地址
ip
:=
net
.
ParseIP
(
ipAddress
)
// 查询 IP 地址的位置信息
record
,
err
:=
db
.
City
(
ip
)
if
err
!=
nil
{
log
.
Error
(
"Get ip city error:"
,
err
)
return
nil
}
// 打印经纬度信息
fmt
.
Printf
(
"IP地址: %s
\n
"
,
ipAddress
)
fmt
.
Printf
(
"IP地址: %s
\n
"
,
record
.
City
.
Names
)
fmt
.
Printf
(
"经度: %f
\n
"
,
record
.
Location
.
Longitude
)
fmt
.
Printf
(
"纬度: %f
\n
"
,
record
.
Location
.
Latitude
)
//res := &Coordinates{
// Latitude: record.Location.Latitude,
// Longitude: record.Location.Longitude,
//}
return
record
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment