package web import ( "context" "fmt" v1 "github.com/go-nunu/nunu-layout-advanced/api/v1" "github.com/go-nunu/nunu-layout-advanced/internal/service/api/waf/common" ) type Valid interface { ValidateAddRequest(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) error ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error ValidateDeletePermission(oldHostId int, hostId int) error } // ValidateAddRequest 验证添加请求 func (s *aidedWebService) ValidateAddRequest(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) error { if err := s.wafformatter.ValidateWafDomainCount(ctx, v1.GlobalRequire{ HostId: req.HostId, Domain: req.WebForwardingData.Domain, Comment: req.WebForwardingData.Comment, Uid: req.Uid, }); err != nil { return fmt.Errorf("域名数量验证失败: %w", err) } if err := s.wafformatter.ValidateWafPortCount(ctx, require.HostId); err != nil { return fmt.Errorf("端口数量验证失败: %w", err) } protocol := s.GetProtocolType(req.WebForwardingData.IsHttps) if err := s.wafformatter.VerifyPort(ctx, protocol, int64(req.WebForwardingData.Id), req.WebForwardingData.Port, int64(require.HostId), req.WebForwardingData.Domain); err != nil { return fmt.Errorf("端口 %d 验证失败: %w", req.WebForwardingData.Port, err) } return nil } // ValidateEditRequest 验证编辑请求 func (s *aidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error { if err := s.wafformatter.ValidateWafDomainCount(ctx, v1.GlobalRequire{ HostId: req.HostId, Domain: req.WebForwardingData.Domain, Comment: req.WebForwardingData.Comment, Uid: req.Uid, }); err != nil { return fmt.Errorf("域名数量验证失败: %w", err) } protocol := s.GetProtocolType(req.WebForwardingData.IsHttps) if err := s.wafformatter.VerifyPort(ctx, protocol, int64(req.WebForwardingData.Id), req.WebForwardingData.Port, int64(req.HostId), req.WebForwardingData.Domain); err != nil { return fmt.Errorf("端口 %d 验证失败: %w", req.WebForwardingData.Port, err) } return nil } // ValidateDeletePermission 验证删除权限 func (s *aidedWebService) ValidateDeletePermission(oldHostId int, hostId int) error { if oldHostId != hostId { return fmt.Errorf("用户权限不足") } return nil }