| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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"
- "fmt"
- )
- const (
- hmac_key = "hmac_key_"
- )
- func NewUUID() string {
- id, err := GetGid("2")
- if err != nil {
- return uuid.New()
- } else {
- return fmt.Sprint(id)
- }
- }
- 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}
- }
- }
|