From c0c4d333daf612261a273ab7c1083d11dc8d58b5 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Thu, 31 Aug 2023 17:35:43 +0800 Subject: [PATCH 1/2] trace --- features/trace/trace.go | 24 ++++++++++++++++++------ lib/global/kits.go | 12 ++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/features/trace/trace.go b/features/trace/trace.go index ddeb472e..e9fde7d4 100644 --- a/features/trace/trace.go +++ b/features/trace/trace.go @@ -2,6 +2,7 @@ package trace import ( "encoding/json" + "errors" "fmt" "io" "net/http" @@ -23,7 +24,7 @@ var ( UriTraceTaskV1 = config.DefaultUriPrefix + "/traceManagement/v1/subscriptions" UriTraceTask = config.DefaultUriPrefix + "/traceManagement/{apiVersion}/subscriptions" UriTraceRawMsg = config.DefaultUriPrefix + "/traceManagement/{apiVersion}/rawMessage/{id}" - UriTraceDecMsg = config.DefaultUriPrefix + "/traceManagement/{apiVersion}/decMessage/{id}" + UriTraceDecMsg = config.DefaultUriPrefix + "/traceManagement/{apiVersion}/decMessage/{id}" // decode message api CustomUriTraceTaskV1 = config.UriPrefix + "/traceManagement/v1/subscriptions" CustomUriTraceTask = config.UriPrefix + "/traceManagement/{apiVersion}/subscriptions" @@ -399,11 +400,11 @@ func ParseRawMsg2Html(w http.ResponseWriter, r *http.Request) { return } log.Trace("traceData:", traceData) - pathFile := traceData.DecMsg + filePath := traceData.DecMsg if traceData.DecMsg == "" { htmlFile := fmt.Sprintf("traceDecMessage-%d-%d.html", traceData.TaskID, traceData.ID) - pathFile = config.GetYamlConfig().OMC.FrontTraceDir + "/" + htmlFile - command := fmt.Sprintf("ipdata2html -f %s -t %d -i N%d -d %x", pathFile, traceData.Timestamp, traceData.IfType, traceData.RawMsg) + filePath = config.GetYamlConfig().OMC.FrontTraceDir + "/" + htmlFile + command := fmt.Sprintf("ipdata2html -f %s -t %d -i N%d -d %x", filePath, traceData.Timestamp, traceData.IfType, traceData.RawMsg) out, err := run.ExecCmd(command, "/") log.Tracef("Exec output: %v", string(out)) if err != nil { @@ -411,7 +412,18 @@ func ParseRawMsg2Html(w http.ResponseWriter, r *http.Request) { services.ResponseInternalServerError500ProcessError(w, err) return } - traceData.DecMsg = pathFile + exist, err := global.FilePathExists(filePath) + if err != nil { + log.Errorf("Failed to stat:", err) + services.ResponseInternalServerError500ProcessError(w, err) + return + } + if !exist { + err = errors.New(string(out)) + services.ResponseInternalServerError500ProcessError(w, err) + return + } + traceData.DecMsg = filePath _, err = dborm.XormUpdateTraceData(id, traceData) if err != nil { log.Errorf("Faile to XormUpdateTraceData:", err) @@ -419,5 +431,5 @@ func ParseRawMsg2Html(w http.ResponseWriter, r *http.Request) { return } } - services.ResponseHtmlContent(w, http.StatusOK, pathFile) + services.ResponseHtmlContent(w, http.StatusOK, filePath) } diff --git a/lib/global/kits.go b/lib/global/kits.go index 17932331..baa71e5d 100644 --- a/lib/global/kits.go +++ b/lib/global/kits.go @@ -354,6 +354,18 @@ func PathExists(path string) (bool, error) { return false, err } +// PathExists check path is exist or no +func FilePathExists(filePath string) (bool, error) { + _, err := os.Stat(filePath) + if err == nil { //文件或者目录存在 + return true, nil + } + if os.IsNotExist(err) { + return false, nil + } + return false, err +} + func GetDayDuration(d1, d2 string) int64 { a, _ := time.Parse("2006-01-02", d1) b, _ := time.Parse("2006-01-02", d2) From f279635e082f881f770c2871c04968eb124d47b3 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Thu, 31 Aug 2023 17:39:10 +0800 Subject: [PATCH 2/2] d --- features/trace/trace.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/trace/trace.go b/features/trace/trace.go index e9fde7d4..d0d78c7a 100644 --- a/features/trace/trace.go +++ b/features/trace/trace.go @@ -419,7 +419,7 @@ func ParseRawMsg2Html(w http.ResponseWriter, r *http.Request) { return } if !exist { - err = errors.New(string(out)) + err = errors.New(string(strings.ReplaceAll(string(out), "\n", ""))) services.ResponseInternalServerError500ProcessError(w, err) return }