cc.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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/repository/api/waf"
  8. "github.com/go-nunu/nunu-layout-advanced/internal/service"
  9. "time"
  10. )
  11. type CcService interface {
  12. GetCcList(ctx context.Context, req v1.CCListRequest) ([]v1.CCListResponse, error)
  13. EditCcState(ctx context.Context, req v1.CCStateRequest) error
  14. }
  15. func NewCcService(
  16. service *service.Service,
  17. ccRepository flexCdn.CcRepository,
  18. webForwardingRep waf.WebForwardingRepository,
  19. cdn CdnService,
  20. ) CcService {
  21. return &ccService{
  22. Service: service,
  23. ccRepository: ccRepository,
  24. webForwardingRep: webForwardingRep,
  25. cdn: cdn,
  26. }
  27. }
  28. type ccService struct {
  29. *service.Service
  30. ccRepository flexCdn.CcRepository
  31. webForwardingRep waf.WebForwardingRepository
  32. cdn CdnService
  33. }
  34. func (s *ccService) GetCcList(ctx context.Context, req v1.CCListRequest) ([]v1.CCListResponse, error) {
  35. webData, err := s.webForwardingRep.GetWebForwarding(ctx, req.WebId)
  36. if err != nil {
  37. return nil, err
  38. }
  39. if webData.CdnWebId == 0 {
  40. return nil, fmt.Errorf("网站不存在")
  41. }
  42. ccList, err := s.ccRepository.GetCcList(ctx, int64(webData.CdnWebId))
  43. if err != nil {
  44. return nil, err
  45. }
  46. var res []v1.CCListResponse
  47. for _, v := range ccList {
  48. res = append(res, v1.CCListResponse{
  49. Value: v.Value,
  50. Type: v.Type,
  51. Reason: v.Reason,
  52. SourceURL: v.SourceURL,
  53. SourceUserAgent: v.SourceUserAgent,
  54. CreatedAt: time.Unix(v.CreatedAt, 0).Format("2006-01-02 15:04:05"),
  55. ExpiredAt: time.Unix(v.ExpiredAt, 0).Format("2006-01-02 15:04:05"),
  56. })
  57. }
  58. return res, nil
  59. }
  60. func (s *ccService) EditCcState(ctx context.Context, req v1.CCStateRequest) error {
  61. for _, v := range req.Ips {
  62. webData, err := s.webForwardingRep.GetWebForwarding(ctx, req.WebId)
  63. if err != nil {
  64. return err
  65. }
  66. if webData.CdnWebId == 0 {
  67. return fmt.Errorf("网站不存在")
  68. }
  69. ccId, err := s.ccRepository.GetCcId(ctx, int64(webData.CdnWebId), v)
  70. if err != nil {
  71. return err
  72. }
  73. if ccId == 0 {
  74. return fmt.Errorf("IP不存在")
  75. }
  76. err = s.cdn.DelIpItem(ctx, ccId, v, "", "", 2000000000)
  77. if err != nil {
  78. return err
  79. }
  80. }
  81. return nil
  82. }