|
@@ -33,14 +33,19 @@ func NewGlobalLimitService(
|
|
|
required RequiredService,
|
|
|
parser ParserService,
|
|
|
host HostService,
|
|
|
- tcpLimit TcpLimitService,
|
|
|
- udpLimit UdpLimitService,
|
|
|
- webLimit WebLimitService,
|
|
|
gateWayGroup GatewayGroupService,
|
|
|
hostRep repository.HostRepository,
|
|
|
gateWayGroupRep repository.GatewayGroupRepository,
|
|
|
cdnService CdnService,
|
|
|
cdnRep repository.CdnRepository,
|
|
|
+ tcpforwardingRep repository.TcpforwardingRepository,
|
|
|
+ udpForWardingRep repository.UdpForWardingRepository,
|
|
|
+ webForWardingRep repository.WebForwardingRepository,
|
|
|
+ allowAndDeny AllowAndDenyIpService,
|
|
|
+ allowAndDenyRep repository.AllowAndDenyIpRepository,
|
|
|
+ tcpforwarding TcpforwardingService,
|
|
|
+ udpForWarding UdpForWardingService,
|
|
|
+ webForWarding WebForwardingService,
|
|
|
) GlobalLimitService {
|
|
|
return &globalLimitService{
|
|
|
Service: service,
|
|
@@ -51,14 +56,19 @@ func NewGlobalLimitService(
|
|
|
required: required,
|
|
|
parser: parser,
|
|
|
host: host,
|
|
|
- tcpLimit: tcpLimit,
|
|
|
- udpLimit: udpLimit,
|
|
|
- webLimit: webLimit,
|
|
|
gateWayGroup: gateWayGroup,
|
|
|
hostRep: hostRep,
|
|
|
gateWayGroupRep: gateWayGroupRep,
|
|
|
cdnService: cdnService,
|
|
|
cdnRep: cdnRep,
|
|
|
+ tcpforwardingRep: tcpforwardingRep,
|
|
|
+ udpForWardingRep: udpForWardingRep,
|
|
|
+ webForWardingRep: webForWardingRep,
|
|
|
+ allowAndDeny: allowAndDeny,
|
|
|
+ allowAndDenyRep: allowAndDenyRep,
|
|
|
+ tcpforwarding: tcpforwarding,
|
|
|
+ udpForWarding: udpForWarding,
|
|
|
+ webForWarding: webForWarding,
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -71,14 +81,19 @@ type globalLimitService struct {
|
|
|
required RequiredService
|
|
|
parser ParserService
|
|
|
host HostService
|
|
|
- tcpLimit TcpLimitService
|
|
|
- udpLimit UdpLimitService
|
|
|
- webLimit WebLimitService
|
|
|
gateWayGroup GatewayGroupService
|
|
|
hostRep repository.HostRepository
|
|
|
gateWayGroupRep repository.GatewayGroupRepository
|
|
|
cdnService CdnService
|
|
|
cdnRep repository.CdnRepository
|
|
|
+ tcpforwardingRep repository.TcpforwardingRepository
|
|
|
+ udpForWardingRep repository.UdpForWardingRepository
|
|
|
+ webForWardingRep repository.WebForwardingRepository
|
|
|
+ allowAndDeny AllowAndDenyIpService
|
|
|
+ allowAndDenyRep repository.AllowAndDenyIpRepository
|
|
|
+ tcpforwarding TcpforwardingService
|
|
|
+ udpForWarding UdpForWardingService
|
|
|
+ webForWarding WebForwardingService
|
|
|
}
|
|
|
|
|
|
func (s *globalLimitService) GetCdnUserId(ctx context.Context, uid int64) (int64, error) {
|
|
@@ -380,8 +395,102 @@ func (s *globalLimitService) EditGlobalLimit(ctx context.Context, req v1.GlobalL
|
|
|
|
|
|
|
|
|
func (s *globalLimitService) DeleteGlobalLimit(ctx context.Context, req v1.GlobalLimitRequest) error {
|
|
|
+ oldData, err := s.globalLimitRepository.GetGlobalLimitByHostId(ctx, int64(req.HostId))
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ tcpIds, err := s.tcpforwardingRep.GetTcpForwardingAllIdsByID(ctx,req.HostId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ udpIds, err := s.udpForWardingRep.GetUdpForwardingWafUdpAllIds(ctx,req.HostId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ webIds, err := s.webForWardingRep.GetWebForwardingWafWebAllIds(ctx,req.HostId)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ BwIds, err := s.allowAndDenyRep.GetIpCountListId(ctx, int64(req.HostId))
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除网站
|
|
|
+ g, gCtx := errgroup.WithContext(ctx)
|
|
|
+ g.Go(func() error {
|
|
|
+ e := s.tcpforwarding.DeleteTcpForwarding(ctx,v1.DeleteTcpForwardingRequest{
|
|
|
+ Ids: tcpIds,
|
|
|
+ Uid: req.Uid,
|
|
|
+ HostId: req.HostId,
|
|
|
+ })
|
|
|
+ if e != nil {
|
|
|
+ return fmt.Errorf("删除TCP转发失败: %w", e)
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
+
|
|
|
+ g.Go(func() error {
|
|
|
+ e := s.udpForWarding.DeleteUdpForwarding(ctx,udpIds)
|
|
|
+ if e != nil {
|
|
|
+ return fmt.Errorf("删除UDP转发失败: %w", e)
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
+
|
|
|
+ g.Go(func() error {
|
|
|
+ e := s.webForWarding.DeleteWebForwarding(ctx,webIds)
|
|
|
+ if e != nil {
|
|
|
+ return fmt.Errorf("删除WEB转发失败: %w", e)
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
+
|
|
|
+ // 删除套餐
|
|
|
+ g.Go(func() error {
|
|
|
+ e := s.cdnService.DelUserPlan(gCtx, int64(oldData.RuleId))
|
|
|
+ if e != nil {
|
|
|
+ return fmt.Errorf("删除套餐失败: %w", e)
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
+ // 删除网站分组
|
|
|
+ g.Go(func() error {
|
|
|
+ e := s.cdnService.DelServerGroup(gCtx, int64(oldData.GroupId))
|
|
|
+ if e != nil {
|
|
|
+ return fmt.Errorf("删除网站分组失败: %w", e)
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ })
|
|
|
+
|
|
|
+ if err = g.Wait(); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
if err := s.globalLimitRepository.DeleteGlobalLimitByHostId(ctx, int64(req.HostId)); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
+ if err := s.gateWayGroupRep.EditGatewayGroup(ctx,&model.GatewayGroup{
|
|
|
+ Id: oldData.GatewayGroupId,
|
|
|
+ HostId: 0,
|
|
|
+ }); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除黑白名单
|
|
|
+ err = s.allowAndDeny.DeleteAllowAndDenyIps(ctx, v1.DelAllowAndDenyIpRequest{
|
|
|
+ HostId: req.HostId,
|
|
|
+ Ids: BwIds,
|
|
|
+ Uid: req.Uid,
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
return nil
|
|
|
}
|