| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package utils
- import (
- "crypto/hmac"
- "crypto/sha1"
- "encoding/hex"
- "git.qianqiusoft.com/qianqiusoft/go-uuid/uuid"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/logs"
- "github.com/gin-gonic/gin"
- "net/url"
- "regexp"
- "strings"
- )
- const (
- hmac_key = "hmac_key_"
- )
- func NewUUID() string {
- //return uuid.NewV4().String()
- return uuid.New()
- }
- func GenerateToken(plain string) string {
- hash := hmac.New(sha1.New, []byte(hmac_key))
- hash.Write([]byte(plain))
- return hex.EncodeToString(hash.Sum(nil))
- }
- func TotalPage(record, size int) int {
- tp := record / size
- if tp < 0 {
- return 1
- }
- if record%size == 0 {
- return tp
- }
- return tp + 1
- }
- func FormatForBrowse(agent, val string) string {
- if strings.Contains(strings.ToLower(agent), "safari/") && !strings.Contains(strings.ToLower(agent), "chrome/") {
- logs.Debug("Safari浏览器编码")
- } else if strings.Contains(strings.ToLower(agent), "firefox/") {
- logs.Debug("Firefox浏览器编码")
- } else if strings.Contains(strings.ToLower(agent), "chrome/") && strings.Contains(strings.ToLower(agent), "safari/") && !strings.Contains(strings.ToLower(agent), "edge/") {
- logs.Debug("Chrome浏览器编码")
- } else {
- logs.Debug("IE浏览器编码")
- val = url.QueryEscape(val)
- val = strings.Replace(val, "+", "%20", -1)
- }
- return val
- }
- func GetHostname(ctx *gin.Context)string{
- host := ctx.Request.Host
- i := strings.Index(host, ":")
- if i > 0{
- host = host[:i]
- }
- return host
- }
- /**
- * @brief: 把域名分成列表,最小包括部分顶级域名,例如:www.baidu.com 返回[www.baidu.com, baidu.com]
- × @param1 hostname: 请求名称
- */
- func GetHostnames(ctx *gin.Context)[]string{
- hostname := GetHostname(ctx)
- patternstr := `(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})(\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})){3}`
- reg := regexp.MustCompile(patternstr)
- if res := reg.FindAllString(hostname, -1); res == nil {
- arr := []string{}
- parts := strings.Split(hostname, ".")
- if len(parts) <= 2{
- arr = append(arr, hostname)
- }else{
- arr = append(arr, hostname)
- for i := 0; i < len(parts) - 2; i++ {
- arr = append(arr, strings.Join(parts[i+1:], "."))
- }
- }
- return arr
- } else {
- // 直接返回ip
- return []string{hostname}
- }
- }
|