package common
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"errors"
|
|
"etcd/etcdsdk/model"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// GetRootDir 获取执行路径
|
|
func GetRootDir() string {
|
|
// 文件不存在获取执行路径
|
|
file, err := filepath.Abs(filepath.Dir(os.Args[0]))
|
|
if err != nil {
|
|
file = fmt.Sprintf(".%s", string(os.PathSeparator))
|
|
} else {
|
|
file = fmt.Sprintf("%s%s", file, string(os.PathSeparator))
|
|
}
|
|
return file
|
|
}
|
|
|
|
// PathExists 判断文件或目录是否存在
|
|
func PathExists(path string) (bool, error) {
|
|
_, err := os.Stat(path)
|
|
if err == nil {
|
|
return true, nil
|
|
}
|
|
if os.IsNotExist(err) {
|
|
return false, nil
|
|
}
|
|
return false, err
|
|
}
|
|
|
|
// GetEtcdClientByGinContext 获取一个etcd客户端 从gin请求上下文
|
|
func GetEtcdClientByGinContext(c *gin.Context) (client model.EtcdSdk, err error) {
|
|
clientI, exists := c.Get("CLIENT")
|
|
if exists == false || clientI == nil {
|
|
err = errors.New("Etcd service connection error")
|
|
return
|
|
}
|
|
client = clientI.(model.EtcdSdk)
|
|
return
|
|
}
|
|
|
|
// Md5Password 密码生成
|
|
func Md5Password(password string) string {
|
|
salt := "etcd-manage"
|
|
return Md5(Md5(password) + Md5(salt))
|
|
}
|
|
|
|
// Md5 计算字符串md5值
|
|
func Md5(s string) string {
|
|
h := md5.New()
|
|
h.Write([]byte(s))
|
|
return hex.EncodeToString(h.Sum(nil))
|
|
}
|
|
|
|
// GetHttpToInt 获取请求参数,转为int
|
|
func GetHttpToInt(c *gin.Context, name string) int {
|
|
valStr := c.Query(name)
|
|
val, _ := strconv.Atoi(valStr)
|
|
return val
|
|
}
|