plugin_settings.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package models
  2. import (
  3. "errors"
  4. "time"
  5. "github.com/grafana/grafana/pkg/setting"
  6. "github.com/grafana/grafana/pkg/util"
  7. )
  8. var (
  9. ErrPluginSettingNotFound = errors.New("Plugin setting not found")
  10. )
  11. type PluginSetting struct {
  12. Id int64
  13. PluginId string
  14. OrgId int64
  15. Enabled bool
  16. Pinned bool
  17. JsonData map[string]interface{}
  18. SecureJsonData SecureJsonData
  19. PluginVersion string
  20. Created time.Time
  21. Updated time.Time
  22. }
  23. type SecureJsonData map[string][]byte
  24. func (s SecureJsonData) Decrypt() map[string]string {
  25. decrypted := make(map[string]string)
  26. for key, data := range s {
  27. decrypted[key] = string(util.Decrypt(data, setting.SecretKey))
  28. }
  29. return decrypted
  30. }
  31. // ----------------------
  32. // COMMANDS
  33. // Also acts as api DTO
  34. type UpdatePluginSettingCmd struct {
  35. Enabled bool `json:"enabled"`
  36. Pinned bool `json:"pinned"`
  37. JsonData map[string]interface{} `json:"jsonData"`
  38. SecureJsonData map[string]string `json:"secureJsonData"`
  39. PluginVersion string `json:"version"`
  40. PluginId string `json:"-"`
  41. OrgId int64 `json:"-"`
  42. }
  43. // specific command, will only update version
  44. type UpdatePluginSettingVersionCmd struct {
  45. PluginVersion string
  46. PluginId string `json:"-"`
  47. OrgId int64 `json:"-"`
  48. }
  49. func (cmd *UpdatePluginSettingCmd) GetEncryptedJsonData() SecureJsonData {
  50. encrypted := make(SecureJsonData)
  51. for key, data := range cmd.SecureJsonData {
  52. encrypted[key] = util.Encrypt([]byte(data), setting.SecretKey)
  53. }
  54. return encrypted
  55. }
  56. // ---------------------
  57. // QUERIES
  58. type GetPluginSettingsQuery struct {
  59. OrgId int64
  60. Result []*PluginSettingInfoDTO
  61. }
  62. type PluginSettingInfoDTO struct {
  63. OrgId int64
  64. PluginId string
  65. Enabled bool
  66. Pinned bool
  67. PluginVersion string
  68. }
  69. type GetPluginSettingByIdQuery struct {
  70. PluginId string
  71. OrgId int64
  72. Result *PluginSetting
  73. }
  74. type PluginStateChangedEvent struct {
  75. PluginId string
  76. OrgId int64
  77. Enabled bool
  78. }