|
|
@@ -3,12 +3,19 @@ package common
|
|
|
import (
|
|
|
"encoding/base64"
|
|
|
"encoding/json"
|
|
|
- "math/rand"
|
|
|
"net/url"
|
|
|
"regexp"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
"unsafe"
|
|
|
+
|
|
|
+ "github.com/samber/lo"
|
|
|
+)
|
|
|
+
|
|
|
+var (
|
|
|
+ maskURLPattern = regexp.MustCompile(`(http|https)://[^\s/$.?#].[^\s]*`)
|
|
|
+ maskDomainPattern = regexp.MustCompile(`\b(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}\b`)
|
|
|
+ maskIPPattern = regexp.MustCompile(`\b(?:\d{1,3}\.){3}\d{1,3}\b`)
|
|
|
)
|
|
|
|
|
|
func GetStringIfEmpty(str string, defaultValue string) string {
|
|
|
@@ -19,12 +26,10 @@ func GetStringIfEmpty(str string, defaultValue string) string {
|
|
|
}
|
|
|
|
|
|
func GetRandomString(length int) string {
|
|
|
- //rand.Seed(time.Now().UnixNano())
|
|
|
- key := make([]byte, length)
|
|
|
- for i := 0; i < length; i++ {
|
|
|
- key[i] = keyChars[rand.Intn(len(keyChars))]
|
|
|
+ if length <= 0 {
|
|
|
+ return ""
|
|
|
}
|
|
|
- return string(key)
|
|
|
+ return lo.RandomString(length, lo.AlphanumericCharset)
|
|
|
}
|
|
|
|
|
|
func MapToJsonStr(m map[string]interface{}) string {
|
|
|
@@ -170,8 +175,7 @@ func maskHostForPlainDomain(domain string) string {
|
|
|
// api.openai.com -> ***.***.com
|
|
|
func MaskSensitiveInfo(str string) string {
|
|
|
// Mask URLs
|
|
|
- urlPattern := regexp.MustCompile(`(http|https)://[^\s/$.?#].[^\s]*`)
|
|
|
- str = urlPattern.ReplaceAllStringFunc(str, func(urlStr string) string {
|
|
|
+ str = maskURLPattern.ReplaceAllStringFunc(str, func(urlStr string) string {
|
|
|
u, err := url.Parse(urlStr)
|
|
|
if err != nil {
|
|
|
return urlStr
|
|
|
@@ -224,14 +228,12 @@ func MaskSensitiveInfo(str string) string {
|
|
|
})
|
|
|
|
|
|
// Mask domain names without protocol (like openai.com, www.openai.com)
|
|
|
- domainPattern := regexp.MustCompile(`\b(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}\b`)
|
|
|
- str = domainPattern.ReplaceAllStringFunc(str, func(domain string) string {
|
|
|
+ str = maskDomainPattern.ReplaceAllStringFunc(str, func(domain string) string {
|
|
|
return maskHostForPlainDomain(domain)
|
|
|
})
|
|
|
|
|
|
// Mask IP addresses
|
|
|
- ipPattern := regexp.MustCompile(`\b(?:\d{1,3}\.){3}\d{1,3}\b`)
|
|
|
- str = ipPattern.ReplaceAllString(str, "***.***.***.***")
|
|
|
+ str = maskIPPattern.ReplaceAllString(str, "***.***.***.***")
|
|
|
|
|
|
return str
|
|
|
}
|