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