From 94bcda3ef533ac0ab0f5c0786554a9efe4c27f4d Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期四, 19 十二月 2019 13:37:13 +0800 Subject: [PATCH] add upgrade action,do nothing after patch upload --- service/SysService.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 47 insertions(+), 13 deletions(-) diff --git a/service/SysService.go b/service/SysService.go index 441a8a8..b4a6bc6 100644 --- a/service/SysService.go +++ b/service/SysService.go @@ -3,6 +3,7 @@ import ( "basic.com/valib/logger.git" "bufio" + "errors" "fmt" "io/ioutil" "mime/multipart" @@ -75,12 +76,8 @@ dirFiles, _ := ioutil.ReadDir(fileTmpPath) if dirFiles != nil && len(dirFiles) == arg.TotalChunks { //琛ㄧず鎵�鏈夊垎鍧楅兘涓婁紶浜嗭紝闇�瑕乵erge - if sv.MergeChunks(fileTmpPath, mergedFilePath) { - if util.ZipCheck(mergedFilePath) { - if !updatePatch(arg.Identifier, subfix) { - return false - } - } + if !sv.MergeChunks(fileTmpPath, mergedFilePath) { + return false } } } @@ -146,14 +143,50 @@ if isComplete { if sv.MergeChunks(fileTmpPath,fileTmpPath + subfix) { logger.Debug("merge all chunks success,identifier:",MD5Str,"fileName:",arg.FileName) - if util.ZipCheck(fileTmpPath + subfix) { - if !updatePatch(arg.Identifier, subfix) { - return false - } - } + } else { + return false } } return true +} + +//upgrade +func (sv SysService) Upgrade(identifier string,filename string) (bool,error) { + configPatchPath := "" + if config.Server.PatchPath != "" { + configPatchPath = config.Server.PatchPath + } else { + configPatchPath = "/opt/vasystem/patch" + } + index := strings.LastIndex(filename, ".") + if index < 0 { + return false,errors.New("闈炴硶鐨勫崌绾у帇缂╁寘鏂囦欢") + } + ext := filename[index:] + zipFilePath := configPatchPath + "/"+identifier+ext + if util.Exists(zipFilePath) { + //鏍¢獙md5 + strMd5, e := util.FileMd5(zipFilePath) + if e !=nil || strMd5 == "" { + return false,errors.New("鑾峰彇鍗囩骇鍘嬬缉鍖卪d5澶辫触") + } + if strMd5 == identifier { + if util.ZipCheck(zipFilePath + ext) { + if !updatePatch(identifier, ext) { + return false,errors.New("鎵ц鍗囩骇杩囩▼寮傚父") + } + return true,nil + } else { + logger.Debug("not a valid zip file,path:",zipFilePath+ext) + return false,errors.New("鍗囩骇绋嬪簭瑙e帇澶辫触锛岃纭畾涓婁紶鐨勮ˉ涓佹槸zip鏍煎紡") + } + } else { + logger.Debug("strMd5 is", strMd5,"identifier is",identifier,"not equal") + return false,errors.New("鏍¢獙鍗囩骇鏂囦欢澶辫触") + } + } else { + return false,errors.New("鍗囩骇鏂囦欢宸蹭涪澶憋紝璇烽噸鏂颁笂浼�") + } } //鏇存柊绯荤粺绋嬪簭 @@ -183,10 +216,11 @@ var cmd *exec.Cmd updateCmd := fmt.Sprintf("setsid ./updatePatch.sh %s %s %s",unZipPath,configPatchPath+"/"+identifier+ext,configPatchPath+"/"+identifier) cmd = exec.Command("/bin/sh","-c", updateCmd) - logger.Debug("called sh updatePatch.sh,updateCmd:",updateCmd) if b, err := cmd.Output(); err != nil { logger.Debug("updatePatch err:",err,"result:",string(b)) return false + } else { + logger.Debug("updatePatch result:",string(b),"cmd:",updateCmd) } return true } @@ -194,11 +228,11 @@ func (sv SysService) MergeChunks(chunkPath string, storePath string) bool { var cmd *exec.Cmd cmd = exec.Command("/bin/sh", "-c", fmt.Sprintf("./mergeAll.sh %s %s", chunkPath, storePath)) - logger.Debug("called sh mergeAll.sh ", chunkPath, storePath) if b, err := cmd.Output(); err != nil { logger.Debug("mergeChunks err:", err, "result:", string(b)) return false } else { + logger.Debug("mergeChunks result:",string(b),"cmd: ./mergeAll.sh ", chunkPath, storePath) return true } } \ No newline at end of file -- Gitblit v1.8.0