mask.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package encryption
  2. import (
  3. "strings"
  4. "github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
  5. )
  6. func MaskConfigCredentials(
  7. credentials map[string]any,
  8. provider_config map[string]plugin_entities.ProviderConfig,
  9. ) map[string]any {
  10. /*
  11. Mask credentials based on provider config
  12. */
  13. copied_credentials := make(map[string]any)
  14. for key, value := range credentials {
  15. if config, ok := provider_config[key]; ok {
  16. if config.Type == plugin_entities.CONFIG_TYPE_SECRET_INPUT {
  17. if original_value, ok := value.(string); ok {
  18. if len(original_value) > 6 {
  19. copied_credentials[key] = original_value[:2] +
  20. strings.Repeat("*", len(original_value)-4) +
  21. original_value[len(original_value)-2:]
  22. } else {
  23. copied_credentials[key] = strings.Repeat("*", len(original_value))
  24. }
  25. } else {
  26. copied_credentials[key] = value
  27. }
  28. } else {
  29. copied_credentials[key] = value
  30. }
  31. } else {
  32. copied_credentials[key] = value
  33. }
  34. }
  35. return copied_credentials
  36. }