| 
									
										
										
										
											2020-04-15 00:04:27 +08:00
										 |  |  | package setting | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"strings" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"gopkg.in/ini.v1" | 
					
						
							| 
									
										
										
										
											2023-12-13 17:25:17 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/util" | 
					
						
							| 
									
										
										
										
											2020-04-15 00:04:27 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // PluginSettings maps plugin id to map of key/value settings.
 | 
					
						
							|  |  |  | type PluginSettings map[string]map[string]string | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func extractPluginSettings(sections []*ini.Section) PluginSettings { | 
					
						
							|  |  |  | 	psMap := PluginSettings{} | 
					
						
							|  |  |  | 	for _, section := range sections { | 
					
						
							|  |  |  | 		sectionName := section.Name() | 
					
						
							|  |  |  | 		if !strings.HasPrefix(sectionName, "plugin.") { | 
					
						
							|  |  |  | 			continue | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		pluginID := strings.Replace(sectionName, "plugin.", "", 1) | 
					
						
							|  |  |  | 		psMap[pluginID] = section.KeysHash() | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return psMap | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-11-15 17:53:35 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | func (cfg *Cfg) readPluginSettings(iniFile *ini.File) error { | 
					
						
							|  |  |  | 	pluginsSection := iniFile.Section("plugins") | 
					
						
							| 
									
										
										
										
											2023-01-27 22:08:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-15 17:53:35 +08:00
										 |  |  | 	cfg.PluginsEnableAlpha = pluginsSection.Key("enable_alpha").MustBool(false) | 
					
						
							|  |  |  | 	cfg.PluginsAppsSkipVerifyTLS = pluginsSection.Key("app_tls_skip_verify_insecure").MustBool(false) | 
					
						
							|  |  |  | 	cfg.PluginSettings = extractPluginSettings(iniFile.Sections()) | 
					
						
							| 
									
										
										
										
											2023-06-16 17:20:30 +08:00
										 |  |  | 	cfg.PluginSkipPublicKeyDownload = pluginsSection.Key("public_key_retrieval_disabled").MustBool(false) | 
					
						
							|  |  |  | 	cfg.PluginForcePublicKeyDownload = pluginsSection.Key("public_key_retrieval_on_startup").MustBool(false) | 
					
						
							| 
									
										
										
										
											2022-09-28 14:29:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-13 17:25:17 +08:00
										 |  |  | 	cfg.PluginsAllowUnsigned = util.SplitString(pluginsSection.Key("allow_loading_unsigned_plugins").MustString("")) | 
					
						
							|  |  |  | 	cfg.DisablePlugins = util.SplitString(pluginsSection.Key("disable_plugins").MustString("")) | 
					
						
							|  |  |  | 	cfg.HideAngularDeprecation = util.SplitString(pluginsSection.Key("hide_angular_deprecation").MustString("")) | 
					
						
							|  |  |  | 	cfg.ForwardHostEnvVars = util.SplitString(pluginsSection.Key("forward_host_env_vars").MustString("")) | 
					
						
							| 
									
										
										
										
											2023-12-12 17:20:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-15 17:53:35 +08:00
										 |  |  | 	cfg.PluginCatalogURL = pluginsSection.Key("plugin_catalog_url").MustString("https://grafana.com/grafana/plugins/") | 
					
						
							|  |  |  | 	cfg.PluginAdminEnabled = pluginsSection.Key("plugin_admin_enabled").MustBool(true) | 
					
						
							|  |  |  | 	cfg.PluginAdminExternalManageEnabled = pluginsSection.Key("plugin_admin_external_manage_enabled").MustBool(false) | 
					
						
							| 
									
										
										
										
											2023-12-13 17:25:17 +08:00
										 |  |  | 	cfg.PluginCatalogHiddenPlugins = util.SplitString(pluginsSection.Key("plugin_catalog_hidden_plugins").MustString("")) | 
					
						
							| 
									
										
										
										
											2022-09-28 14:29:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-13 17:25:17 +08:00
										 |  |  | 	// Pull disabled plugins from the catalog
 | 
					
						
							| 
									
										
										
										
											2023-09-14 18:58:12 +08:00
										 |  |  | 	cfg.PluginCatalogHiddenPlugins = append(cfg.PluginCatalogHiddenPlugins, cfg.DisablePlugins...) | 
					
						
							| 
									
										
										
										
											2022-09-28 14:29:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-27 22:08:17 +08:00
										 |  |  | 	// Plugins CDN settings
 | 
					
						
							|  |  |  | 	cfg.PluginsCDNURLTemplate = strings.TrimRight(pluginsSection.Key("cdn_base_url").MustString(""), "/") | 
					
						
							| 
									
										
										
										
											2023-02-07 19:49:16 +08:00
										 |  |  | 	cfg.PluginLogBackendRequests = pluginsSection.Key("log_backend_requests").MustBool(false) | 
					
						
							| 
									
										
										
										
											2023-01-27 22:08:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-24 22:21:37 +08:00
										 |  |  | 	// Installation token for managed plugins
 | 
					
						
							|  |  |  | 	cfg.PluginInstallToken = pluginsSection.Key("install_token").MustString("") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-15 17:53:35 +08:00
										 |  |  | 	return nil | 
					
						
							|  |  |  | } |