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 }