From 2a4041f16c6588921c87df93927e9076c2cc309d Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期一, 08 六月 2020 18:21:19 +0800
Subject: [PATCH] add sdk download impl
---
go.sum | 6 ++
service/SdkDownLoad.go | 81 ++++++++++++++++++++++++++-
go.mod | 3 +
controllers/sdk.go | 39 ++-----------
4 files changed, 93 insertions(+), 36 deletions(-)
diff --git a/controllers/sdk.go b/controllers/sdk.go
index c2f2cc9..238e47a 100644
--- a/controllers/sdk.go
+++ b/controllers/sdk.go
@@ -4,7 +4,6 @@
"net/http"
"strconv"
"webserver/extend/code"
- "webserver/extend/config"
"webserver/extend/util"
"webserver/middlewares/auth"
"webserver/service"
@@ -276,41 +275,15 @@
}
func (sc SdkController) SdkDownLoad(c *gin.Context) {
- var soApi dbapi.SdkApi
- var sdkConfig map[string]interface{}
-
sdkId, exist := c.GetQuery("path")
if !exist {
- util.ResponseFormat(c, code.ComError, "涓嬭浇鐨勭畻娉曞弬鏁版湁璇�")
+ util.ResponseFormat(c, code.RequestParamError, "涓嬭浇鐨勭畻娉曞弬鏁版湁璇�")
+ return
}
- logger.Info(sdkId)
-
- // 鍏堟煡鎵炬湰鍦扮洰褰曞唴鏄惁宸插瓨鍦ㄧ畻娉晄o, 娌℃湁璧颁簯绔笅杞�
- if sdkConfig = service.FindLocalSdkSoById(sdkId); sdkConfig == nil {
- sdkConfig = service.DownSdk(sdkId)
+ if b,err := service.DownloadOrUpgrade(sdkId);b {
+ util.ResponseFormat(c, code.Success, "绠楁硶瀹夎鎴愬姛")
+ } else {
+ util.ResponseFormat(c, &code.Code{http.StatusBadRequest, false, err.Error()}, err.Error())
}
-
- if sdkConfig != nil {
- if regSdkSuccess, _ := soApi.Register(sdkConfig); regSdkSuccess {
- util.ResponseFormat(c, code.Success, "涓嬭浇绠楁硶鎴愬姛锛�")
- return
- }
- }
-
- flag := c.Query("needUpdateMiddle")
- // 涓嬭浇绠楁硶锛堟湁鏃跺�欎篃闇�瑕佹妸涓棿浠朵竴璧蜂笅杞戒笅鏉ワ級
- if flag == "true" {
- // 涓嬭浇骞舵洿鏂颁腑闂翠欢,甯︿笂MD5鏍¢獙
- flag1, err := service.DownSo("http://" + config.SoPath.Ip + ":" + config.SoPath.Port + "/" + "middleware.so")
- logger.Debug("涓棿浠惰矾寰勶細", "http://"+config.SoPath.Ip+":"+config.SoPath.Port+"/"+"middleware.so")
- if err != nil {
- logger.Info(err)
- }
- if !flag1 {
- util.ResponseFormat(c, code.ComError, "璇烽噸鏂颁笅杞界畻娉�")
- }
- }
-
- util.ResponseFormat(c, code.ComError, "绠楁硶涓嬭浇澶辫触,璇烽噸璇�")
}
diff --git a/go.mod b/go.mod
index 9691005..9f5de4d 100644
--- a/go.mod
+++ b/go.mod
@@ -15,14 +15,17 @@
basic.com/valib/goffmpeg.git v0.0.0-20200525032638-bc3239dc0121 // indirect
basic.com/valib/gogpu.git v0.0.0-20190711044327-62043b070865
basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28
+ basic.com/valib/licence.git v2.0.2+incompatible // indirect
basic.com/valib/logger.git v0.0.0-20190928113028-4907b08c4159
github.com/Microsoft/go-winio v0.4.12 // indirect
+ github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
github.com/ajg/form v1.5.1
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc
github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/disintegration/imaging v1.6.2 // indirect
github.com/dustin/go-humanize v1.0.0 // indirect
github.com/gin-gonic/gin v1.4.0
+ github.com/go-ole/go-ole v1.2.4 // indirect
github.com/gogo/protobuf v1.2.1
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
github.com/hashicorp/memberlist v0.1.4 // indirect
diff --git a/go.sum b/go.sum
index f4ab869..82c2b41 100644
--- a/go.sum
+++ b/go.sum
@@ -23,6 +23,8 @@
basic.com/valib/gogpu.git v0.0.0-20190711044327-62043b070865/go.mod h1:yxux5RP4A6a591vWljXxGlHdERVVyWDD3TwwQjuyogw=
basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28 h1:3hejanzPEBvZSSvjIqayB83/6/6SLLrX9oNZAdiYELg=
basic.com/valib/gopherdiscovery.git v0.0.0-20190605034340-15d89d8b4e28/go.mod h1:CQ+UJyZV8MRzwwckncdUDu6/RDTKAzSIPCxc9tFcwPs=
+basic.com/valib/licence.git v2.0.2+incompatible h1:7NHa1sWAITQmwXjpgf/2OT82XmFr/KBI1pOaj0UEx1s=
+basic.com/valib/licence.git v2.0.2+incompatible/go.mod h1:kM6MDCHTJCNiYQz3dgX7UsTATCAHxMSGfhF+6byYGg0=
basic.com/valib/logger.git v0.0.0-20190928113028-4907b08c4159 h1:e5KopUEW/E9qmE3gUS6m7uO+/ti/N2m8rMMHB/HVqPk=
basic.com/valib/logger.git v0.0.0-20190928113028-4907b08c4159/go.mod h1:SPlOGUUlxCscwF1dkqmLb0oJXVqg1uJ8hsPXLFxrw1M=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
@@ -38,6 +40,8 @@
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
+github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=
+github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=
@@ -92,6 +96,8 @@
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
+github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
+github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
github.com/go-openapi/jsonpointer v0.17.0 h1:nH6xp8XdXHx8dqveo0ZuJBluCO2qGrPbDNZ0dwoRHP0=
github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
diff --git a/service/SdkDownLoad.go b/service/SdkDownLoad.go
index 699e2ce..f20918e 100644
--- a/service/SdkDownLoad.go
+++ b/service/SdkDownLoad.go
@@ -1,15 +1,18 @@
package service
import (
+ "basic.com/valib/licence.git"
"bytes"
"crypto/md5"
"encoding/hex"
"encoding/json"
+ "errors"
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
+ "path"
"path/filepath"
"strings"
"webserver/extend/config"
@@ -215,13 +218,17 @@
Sdks []Sdk `json:"sdks"`
}
+const (
+ token = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8"
+)
+
func findAllMySdk() map[string]Sdk {
- token := "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ3NDUwMjU5MjMsInVzZXIiOiJ7XCJpZFwiOlwiZTZjY2QzNmQtNGYxNi00NmZjLTg4ZDUtMDczNjU4NjZkMjA1XCIsXCJwZXJtaXNzaW9uc1wiOltcInByb2R1Y3RNYW5nZTpwdWJsaXNoXCIsXCJjb2RlTWFuZ2U6dmlld1wiLFwiZGV2aWNlTWFuYWdlOmFkZFwiLFwiYWRtaW5NYW5hZ2VcIixcIm9yZGVyTWFuZ2VcIixcImRldmljZU1hbmFnZTp2aWV3XCIsXCJwcm9kdWN0TWFuZ2U6YWRkXCIsXCJhZG1pbk1hbmFnZTp2aWV3XCIsXCJjb2RlTWFuZ2U6YWRkXCIsXCJwcm9kdWN0TWFuZ2U6b2ZmU2FsZVwiLFwib3JkZXJNYW5nZTpjYW5jZWxcIixcInByb2R1Y3RDZW50ZXI6ZG93bmxvYWRcIixcInByb2R1Y3RDZW50ZXI6YnV5XCIsXCJwcm9kdWN0TWFuZ2U6dmlld1wiLFwiYXBpXCIsXCJob21lXCIsXCJvcmRlck1hbmdlOnBheVwiLFwiYWRtaW5NYW5hZ2U6YWRkXCIsXCJvcmRlck1hbmdlOmRvd25sb2FkXCIsXCJwcm9kdWN0Q2VudGVyXCIsXCJkZXZpY2VNYW5hZ2U6dW5iaW5kXCIsXCJvcmRlck1hbmdlOnZpZXdcIixcImFkbWluTWFuYWdlOmVkaXRcIixcImRldmljZU1hbmFnZVwiLFwidmlwTWFuYWdlOmFkZFwiLFwidmlwTWFuYWdlOnZpZXdcIixcInByb2R1Y3RDZW50ZXI6dmlld1wiLFwidmlwTWFuYWdlOmVkaXRcIixcInZpcE1hbmFnZVwiLFwicHJvZHVjdE1hbmdlOmVkaXRcIixcImNvZGVNYW5nZVwiLFwicHJvZHVjdE1hbmdlXCJdLFwidXNlcm5hbWVcIjpcImJhc2ljXCJ9In0.vwjAFkWuEyadRLvIOGK8LFE3MjpY3SQ7j6AlTXnQDG8"
url := "http://"+config.ShopConf.Url+"/data/api-s/sdk/findAllMySdk"
- fmt.Println("token:", token, "url:", url)
+ machineCode := licence.GetMachineCode()
+ fmt.Println("url:", url, "machineCode:", machineCode)
paramBody := map[string]interface{} {
"serverId": config.Server.AnalyServerId,
- "machineCode": "",
+ "machineCode": machineCode,
}
header := map[string]string {
"Authorization": token,
@@ -294,3 +301,71 @@
return nil
}
+
+type downOrUpResp struct {
+ Url string `json:"url"`
+ md5 string `json:"md5"`
+}
+
+//涓嬭浇鎴栬�呭崌绾х畻娉�
+func DownloadOrUpgrade(sdkId string) (bool,error) {
+ url := "http://"+config.ShopConf.Url+"/data/api-s/sdk/downloadOrUpgrade"
+ machineCode := licence.GetMachineCode()
+ if machineCode == "" {
+ logger.Debug("鑾峰彇鏈哄櫒鐮佸け璐�")
+ return false, errors.New("鑾峰彇鏈哄櫒鐮佸け璐�")
+ }
+ paramBody := map[string]interface{}{
+ "sdkId": sdkId,
+ "machineCode": machineCode,
+ }
+ header := map[string]string {
+ "Authorization": token,
+ }
+ respBody, err := reqUtil.DoPostRequest(url, reqUtil.CONTENT_TYPE_JSON, paramBody, nil, header)
+ if err != nil {
+ logger.Debug("DoPostRequest err:", err)
+ return false, err
+ }
+ var res dbapi.Result
+ if err = json.Unmarshal(respBody, &res); err != nil {
+ logger.Debug("unmarshal err:", err)
+ return false, err
+ }
+ bytes, _ := json.Marshal(res.Data)
+ var resp downOrUpResp
+ if err := json.Unmarshal(bytes, &resp);err != nil {
+ logger.Debug("unmarshal err:", err)
+ return false, err
+ }
+ if resp.Url == "" || resp.md5 == "" {
+ return false, errors.New("鑾峰彇涓嬭浇瀹夎鍖呭け璐�")
+ }
+
+ //2.涓嬭浇瀹夎锛堝崌绾э級鍖咃紝楠岃瘉md5鍚庡畨瑁�
+ configPatchPath := ""
+ if config.Server.PatchPath != "" {
+ configPatchPath = config.Server.PatchPath
+ } else {
+ configPatchPath = "../patch"
+ }
+ if !reqUtil.DirExists(configPatchPath) {
+ os.Mkdir(configPatchPath, 0777)
+ }
+ filenameWithSuffix := path.Base(resp.Url)
+ ext := path.Ext(filenameWithSuffix)
+ downUrl := "http://"+config.ShopConf.Url+"/files/"+resp.Url
+
+ gzFilePath := configPatchPath + "/" + resp.md5+ext
+ err = reqUtil.DownloadFile(gzFilePath, downUrl)
+ if err != nil {
+ logger.Debug("DownloadFile err:", err)
+ return false, err
+ }
+ b, err := installSdk(resp.md5, ext)
+ if b {
+ return true, nil
+ }
+
+ return false, err
+}
\ No newline at end of file
--
Gitblit v1.8.0