agent.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package models
  2. import (
  3. "encoding/json"
  4. "github.com/mitchellh/mapstructure"
  5. "log"
  6. "strconv"
  7. )
  8. const (
  9. AgentCmdType = "AGENT_CMD_TYPE"
  10. SendFileType = "AGENT_SEND_FILE"
  11. RegisterNginxType = "REGISTER_NGINX"
  12. NginxUpdateType = "NGINX_UPDATE"
  13. AgentConnected = "AGENT_CONNECTED"
  14. ServerConnected = "SERVER_CONNECTED"
  15. )
  16. /*
  17. AgentData agent与server之间通信的消息类型
  18. 属性:
  19. - Type 操作类型
  20. */
  21. type AgentData struct {
  22. RequestId string `json:"requestId"`
  23. Data interface{} `json:"data"`
  24. Success bool `json:"success"`
  25. Msg string `json:"msg"`
  26. Type string `json:"type"`
  27. }
  28. func (r *AgentData) ReadData(result interface{}) error {
  29. err := mapstructure.Decode(r.Data, result)
  30. return err
  31. }
  32. func (r *AgentData) ReadStringData() string {
  33. msg, ok := r.Data.(string)
  34. if ok {
  35. return msg
  36. }
  37. b, ok := r.Data.([]byte)
  38. if ok {
  39. return string(b)
  40. }
  41. i, ok := r.Data.(int)
  42. if ok {
  43. return strconv.Itoa(i)
  44. }
  45. b, err := json.Marshal(r.Data)
  46. if err != nil {
  47. log.Printf("read string data error: %v", err)
  48. return ""
  49. }
  50. return string(b)
  51. }
  52. type AgentCMD struct {
  53. Cmd string `json:"cmd"`
  54. }
  55. type AgentSendFile struct {
  56. FileName string `json:"fileName"`
  57. Dst string `json:"dst"`
  58. }