valid.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package web
  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/service/api/waf/common"
  7. )
  8. type Valid interface {
  9. ValidateAddRequest(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) error
  10. ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error
  11. ValidateDeletePermission(oldHostId int, hostId int) error
  12. }
  13. // ValidateAddRequest 验证添加请求
  14. func (s *aidedWebService) ValidateAddRequest(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) error {
  15. if err := s.wafformatter.ValidateWafDomainCount(ctx, v1.GlobalRequire{
  16. HostId: req.HostId,
  17. Domain: req.WebForwardingData.Domain,
  18. Comment: req.WebForwardingData.Comment,
  19. Uid: req.Uid,
  20. }); err != nil {
  21. return fmt.Errorf("域名数量验证失败: %w", err)
  22. }
  23. if err := s.wafformatter.ValidateWafPortCount(ctx, require.HostId); err != nil {
  24. return fmt.Errorf("端口数量验证失败: %w", err)
  25. }
  26. protocol := s.GetProtocolType(req.WebForwardingData.IsHttps)
  27. if err := s.wafformatter.VerifyPort(ctx, protocol, int64(req.WebForwardingData.Id), req.WebForwardingData.Port, int64(require.HostId), req.WebForwardingData.Domain); err != nil {
  28. return fmt.Errorf("端口 %d 验证失败: %w", req.WebForwardingData.Port, err)
  29. }
  30. return nil
  31. }
  32. // ValidateEditRequest 验证编辑请求
  33. func (s *aidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error {
  34. if err := s.wafformatter.ValidateWafDomainCount(ctx, v1.GlobalRequire{
  35. HostId: req.HostId,
  36. Domain: req.WebForwardingData.Domain,
  37. Comment: req.WebForwardingData.Comment,
  38. Uid: req.Uid,
  39. }); err != nil {
  40. return fmt.Errorf("域名数量验证失败: %w", err)
  41. }
  42. protocol := s.GetProtocolType(req.WebForwardingData.IsHttps)
  43. if err := s.wafformatter.VerifyPort(ctx, protocol, int64(req.WebForwardingData.Id), req.WebForwardingData.Port, int64(req.HostId), req.WebForwardingData.Domain); err != nil {
  44. return fmt.Errorf("端口 %d 验证失败: %w", req.WebForwardingData.Port, err)
  45. }
  46. return nil
  47. }
  48. // ValidateDeletePermission 验证删除权限
  49. func (s *aidedWebService) ValidateDeletePermission(oldHostId int, hostId int) error {
  50. if oldHostId != hostId {
  51. return fmt.Errorf("用户权限不足")
  52. }
  53. return nil
  54. }