enrich_date.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package parser
  2. import (
  3. "time"
  4. "github.com/crowdsecurity/crowdsec/pkg/types"
  5. log "github.com/sirupsen/logrus"
  6. )
  7. func GenDateParse(date string) (string, time.Time) {
  8. var (
  9. layouts = [...]string{
  10. time.RFC3339,
  11. "02/Jan/2006:15:04:05 -0700",
  12. "Mon Jan 2 15:04:05 2006",
  13. "02-Jan-2006 15:04:05 europe/paris",
  14. "01/02/2006 15:04:05",
  15. "2006-01-02 15:04:05.999999999 -0700 MST",
  16. "Jan 2 15:04:05",
  17. "Mon Jan 02 15:04:05.000000 2006",
  18. "2006-01-02T15:04:05Z07:00",
  19. "2006/01/02",
  20. "2006/01/02 15:04",
  21. "2006-01-02",
  22. "2006-01-02 15:04",
  23. "2006/01/02 15:04:05",
  24. "2006-01-02 15:04:05",
  25. }
  26. )
  27. for _, dateFormat := range layouts {
  28. t, err := time.Parse(dateFormat, date)
  29. if err == nil && !t.IsZero() {
  30. //if the year isn't set, set it to current date :)
  31. if t.Year() == 0 {
  32. t = t.AddDate(time.Now().UTC().Year(), 0, 0)
  33. }
  34. retstr, err := t.MarshalText()
  35. if err != nil {
  36. log.Warningf("Failed marshaling '%v'", t)
  37. continue
  38. }
  39. return string(retstr), t
  40. }
  41. }
  42. now := time.Now().UTC()
  43. retstr, err := now.MarshalText()
  44. if err != nil {
  45. log.Warningf("Failed marshaling current time")
  46. return "", time.Time{}
  47. }
  48. return string(retstr), now
  49. }
  50. func ParseDate(in string, p *types.Event, x interface{}) (map[string]string, error) {
  51. var ret map[string]string = make(map[string]string)
  52. tstr, tbin := GenDateParse(in)
  53. if !tbin.IsZero() {
  54. ret["MarshaledTime"] = string(tstr)
  55. return ret, nil
  56. }
  57. return nil, nil
  58. }
  59. func parseDateInit(cfg map[string]string) (interface{}, error) {
  60. return nil, nil
  61. }