diff --git a/internal/app/system/controller/user.go b/internal/app/system/controller/user.go index cac405e..145d8aa 100644 --- a/internal/app/system/controller/user.go +++ b/internal/app/system/controller/user.go @@ -25,5 +25,8 @@ func (c *UserController) Login(ctx context.Context, req *system.UserLoginReq) (r return } } + //ip := libUtils.GetClientIp(ctx) + //userAgent := libUtils.GetUserAgent(ctx) + return } diff --git a/library/libUtils/utils.go b/library/libUtils/utils.go new file mode 100644 index 0000000..ab8f902 --- /dev/null +++ b/library/libUtils/utils.go @@ -0,0 +1,94 @@ +/* +* @desc:工具 +* @company:云南奇讯科技有限公司 +* @Author: yixiaohu +* @Date: 2022/3/4 22:16 + */ + +package libUtils + +import ( + "context" + "fmt" + "github.com/gogf/gf/v2/crypto/gmd5" + "github.com/gogf/gf/v2/encoding/gcharset" + "github.com/gogf/gf/v2/encoding/gjson" + "github.com/gogf/gf/v2/encoding/gurl" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/net/ghttp" + "net" +) + +// EncryptPassword 密码加密 +func EncryptPassword(password, salt string) string { + return gmd5.MustEncryptString(gmd5.MustEncryptString(password) + gmd5.MustEncryptString(salt)) +} + +// GetDomain 获取当前请求接口域名 +func GetDomain(ctx context.Context) string { + r := g.RequestFromCtx(ctx) + pathInfo, err := gurl.ParseURL(r.GetUrl(), -1) + if err != nil { + g.Log().Error(ctx, err) + return "" + } + return fmt.Sprintf("%s://%s:%s/", pathInfo["scheme"], pathInfo["host"], pathInfo["port"]) +} + +// GetClientIp 获取客户端IP +func GetClientIp(ctx context.Context) string { + return g.RequestFromCtx(ctx).GetClientIp() +} + +// GetUserAgent 获取user-agent +func GetUserAgent(ctx context.Context) string { + return ghttp.RequestFromCtx(ctx).Header.Get("User-Agent") +} + +// GetLocalIP 服务端ip +func GetLocalIP() (ip string, err error) { + var addrs []net.Addr + addrs, err = net.InterfaceAddrs() + if err != nil { + return + } + for _, addr := range addrs { + ipAddr, ok := addr.(*net.IPNet) + if !ok { + continue + } + if ipAddr.IP.IsLoopback() { + continue + } + if !ipAddr.IP.IsGlobalUnicast() { + continue + } + return ipAddr.IP.String(), nil + } + return +} + +// GetCityByIp 获取ip所属城市 +func GetCityByIp(ip string) string { + if ip == "" { + return "" + } + if ip == "[::1]" || ip == "127.0.0.1" { + return "内网IP" + } + url := "http://whois.pconline.com.cn/ipJson.jsp?json=true&ip=" + ip + bytes := g.Client().GetBytes(context.TODO(), url) + src := string(bytes) + srcCharset := "GBK" + tmp, _ := gcharset.ToUTF8(srcCharset, src) + json, err := gjson.DecodeToJson(tmp) + if err != nil { + return "" + } + if json.Get("code").Int() == 0 { + city := fmt.Sprintf("%s %s", json.Get("pro").String(), json.Get("city").String()) + return city + } else { + return "" + } +}