builder.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package sender
  2. import (
  3. "fmt"
  4. "strings"
  5. "time"
  6. "github.com/710leo/urlooker/dataobj"
  7. "github.com/710leo/urlooker/modules/alarm/cache"
  8. "github.com/710leo/urlooker/modules/alarm/g"
  9. )
  10. func BuildMail(event *dataobj.Event) string {
  11. strategy, _ := cache.StrategyMap.Get(event.StrategyId)
  12. respTime := fmt.Sprintf("%dms", event.RespTime)
  13. return fmt.Sprintf(
  14. "状态:%s\n结果:%s\nUrl:%s\nIP:%s\n返回状态码:%s\n响应时间:%s\n时间:%s\n报警次数:%d\n备注:%s\n",
  15. event.Status,
  16. g.EventStatus[event.Result],
  17. event.Url,
  18. event.Ip,
  19. event.RespCode,
  20. respTime,
  21. humanTime(event.EventTime),
  22. event.CurrentStep,
  23. strategy.Note,
  24. )
  25. }
  26. func BuildSms(event *dataobj.Event) string {
  27. respTime := fmt.Sprintf("%dms", event.RespTime)
  28. return fmt.Sprintf(
  29. "[%s][%s %s][%s][%s][%s][O%d]",
  30. event.Status,
  31. showSubString(event.Url, 100),
  32. event.Ip,
  33. event.RespCode,
  34. respTime,
  35. humanTime(event.EventTime),
  36. event.CurrentStep,
  37. )
  38. }
  39. func BuildWeChat(event *dataobj.Event) string {
  40. strategy, _ := cache.StrategyMap.Get(event.StrategyId)
  41. respTime := fmt.Sprintf("%dms", event.RespTime)
  42. return fmt.Sprintf(
  43. "状态:%s\nUrl:%s\n备注:%s\nIP:%s\n返回状态码:%s\n响应时间:%s\n时间:%s\n报警次数:%d\n",
  44. event.Status,
  45. event.Url,
  46. strategy.Note,
  47. event.Ip,
  48. event.RespCode,
  49. respTime,
  50. humanTime(event.EventTime),
  51. event.CurrentStep,
  52. )
  53. }
  54. func humanTime(ts int64) string {
  55. return time.Unix(ts, 0).Format("2006-01-02 15:04:05")
  56. }
  57. func showSubString(str string, length int) string {
  58. runeStr := []rune(str)
  59. s := ""
  60. if length > len(runeStr) {
  61. length = len(runeStr)
  62. }
  63. for i := 0; i < length; i++ {
  64. s += string(runeStr[i])
  65. }
  66. return s
  67. }
  68. func WriteSms(tos []string, content string) {
  69. if !g.Config.SmsEnabled {
  70. return
  71. }
  72. if len(tos) == 0 {
  73. return
  74. }
  75. sms := &g.Sms{Tos: strings.Join(tos, ","), Content: content}
  76. SmsWorkerChan <- 1
  77. go sendSms(sms.Tos, sms.Content)
  78. }
  79. func WriteMail(tos []string, subject, content string) {
  80. if !g.Config.Smtp.Enabled {
  81. return
  82. }
  83. if len(tos) == 0 {
  84. return
  85. }
  86. mail := &g.Mail{Tos: strings.Join(tos, ","), Subject: subject, Content: content}
  87. MailWorkerChan <- 1
  88. go sendMail(mail)
  89. }
  90. func WriteWeChat(tos []string, content string) {
  91. if !g.Config.WeChat.Enabled {
  92. return
  93. }
  94. if len(tos) == 0 {
  95. return
  96. }
  97. weChat := &g.WeChat{Tos: strings.Join(tos, "|"), Content: content}
  98. WeChatWorkerChan <- 1
  99. go sendWeChat(weChat)
  100. }