validator.go 809 B

12345678910111213141516171819202122232425262728
  1. package validation
  2. import (
  3. "fmt"
  4. "github.com/fatedier/frp/pkg/policy/security"
  5. )
  6. // ConfigValidator holds the context dependencies for configuration validation.
  7. type ConfigValidator struct {
  8. unsafeFeatures *security.UnsafeFeatures
  9. }
  10. // NewConfigValidator creates a new ConfigValidator instance.
  11. func NewConfigValidator(unsafeFeatures *security.UnsafeFeatures) *ConfigValidator {
  12. return &ConfigValidator{
  13. unsafeFeatures: unsafeFeatures,
  14. }
  15. }
  16. // ValidateUnsafeFeature checks if a specific unsafe feature is enabled.
  17. func (v *ConfigValidator) ValidateUnsafeFeature(feature string) error {
  18. if !v.unsafeFeatures.IsEnabled(feature) {
  19. return fmt.Errorf("unsafe feature %q is not enabled. "+
  20. "To enable it, ensure it is allowed in the configuration or command line flags", feature)
  21. }
  22. return nil
  23. }