summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/plugins.go10
-rw-r--r--cmd/platform/server.go10
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")
}