apm_white_list_v2.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package containers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/coroot/coroot-node-agent/common"
  6. "github.com/coroot/coroot-node-agent/utils"
  7. . "github.com/coroot/coroot-node-agent/utils/modelse"
  8. log "github.com/sirupsen/logrus"
  9. "os"
  10. "path"
  11. )
  12. func (r *Registry) getWhiteListAll() []WhiteSettingInfo {
  13. return r.whiteListRules["all"]
  14. }
  15. func (r *Registry) setWhiteListV2(whiteData WhiteDataV2) {
  16. whiteListMap := make(WhiteListMap)
  17. code := "all"
  18. for _, setting := range whiteData.SettingList {
  19. setting.Filters = setting.ProcessKey
  20. whiteListMap[code] = append(whiteListMap[code], setting)
  21. }
  22. r.whiteListRules = whiteListMap
  23. }
  24. func (r *Registry) pullWhiteListV2() (bool, error) {
  25. if r.isFusing {
  26. return false, nil
  27. }
  28. if common.IsOpenFilter() {
  29. return false, nil
  30. }
  31. nodeInfo := r.nodeInfo.GetNodeInfo()
  32. if nodeInfo == nil {
  33. return false, fmt.Errorf("could not find node info")
  34. }
  35. whiteListReq := WhiteListReq{
  36. HostId: nodeInfo.HostID,
  37. AccountId: nodeInfo.AccountID,
  38. WhiteType: 2,
  39. }
  40. whiteData, err := r.connServer.WhiteListV2(whiteListReq)
  41. if err != nil {
  42. log.Errorf("report WhiteList info error is %v.", err)
  43. return false, err
  44. }
  45. //fmt.Println(r.whiteLastUpdatedTime)
  46. //fmt.Println(whiteData.LastUpdatedTime)
  47. // 后端切换主机与全局规则时,时间不会变化
  48. // 不用更新
  49. //if r.whiteLastUpdatedTime == whiteData.LastUpdatedTime {
  50. // return false, nil
  51. //}
  52. //
  53. //// 更新时间
  54. r.whiteLastUpdatedTime = whiteData.LastUpdatedTime
  55. r.setWhiteListV2(whiteData)
  56. saveRule(whiteData)
  57. return true, nil
  58. }
  59. func saveRule(runtimeApps WhiteDataV2) {
  60. appStr, _ := json.Marshal(runtimeApps)
  61. dumpPath := path.Join(utils.GetDefaultRuntimePath(), "memdump")
  62. err := os.MkdirAll(dumpPath, 0755)
  63. if err != nil {
  64. log.Error(err)
  65. }
  66. fileName := path.Join(dumpPath, "rule.snap")
  67. err = os.WriteFile(fileName, appStr, 0644)
  68. if err != nil {
  69. log.Error(err)
  70. }
  71. }