From f26a0cab5bca17b7eab57f6330e576271e17a17f Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期三, 13 十一月 2019 19:12:08 +0800 Subject: [PATCH] update ynSwagger,sync to master --- service/SdkDownLoad.go | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 111 insertions(+), 0 deletions(-) diff --git a/service/SdkDownLoad.go b/service/SdkDownLoad.go index 6d43c33..00715d9 100644 --- a/service/SdkDownLoad.go +++ b/service/SdkDownLoad.go @@ -1 +1,112 @@ package service + +import ( + "bytes" + "crypto/md5" + "encoding/hex" + "fmt" + "io" + "io/ioutil" + "net/http" + "os" + "strings" + "basic.com/valib/logger.git" + + "webserver/util" +) +// 浠庢湇鍔″櫒涓婁笅杞芥枃浠跺埌涓存椂鐩綍锛屾牎楠屼箣鍚庡鏋滃畬鏁村皢鍏舵嫹璐濆埌鐩爣鐩綍涓� +func DownSo(url string)(bool,error) { + resp, err := http.Get(url) + if err != nil { + logger.Error("鑾峰彇鏂囦欢澶辫触") + return false,err + } + // 浠巖esp涓鍑簔ip鏂囦欢瑙e帇缂╋紝瑙e嚭face.so,face.txt,鐒跺悗鎶婅В鍘嬪嚭鐨剆o鐢∕D5缂栫爜鍑轰竴涓猼emp.txt鏂囦欢锛屼笌瑙e帇鍑虹殑so.txt鏂囦欢姣斿锛� + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + logger.Error("璇诲彇resp.body澶辫触") + return false,err + } + CopyFile(body, "/opt/temp/temp.zip") + util.DeCompress("/opt/temp/temp.zip", "/opt/temp") + fileName := GetFileNameFromUrl(url,false) + md5str,err1 := File2md5("/opt/temp/"+fileName+".so") + if err1 != nil { + logger.Error(err1) + return false,err1 + } + md5str_origin,err2 := ioutil.ReadFile("/opt/temp/"+fileName+".txt") + if err2 != nil { + logger.Error("璇诲彇瑙e帇鍚庣殑md5鏂囦欢澶辫触") + return false,err2 + } + flag := CompareMd5([]byte(md5str),md5str_origin) + if flag { + logger.Info("涓ゆMD5缂栫爜涓�鑷达紒") + } else { + logger.Debug("涓ゆMD5缂栫爜涓嶄竴鑷达紝璇烽噸鏂颁笅杞�") + return false,nil + } + // 浠巙rl涓埅鍙杝oName + soName := GetFileNameFromUrl(url,true) + f, err := os.Create("/opt/workspace/ruleprocess/algorithm/" + soName) + if err != nil { + logger.Error("鍦ㄩ」鐩洰褰曚笅鍒涘缓so鏂囦欢澶辫触") + return false,err + } + data,_ := ioutil.ReadFile("/opt/temp/"+soName) + _,err4 := f.Write(data) + if err4 != nil { + logger.Error("澶嶅埗鏂囦欢鍑洪敊") + return false,err4 + } + return true,nil +} + +func CopyFile(byte []byte, dst string) (w int64, err error) { + dstFile, err := os.Create(dst) + if err != nil { + fmt.Println(err.Error()) + return + } + defer dstFile.Close() + return io.Copy(dstFile, bytes.NewReader(byte)) +} + +// 鎸囧畾鐩綍鐨勬枃浠剁敓鎴愮浉搴旂殑MD5鐮佹枃浠� +func File2md5 (filename string) (string, error) { + // 鏂囦欢鐢熸垚MD5鍔犲瘑鍔犲瘑鏂囦欢 + file, err := os.Open(filename) + if err != nil { + fmt.Println("os Open error") + return "", err + } + md5 := md5.New() + _, err = io.Copy(md5, file) + if err != nil { + fmt.Println("io copy error") + return "", err + } + md5Str := hex.EncodeToString(md5.Sum(nil)) + return md5Str,nil +} +// 浠巙rl涓埅鍙栧嚭鏂囦欢鍚嶏紝鍙傛暟鏄槸鍚﹀甫鍚庣紑 +func GetFileNameFromUrl(url string,withSuffix bool)string { + fileName := strings.Split(url,"/")[len(strings.Split(url,"/"))-1] + if withSuffix { + return fileName + } else { + withoutSuffix := strings.Split(fileName,".")[0] + return withoutSuffix + } +} + +// 姣旇緝涓や釜MD5缂栫爜鏄惁涓�鑷� +func CompareMd5(value1 []byte,value2 []byte) bool{ + num := bytes.Compare(value1,value2) + if num == 0 { + return true + } else { + return false + } +} \ No newline at end of file -- Gitblit v1.8.0