2020-04-01 11:45:33 +08:00
|
|
|
|
package grlogs
|
|
|
|
|
|
2020-04-01 11:51:04 +08:00
|
|
|
|
import (
|
|
|
|
|
"crypto/md5"
|
|
|
|
|
"encoding/hex"
|
|
|
|
|
"fmt"
|
|
|
|
|
"io/ioutil"
|
|
|
|
|
"math/rand"
|
|
|
|
|
"os"
|
|
|
|
|
"path"
|
|
|
|
|
"reflect"
|
|
|
|
|
"runtime"
|
|
|
|
|
"strings"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
2020-04-01 11:45:33 +08:00
|
|
|
|
//传入一个字符串,返回一个加密后的md5
|
|
|
|
|
func Md5(str string) string {
|
|
|
|
|
data := []byte(str)
|
|
|
|
|
has := md5.Sum(data)
|
|
|
|
|
md5str := fmt.Sprintf("%x", has) //将[]byte转成16进制
|
|
|
|
|
return md5str
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func Md5File(filePath string) string {
|
|
|
|
|
hash := md5.New()
|
|
|
|
|
data, _ := ioutil.ReadFile(filePath)
|
|
|
|
|
hash.Write([]byte(data))
|
|
|
|
|
md5str := hex.EncodeToString(hash.Sum(nil))
|
|
|
|
|
return md5str
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetPackageName() string {
|
|
|
|
|
packpath := reflect.TypeOf(Empty{}).PkgPath()
|
|
|
|
|
if idx := strings.Index(packpath, "/"); idx > 0 {
|
|
|
|
|
return packpath[:idx]
|
|
|
|
|
} else {
|
|
|
|
|
return packpath
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetCwd(filepath ...string) string {
|
|
|
|
|
_, filename1, _, _ := runtime.Caller(0)
|
|
|
|
|
filename2, _ := os.Getwd()
|
|
|
|
|
if !strings.HasSuffix(filename2, GetPackageName()) {
|
|
|
|
|
paths := append([]string{path.Dir(filename1), "/../../"}, filepath...)
|
|
|
|
|
return path.Join(paths...)
|
|
|
|
|
} else {
|
|
|
|
|
paths := append([]string{filename2, "/"}, filepath...)
|
|
|
|
|
return path.Join(paths...)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func SetCwd() error {
|
|
|
|
|
_, filename1, _, _ := runtime.Caller(0)
|
|
|
|
|
filename2, _ := os.Getwd()
|
|
|
|
|
if !strings.HasSuffix(filename2, GetPackageName()) {
|
|
|
|
|
paths := append([]string{path.Dir(filename1), "/../../"})
|
|
|
|
|
return os.Chdir(path.Join(paths...))
|
|
|
|
|
} else {
|
|
|
|
|
paths := append([]string{filename2, "/"})
|
|
|
|
|
return os.Chdir(path.Join(paths...))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func RandString(length int) string {
|
|
|
|
|
str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
|
|
|
bytes := []byte(str)
|
|
|
|
|
result := []byte{}
|
|
|
|
|
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
|
|
|
|
for i := 0; i < length; i++ {
|
|
|
|
|
result = append(result, bytes[r.Intn(len(bytes))])
|
|
|
|
|
}
|
|
|
|
|
return string(result)
|
|
|
|
|
}
|