agent/util/utils.go (71 lines of code) (raw):
package util
import (
"crypto/md5"
"encoding/hex"
"io"
"os"
"runtime"
)
var G_IsWindows bool
var verbose_mode = false
func init() {
if runtime.GOOS == "windows" {
G_IsWindows = true
} else if runtime.GOOS == "linux" || runtime.GOOS == "freebsd" {
G_IsWindows = false
} else {
}
}
func IsVerboseMode() bool {
return verbose_mode
}
func SetVerboseMode(mode bool) {
verbose_mode = mode
}
/*
func HttpDownlod(url string, FilePath string) error {
res, err := http.Get(url)
if err != nil {
return err
}
f, err := os.Create(FilePath)
defer f.Close()
if err != nil {
return err
}
_, err = io.Copy(f, res.Body)
return err
}*/
func ComputeMd5(filePath string) (string, error) {
var result []byte
file, err := os.Open(filePath)
if err != nil {
return "", err
}
defer file.Close()
hash := md5.New()
if _, err := io.Copy(hash, file); err != nil {
return "", err
}
return hex.EncodeToString(hash.Sum(result)), nil
}
func ComputeStrMd5(str string) string {
h := md5.New()
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
}
func ComputeBinMd5(bin []byte) string {
h := md5.New()
h.Write(bin)
return hex.EncodeToString(h.Sum(nil))
}
func FileExist(path string) bool {
_, err := os.Lstat(path)
return !os.IsNotExist(err)
}
func IsDirectory(path string) bool {
fi, err := os.Stat(path)
if err != nil {
return false
}
if fi.Mode().IsDir() {
return true
}
return false
}
func IsFile(path string) bool {
fi, err := os.Stat(path)
if err != nil {
return false
}
if fi.Mode().IsRegular() {
return true
}
return false
}