123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package flexCdn
- import (
- "context"
- "fmt"
- v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
- "github.com/go-nunu/nunu-layout-advanced/internal/repository/api/flexCdn"
- "github.com/go-nunu/nunu-layout-advanced/internal/service"
- )
- type CcIpListService interface {
- GetCcIpList(ctx context.Context, serverId int64) ([]string, error)
- AddCcIpListPolicy(ctx context.Context, serverId int64,serverGroupId int64,httpWebId int64) error
- }
- func NewCcIpListService(
- service *service.Service,
- ccIpListRepository flexCdn.CcIpListRepository,
- cdn CdnService,
- ) CcIpListService {
- return &ccIpListService{
- Service: service,
- ccIpListRepository: ccIpListRepository,
- cdn: cdn,
- }
- }
- type ccIpListService struct {
- *service.Service
- ccIpListRepository flexCdn.CcIpListRepository
- cdn CdnService
- }
- func (s *ccIpListService) GetCcIpList(ctx context.Context, serverId int64) ([]string, error) {
- return s.ccIpListRepository.GetCcIpList(ctx, serverId)
- }
- func (s *ccIpListService) AddCcIpListPolicy(ctx context.Context, serverId int64,serverGroupId int64,httpWebId int64) error {
- // 创建用户自定义防火墙策略
- httpFirewallPolicyId, err := s.cdn.AddWafPolicy(ctx, v1.AddWafPolicy{
- IsOn: true,
- ServerId: serverId,
- ServerGroupId: serverGroupId,
- Name: "用户自定义防火墙策略",
- Description: "",
- })
- if err != nil {
- return err
- }
- if httpFirewallPolicyId == 0 {
- return fmt.Errorf("创建用户自定义防火墙策略失败")
- }
- // 修改防火墙
- err = s.cdn.EditHTTPWebFirewal(ctx, httpWebId, v1.Firewall{
- IsOn: true,
- IsPrior: false,
- FirewallPolicyId: httpFirewallPolicyId,
- IgnoreGlobalRules: false,
- DefaultCaptchaType: "default",
- })
- if err != nil {
- return err
- }
- return nil
- }
- // 添加白名单
- func (s *ccIpListService) AddCcWhiteIp(ctx context.Context, serverId int64,ip string) error {
- ipListId, err := s.ccIpListRepository.GetIpListId(ctx, serverId,"white")
- if err != nil {
- return err
- }
- err = s.cdn.AddIpItem(ctx,v1.AddIpItem{
- IpListId: ipListId,
- Value: ip,
- EventLevel: "notice",
- SourceCategory: "cc",
- })
- if err != nil {
- return err
- }
- return nil
- }
- func (s *ccIpListService) DelCcWhiteIp(ctx context.Context, serverId int64,ip string) error {
- ipListId, err := s.ccIpListRepository.GetIpListId(ctx, serverId,"white")
- if err != nil {
- return err
- }
- ipItemId, err := s.ccIpListRepository.GetIpId(ctx, ipListId,ip,"cc")
- if err != nil {
- return err
- }
- err = s.cdn.DelIpItem(ctx,ipItemId,ip,"", "", ipListId)
- if err != nil {
- return err
- }
- return nil
- }
|