cciplist.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package flexCdn
  2. import (
  3. "context"
  4. "fmt"
  5. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/repository/api/flexCdn"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/service"
  8. )
  9. type CcIpListService interface {
  10. GetCcIpList(ctx context.Context, serverId int64) ([]string, error)
  11. AddCcIpListPolicy(ctx context.Context, serverId int64,serverGroupId int64,httpWebId int64) error
  12. }
  13. func NewCcIpListService(
  14. service *service.Service,
  15. ccIpListRepository flexCdn.CcIpListRepository,
  16. cdn CdnService,
  17. ) CcIpListService {
  18. return &ccIpListService{
  19. Service: service,
  20. ccIpListRepository: ccIpListRepository,
  21. cdn: cdn,
  22. }
  23. }
  24. type ccIpListService struct {
  25. *service.Service
  26. ccIpListRepository flexCdn.CcIpListRepository
  27. cdn CdnService
  28. }
  29. func (s *ccIpListService) GetCcIpList(ctx context.Context, serverId int64) ([]string, error) {
  30. return s.ccIpListRepository.GetCcIpList(ctx, serverId)
  31. }
  32. func (s *ccIpListService) AddCcIpListPolicy(ctx context.Context, serverId int64,serverGroupId int64,httpWebId int64) error {
  33. // 创建用户自定义防火墙策略
  34. httpFirewallPolicyId, err := s.cdn.AddWafPolicy(ctx, v1.AddWafPolicy{
  35. IsOn: true,
  36. ServerId: serverId,
  37. ServerGroupId: serverGroupId,
  38. Name: "用户自定义防火墙策略",
  39. Description: "",
  40. })
  41. if err != nil {
  42. return err
  43. }
  44. if httpFirewallPolicyId == 0 {
  45. return fmt.Errorf("创建用户自定义防火墙策略失败")
  46. }
  47. // 修改防火墙
  48. err = s.cdn.EditHTTPWebFirewal(ctx, httpWebId, v1.Firewall{
  49. IsOn: true,
  50. IsPrior: false,
  51. FirewallPolicyId: httpFirewallPolicyId,
  52. IgnoreGlobalRules: false,
  53. DefaultCaptchaType: "default",
  54. })
  55. if err != nil {
  56. return err
  57. }
  58. return nil
  59. }
  60. // 添加白名单
  61. func (s *ccIpListService) AddCcWhiteIp(ctx context.Context, serverId int64,ip string) error {
  62. ipListId, err := s.ccIpListRepository.GetIpListId(ctx, serverId,"white")
  63. if err != nil {
  64. return err
  65. }
  66. err = s.cdn.AddIpItem(ctx,v1.AddIpItem{
  67. IpListId: ipListId,
  68. Value: ip,
  69. EventLevel: "notice",
  70. SourceCategory: "cc",
  71. })
  72. if err != nil {
  73. return err
  74. }
  75. return nil
  76. }
  77. func (s *ccIpListService) DelCcWhiteIp(ctx context.Context, serverId int64,ip string) error {
  78. ipListId, err := s.ccIpListRepository.GetIpListId(ctx, serverId,"white")
  79. if err != nil {
  80. return err
  81. }
  82. ipItemId, err := s.ccIpListRepository.GetIpId(ctx, ipListId,ip,"cc")
  83. if err != nil {
  84. return err
  85. }
  86. err = s.cdn.DelIpItem(ctx,ipItemId,ip,"", "", ipListId)
  87. if err != nil {
  88. return err
  89. }
  90. return nil
  91. }