package models import ( "encoding/json" "github.com/mitchellh/mapstructure" "log" "strconv" ) const ( AgentCmdType = "AGENT_CMD_TYPE" SendFileType = "AGENT_SEND_FILE" RegisterNginxType = "REGISTER_NGINX" NginxUpdateType = "NGINX_UPDATE" AgentConnected = "AGENT_CONNECTED" ServerConnected = "SERVER_CONNECTED" ) /* AgentData agent与server之间通信的消息类型 属性: - Type 操作类型 */ type AgentData struct { RequestId string `json:"requestId"` Data interface{} `json:"data"` Success bool `json:"success"` Msg string `json:"msg"` Type string `json:"type"` } func (r *AgentData) ReadData(result interface{}) error { err := mapstructure.Decode(r.Data, result) return err } func (r *AgentData) ReadStringData() string { msg, ok := r.Data.(string) if ok { return msg } b, ok := r.Data.([]byte) if ok { return string(b) } i, ok := r.Data.(int) if ok { return strconv.Itoa(i) } b, err := json.Marshal(r.Data) if err != nil { log.Printf("read string data error: %v", err) return "" } return string(b) } type AgentCMD struct { Cmd string `json:"cmd"` } type AgentSendFile struct { FileName string `json:"fileName"` Dst string `json:"dst"` }