(instance compat.PluginInstance, pluginConf *model.PluginConf)
| 364 | } |
| 365 | |
| 366 | func (m *Manager) initializeConfigurerForSingleUserPlugin(instance compat.PluginInstance, pluginConf *model.PluginConf) { |
| 367 | if len(pluginConf.Config) == 0 { |
| 368 | // The Configurer is newly implemented |
| 369 | // Use the default config |
| 370 | pluginConf.Config, _ = yaml.Marshal(instance.DefaultConfig()) |
| 371 | m.db.UpdatePluginConf(pluginConf) |
| 372 | } |
| 373 | c := instance.DefaultConfig() |
| 374 | if yaml.Unmarshal(pluginConf.Config, c) != nil || instance.ValidateAndSetConfig(c) != nil { |
| 375 | pluginConf.Enabled = false |
| 376 | |
| 377 | log.Printf("Plugin %s for user %d failed to initialize because it rejected the current config. It might be outdated. A default config is used and the user would need to enable it again.", pluginConf.ModulePath, pluginConf.UserID) |
| 378 | newConf := bytes.NewBufferString("# Plugin initialization failed because it rejected the current config. It might be outdated.\r\n# A default plugin configuration is used:\r\n") |
| 379 | |
| 380 | d, _ := yaml.Marshal(c) |
| 381 | newConf.Write(d) |
| 382 | newConf.WriteString("\r\n") |
| 383 | |
| 384 | newConf.WriteString("# The original configuration: \r\n") |
| 385 | oldConf := bufio.NewScanner(bytes.NewReader(pluginConf.Config)) |
| 386 | for oldConf.Scan() { |
| 387 | newConf.WriteString("# ") |
| 388 | newConf.WriteString(oldConf.Text()) |
| 389 | newConf.WriteString("\r\n") |
| 390 | } |
| 391 | |
| 392 | pluginConf.Config = newConf.Bytes() |
| 393 | |
| 394 | m.db.UpdatePluginConf(pluginConf) |
| 395 | instance.ValidateAndSetConfig(instance.DefaultConfig()) |
| 396 | } |
| 397 | } |
| 398 | |
| 399 | func (m *Manager) createPluginConf(instance compat.PluginInstance, info compat.Info, userID uint) (*model.PluginConf, error) { |
| 400 | pluginConf := &model.PluginConf{ |
no test coverage detected