wafformatter.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package service
  2. import (
  3. "context"
  4. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  5. "github.com/go-nunu/nunu-layout-advanced/internal/repository"
  6. "strconv"
  7. )
  8. type WafFormatterService interface {
  9. require(ctx context.Context, req v1.GlobalRequire, category string) (v1.GlobalRequire, error)
  10. }
  11. func NewWafFormatterService(
  12. service *Service,
  13. globalRep repository.GlobalLimitRepository,
  14. hostRep repository.HostRepository,
  15. ) WafFormatterService {
  16. return &wafFormatterService{
  17. Service: service,
  18. globalRep: globalRep,
  19. hostRep: hostRep,
  20. }
  21. }
  22. type wafFormatterService struct {
  23. *Service
  24. globalRep repository.GlobalLimitRepository
  25. hostRep repository.HostRepository
  26. }
  27. func (s *wafFormatterService) require(ctx context.Context,req v1.GlobalRequire,category string) (v1.GlobalRequire, error) {
  28. RuleIds, err := s.globalRep.GetGlobalLimitByHostId(ctx, int64(req.HostId))
  29. if err != nil {
  30. return v1.GlobalRequire{}, err
  31. }
  32. req.WafGatewayGroupId = RuleIds.GatewayGroupId
  33. switch category {
  34. case "tcp":
  35. req.LimitRuleId = RuleIds.TcpLimitRuleId
  36. case "udp":
  37. req.LimitRuleId = RuleIds.UdpLimitRuleId
  38. case "web":
  39. req.LimitRuleId = RuleIds.WebLimitRuleId
  40. }
  41. domain, err := s.hostRep.GetDomainById(ctx, req.HostId)
  42. if err != nil {
  43. return v1.GlobalRequire{}, err
  44. }
  45. req.Tag = strconv.Itoa(req.Uid) + "_" + strconv.Itoa(req.HostId) + "_" + domain + "_" + req.Comment
  46. return req, nil
  47. }