1From e11eae509f944c2f0387d2dbf862dcd5763b84da Mon Sep 17 00:00:00 2001 2From: =?UTF-8?q?=E9=9B=86=E5=B7=9D?= <jichuan1@huawei.com> 3Date: Fri, 6 Sep 2024 16:35:20 +0800 4Subject: [PATCH] =?UTF-8?q?feat:=20golang=E6=9C=8D=E5=8A=A1=E6=8F=90?= 5 =?UTF-8?q?=E4=BE=9Bad=E6=8E=A5=E5=8F=A3?= 6MIME-Version: 1.0 7Content-Type: text/plain; charset=UTF-8 8Content-Transfer-Encoding: 8bit 9 10Signed-off-by: 集川 <jichuan1@huawei.com> 11--- 12 ide/server/main.go | 75 ++++++++++++++++++++++++++++++++--- 13 ide/server/server-config.json | 4 ++ 14 ide/server/server-config.txt | 1 - 15 ide/webpack.config.js | 4 +- 16 4 files changed, 75 insertions(+), 9 deletions(-) 17 create mode 100644 ide/server/server-config.json 18 delete mode 100644 ide/server/server-config.txt 19 20diff --git a/ide/server/main.go b/ide/server/main.go 21index 80a242fb..5de296ef 100644 22--- a/ide/server/main.go 23+++ b/ide/server/main.go 24@@ -45,6 +45,7 @@ import ( 25 "runtime" 26 "strconv" 27 "strings" 28+ "sync" 29 "time" 30 ) 31 32@@ -52,6 +53,7 @@ const HttpPort = 9000 33 34 var exPath string 35 var serveInfo string 36+var msgPublishData MsgPublishData 37 var hdcPublicKey string 38 var hdcPrivateKey *rsa.PrivateKey 39 40@@ -178,6 +180,7 @@ func main() { 41 mux.HandleFunc("/application/hdcPublicKey", getHdcPublicKey) 42 mux.HandleFunc("/application/encryptHdcMsg", encryptHdcMsg) 43 mux.HandleFunc("/application/signatureHdcMsg", signatureHdcMsg) 44+ mux.HandleFunc("/application/messagePublish", getMsgPublish) 45 fs := http.FileServer(http.Dir(exPath + "/")) 46 mux.Handle("/application/", http.StripPrefix("/application/", cors(fs, version))) 47 go func() { 48@@ -299,14 +302,74 @@ func signatureHdcMsg(w http.ResponseWriter, r *http.Request) { 49 } 50 } 51 52-func readReqServerConfig() string { 53- readServerConfig, serverConfigErr := os.ReadFile(exPath + "/server-config.txt") 54- if serverConfigErr != nil { 55- serveInfo = "" 56+func parseMsgPublishFile() { 57+ msgPublishData.Mux.RLock() 58+ defer msgPublishData.Mux.RUnlock() 59+ exist, err := PathExists(msgPublishData.FilePath) 60+ if err != nil || !exist { 61+ return 62+ } 63+ buf, err := os.ReadFile(msgPublishData.FilePath) 64+ if err != nil { 65+ fmt.Println("read fail", err) 66+ return 67+ } 68+ msgPublishData.Msg = string(buf) 69+} 70+ 71+func getMsgPublish(w http.ResponseWriter, r *http.Request) { 72+ w.Header().Set("Access-Control-Allow-Origin", "*") 73+ w.Header().Set("Content-Type", "text/json") 74+ msgPublishData.Mux.Lock() 75+ data := msgPublishData.Msg 76+ msgPublishData.Mux.Unlock() 77+ if len(data) == 0 { 78+ resp(&w)(false, -1, "msg failed", nil) 79 } else { 80- serveInfo = string(readServerConfig) 81+ resp(&w)(true, 0, "success", map[string]interface{}{ 82+ "data": data, 83+ }) 84+ } 85+} 86+ 87+type ServerConfig struct { 88+ ServeInfo string `json:"ServeInfo"` 89+ MsgPublishFile string `json:"MsgPublishFile"` 90+} 91+ 92+type MsgPublishData struct { 93+ FilePath string 94+ Msg string 95+ Mux sync.RWMutex 96+} 97+ 98+func loopUpdateMsgPublishData() { 99+ loopTime := 30 * time.Second 100+ timer := time.NewTimer(loopTime) 101+ for { 102+ select { 103+ case <-timer.C: 104+ parseMsgPublishFile() 105+ } 106+ timer.Reset(loopTime) 107+ } 108+} 109+ 110+func readReqServerConfig() { 111+ serverConfigBuffer, err := os.ReadFile(exPath + "/server-config.json") 112+ if err != nil { 113+ return 114+ } 115+ var sc ServerConfig 116+ err = json.Unmarshal(serverConfigBuffer, &sc) 117+ if err != nil { 118+ return 119 } 120- return serveInfo 121+ serveInfo = sc.ServeInfo 122+ msgPublishData.Mux.RLock() 123+ msgPublishData.FilePath = sc.MsgPublishFile 124+ msgPublishData.Mux.RUnlock() 125+ go loopUpdateMsgPublishData() 126 } 127 128 func mapToJson(m map[string]interface{}) (string, error) { 129diff --git a/ide/server/server-config.json b/ide/server/server-config.json 130new file mode 100644 131index 00000000..637b4034 132--- /dev/null 133+++ b/ide/server/server-config.json 134@@ -0,0 +1,4 @@ 135+{ 136+ "ServeInfo": "127.0.0.1:9100/statistics", 137+ "MsgPublishFile": "" 138+} 139\ No newline at end of file 140diff --git a/ide/server/server-config.txt b/ide/server/server-config.txt 141deleted file mode 100644 142index fde29681..00000000 143--- a/ide/server/server-config.txt 144+++ /dev/null 145@@ -1 +0,0 @@ 146-127.0.0.1:9100/statistics 147\ No newline at end of file 148diff --git a/ide/webpack.config.js b/ide/webpack.config.js 149index f7702c1c..55397917 100644 150--- a/ide/webpack.config.js 151+++ b/ide/webpack.config.js 152@@ -168,8 +168,8 @@ const config = { 153 to: 'wasm.json', 154 }, 155 { 156- from: './server/server-config.txt', 157- to: 'server-config.txt', 158+ from: './server/server-config.json', 159+ to: 'server-config.json', 160 }, 161 ], 162 }), 163-- 1642.34.1 165 166