mirror of
https://gitee.com/samwaf/SamWaf.git
synced 2026-10-31 10:11:42 +08:00
94 lines
2.3 KiB
Go
94 lines
2.3 KiB
Go
package waftask
|
|
|
|
import (
|
|
"SamWaf/customtype"
|
|
"SamWaf/global"
|
|
"SamWaf/model/request"
|
|
"SamWaf/service/waf_service"
|
|
"SamWaf/utils/zlog"
|
|
"SamWaf/wafsec"
|
|
"encoding/json"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"runtime"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
wafTokenInfoService = waf_service.WafTokenInfoServiceApp
|
|
)
|
|
|
|
func TaskClientToCenter() {
|
|
zlog.Debug("TaskClientToCenter")
|
|
|
|
if global.GWAF_CENTER_ENABLE == "false" {
|
|
return
|
|
}
|
|
tokenInfo := wafTokenInfoService.GetOneAvailableInfo()
|
|
if tokenInfo.Id == "" {
|
|
return
|
|
}
|
|
|
|
// 准备要发送的数据
|
|
data := request.CenterClientUpdateReq{
|
|
ClientServerName: global.GWAF_CUSTOM_SERVER_NAME,
|
|
ClientUserCode: global.GWAF_USER_CODE,
|
|
ClientTenantId: global.GWAF_TENANT_ID,
|
|
ClientToken: tokenInfo.AccessToken,
|
|
ClientSsl: "false",
|
|
ClientPort: strconv.Itoa(global.GWAF_LOCAL_SERVER_PORT),
|
|
ClientNewVersion: global.GWAF_RELEASE_VERSION,
|
|
ClientNewVersionDesc: global.GWAF_RELEASE_VERSION_NAME,
|
|
ClientSystemType: runtime.GOOS,
|
|
LastVisitTime: customtype.JsonTime(time.Now()),
|
|
}
|
|
|
|
// 将数据编码为JSON格式
|
|
jsonData, err := json.Marshal(data)
|
|
if err != nil {
|
|
return
|
|
}
|
|
//加密
|
|
encryptStr, _ := wafsec.AesEncrypt(jsonData, global.GWAF_COMMUNICATION_KEY)
|
|
encryptContent := encryptStr
|
|
/*zlog.Debug("注册加密前" + string(jsonData))
|
|
zlog.Debug("注册加后" + encryptContent)*/
|
|
// 创建请求URL
|
|
url := global.GWAF_CENTER_URL + "/samwaf/center/update"
|
|
|
|
// 创建一个HTTP请求
|
|
req, err := http.NewRequest("POST", url, strings.NewReader(encryptContent))
|
|
if err != nil {
|
|
zlog.Debug("Error creating request:", err)
|
|
return
|
|
}
|
|
|
|
// 设置请求的Content-Type为application/json
|
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
|
|
|
// 设置请求的Token
|
|
//req.Header.Set("Authorization", "Bearer YOUR_TOKEN_HERE")
|
|
|
|
// 发送请求
|
|
client := &http.Client{}
|
|
resp, err := client.Do(req)
|
|
if err != nil {
|
|
zlog.Debug("Error sending request:", err)
|
|
return
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
// 读取响应
|
|
_, err = ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
zlog.Debug("Error reading response body:", err)
|
|
return
|
|
}
|
|
|
|
// 打印响应状态和响应体
|
|
/*zlog.Debug("response Status:", resp.Status)
|
|
zlog.Debug("response Body:", string(body))*/
|
|
}
|