/* Copyright (c) [2023] [pcm] [pcm-coordinator] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. */ package utils import ( "math/rand" "regexp" "strings" "time" ) const ( CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" TIMEFORMAT = "20060102150405" ) func RandomString(n int) string { sb := strings.Builder{} sb.Grow(n) for i := 0; i < n; i++ { sb.WriteByte(CHARSET[rand.Intn(len(CHARSET))]) } return sb.String() } func TimeString() string { return time.Now().Format(TIMEFORMAT) } func IsValidHostAddress(input string) bool { //pattern := `^(([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+\.[a-zA-Z]{2,}|(\d{1,3}\.){3}\d{1,3}):\d{1,5}$` pattern := `^((([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+\.[a-zA-Z]{2,}|(\d{1,3}\.){3}\d{1,3}):\d{1,5})$|^.*\.com$` re, err := regexp.Compile(pattern) if err != nil { return false } return re.MatchString(input) } func MpaStringToInterface(m map[string]string) map[string]interface{} { result := make(map[string]interface{}) for k, v := range m { result[k] = v } return result } func MapInterfaceToString(m map[string]interface{}) map[string]string { result := make(map[string]string) for k, v := range m { if str, ok := v.(string); ok { result[k] = str } } return result }