mask.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 []plugin_entities.ProviderConfig,
  9. ) map[string]any {
  10. /*
  11. Mask credentials based on provider config
  12. */
  13. configs_map := make(map[string]plugin_entities.ProviderConfig)
  14. for _, config := range provider_config {
  15. configs_map[config.Name] = config
  16. }
  17. copied_credentials := make(map[string]any)
  18. for key, value := range credentials {
  19. if config, ok := configs_map[key]; ok {
  20. if config.Type == plugin_entities.CONFIG_TYPE_SECRET_INPUT {
  21. if original_value, ok := value.(string); ok {
  22. if len(original_value) > 6 {
  23. copied_credentials[key] = original_value[:2] +
  24. strings.Repeat("*", len(original_value)-4) +
  25. original_value[len(original_value)-2:]
  26. } else {
  27. copied_credentials[key] = strings.Repeat("*", len(original_value))
  28. }
  29. } else {
  30. copied_credentials[key] = value
  31. }
  32. } else {
  33. copied_credentials[key] = value
  34. }
  35. } else {
  36. copied_credentials[key] = value
  37. }
  38. }
  39. return copied_credentials
  40. }