diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-10-06 13:58:23 -0400 |
---|---|---|
committer | Chris <ccbrown112@gmail.com> | 2017-10-06 10:58:23 -0700 |
commit | d1958bdc49cd10277ca2e27bb2eea499c5994954 (patch) | |
tree | 67eaceacc38437e153bb08e2ac3d0f15011e116f | |
parent | 6097e3f02b6e5b2d9e320f0e1b8baa59c9a06af7 (diff) | |
download | chat-d1958bdc49cd10277ca2e27bb2eea499c5994954.tar.gz chat-d1958bdc49cd10277ca2e27bb2eea499c5994954.tar.bz2 chat-d1958bdc49cd10277ca2e27bb2eea499c5994954.zip |
Do not require server restart when enabling/disabling plugins (#7592)
-rw-r--r-- | app/plugins.go | 10 | ||||
-rw-r--r-- | cmd/platform/server.go | 10 |
2 files changed, 18 insertions, 2 deletions
diff --git a/app/plugins.go b/app/plugins.go index 2c87cee19..9826674f1 100644 --- a/app/plugins.go +++ b/app/plugins.go @@ -394,12 +394,14 @@ func (a *App) RemovePlugin(id string) *model.AppError { } func (a *App) InitPlugins(pluginPath, webappPath string) { - a.InitBuiltInPlugins() - if !utils.IsLicensed() || !*utils.License().Features.FutureFeatures || !*utils.Cfg.PluginSettings.Enable { return } + if a.PluginEnv != nil { + return + } + l4g.Info("Starting up plugins") err := os.Mkdir(pluginPath, 0744) @@ -485,9 +487,13 @@ func (a *App) ShutDownPlugins() { if a.PluginEnv == nil { return } + + l4g.Info("Shutting down plugins") + for _, err := range a.PluginEnv.Shutdown() { l4g.Error(err.Error()) } utils.RemoveConfigListener(a.PluginConfigListenerId) a.PluginConfigListenerId = "" + a.PluginEnv = nil } diff --git a/cmd/platform/server.go b/cmd/platform/server.go index 7ee7097e7..ac3f645c2 100644 --- a/cmd/platform/server.go +++ b/cmd/platform/server.go @@ -76,8 +76,18 @@ func runServer(configFileLocation string) { a.LoadLicense() } + a.InitBuiltInPlugins() + if webappDir, ok := utils.FindDir(model.CLIENT_DIR); ok { a.InitPlugins("plugins", webappDir+"/plugins") + + utils.AddConfigListener(func(prevCfg *model.Config, cfg *model.Config) { + if !*prevCfg.PluginSettings.Enable && *cfg.PluginSettings.Enable { + a.InitPlugins("plugins", webappDir+"/plugins") + } else if *prevCfg.PluginSettings.Enable && !*cfg.PluginSettings.Enable { + a.ShutDownPlugins() + } + }) } else { l4g.Error("Unable to find webapp directory, could not initialize plugins") } |