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