|
- package aes
-
- import (
- "applet/app/cfg"
- "applet/app/utils"
- "fmt"
- "net"
- "net/http"
- "strings"
- )
-
- func GetIpAddress(request *http.Request, masterId, pvd string) {
- //geoIp2db, _ := geoip2db.NewGeoipDbByStatik()
- //defer geoIp2db.Close()
- ip := GetRemoteClientIp(request)
- if ip != "" {
- //record, _ := geoIp2db.City(net.ParseIP(ip))
- //if record.Country.Names != nil && record.Subdivisions != nil && record.City.Names != nil {
-
- // aesData := fmt.Sprintf(
- // `{"country":"%s","province":"%s","city":"%s","ip":"%s", "master_id":"%s", "url":"%s", "pvd":"%s"}`,
- // record.Country.Names["zh-CN"], record.Subdivisions[0].Names["zh-CN"], record.City.Names["zh-CN"], ip, masterId, request.Host, pvd)
-
- aesData := fmt.Sprintf(
- `{"ip":"%s", "master_id":"%s", "url":"%s", "pvd":"%s"}`,
- ip, masterId, request.Host, pvd)
- fmt.Println(aesData)
- if cfg.Prd {
- //TODO::正式环境,推入rabbitMq
- //ch, _ := rabbit.Cfg.Pool.GetChannel()
- //defer ch.Release()
- //ch.Publish(md.UserVisitIpAddress, aesData, "")
- }
- //}
- }
-
- return
- }
-
- //func GetIp() (ip string) {
- // conn, _ := net.Dial("udp", "google.com:80")
- // if err != nil {
- // return
- // }
- // defer conn.Close()
- // ip = strings.Split(conn.LocalAddr().String(), ":")[0]
- // return
- //}
-
- // GetRemoteClientIp 获取远程客户端IP
- func GetRemoteClientIp(r *http.Request) string {
- remoteIp := r.RemoteAddr
- if ip := r.Header.Get("X-Real-IP"); ip != "" {
- if strings.Contains(ip, "172.20") {
- ips := strings.Split(r.Header.Get("X-Forwarded-For"), ",")
- if len(ips) == 2 {
- remoteIp = ips[0]
- }
- } else {
- remoteIp = ip
- }
- } else if ip = r.Header.Get("X-Forwarded-For"); ip != "" {
- remoteIp = ip
- } else {
- remoteIp, _, _ = net.SplitHostPort(remoteIp)
- //remoteIp = ""
- }
-
- //本地ip
- if remoteIp == "127.0.0.1" || remoteIp == "::1" {
- remoteIp = "221.4.210.1651"
- }
-
- if r.Host == "h5.99813608.zhiyingos.com" {
- utils.FilePutContents("GetRemoteClientIp", utils.SerializeStr(map[string]interface{}{
- "header": r.Header,
- "remoteIp": remoteIp,
- }))
- }
- fmt.Println(">>>>>>>>>>>>>>>>>>>>GetRemoteClientIp<<<<<<<<<<<<<<<<<<", remoteIp)
- return remoteIp
- }
|