audit.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package dbdata
  2. import (
  3. "encoding/json"
  4. "xorm.io/xorm"
  5. )
  6. type SearchCon struct {
  7. Username string `json:"username"`
  8. Src string `json:"src"`
  9. Dst string `json:"dst"`
  10. DstPort string `json:"dst_port"`
  11. AccessProto string `json:"access_proto"`
  12. Date []string `json:"date"`
  13. Info string `json:"info"`
  14. Sort int `json:"sort"`
  15. }
  16. func GetAuditSession(search string) *xorm.Session {
  17. session := xdb.Where("1=1")
  18. if search == "" {
  19. return session
  20. }
  21. var searchData SearchCon
  22. err := json.Unmarshal([]byte(search), &searchData)
  23. if err != nil {
  24. return session
  25. }
  26. if searchData.Username != "" {
  27. session.And("username = ?", searchData.Username)
  28. }
  29. if searchData.Src != "" {
  30. session.And("src = ?", searchData.Src)
  31. }
  32. if searchData.Dst != "" {
  33. session.And("dst = ?", searchData.Dst)
  34. }
  35. if searchData.DstPort != "" {
  36. session.And("dst_port = ?", searchData.DstPort)
  37. }
  38. if searchData.AccessProto != "" {
  39. session.And("access_proto = ?", searchData.AccessProto)
  40. }
  41. if len(searchData.Date) > 0 && searchData.Date[0] != "" {
  42. session.And("created_at BETWEEN ? AND ?", searchData.Date[0], searchData.Date[1])
  43. }
  44. if searchData.Info != "" {
  45. session.And("info LIKE ?", "%"+searchData.Info+"%")
  46. }
  47. if searchData.Sort == 1 {
  48. session.OrderBy("id desc")
  49. } else {
  50. session.OrderBy("id asc")
  51. }
  52. return session
  53. }
  54. func ClearAccessAudit(ts string) (int64, error) {
  55. affected, err := xdb.Where("created_at < '" + ts + "'").Delete(&AccessAudit{})
  56. return affected, err
  57. }