Do not require server restart when enabling/disabling plugins (#7592)
Этот коммит содержится в:
коммит произвёл
Chris
родитель
6097e3f02b
Коммит
d1958bdc49
@@ -394,12 +394,14 @@ func (a *App) RemovePlugin(id string) *model.AppError {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) InitPlugins(pluginPath, webappPath string) {
|
func (a *App) InitPlugins(pluginPath, webappPath string) {
|
||||||
a.InitBuiltInPlugins()
|
|
||||||
|
|
||||||
if !utils.IsLicensed() || !*utils.License().Features.FutureFeatures || !*utils.Cfg.PluginSettings.Enable {
|
if !utils.IsLicensed() || !*utils.License().Features.FutureFeatures || !*utils.Cfg.PluginSettings.Enable {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if a.PluginEnv != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
l4g.Info("Starting up plugins")
|
l4g.Info("Starting up plugins")
|
||||||
|
|
||||||
err := os.Mkdir(pluginPath, 0744)
|
err := os.Mkdir(pluginPath, 0744)
|
||||||
@@ -485,9 +487,13 @@ func (a *App) ShutDownPlugins() {
|
|||||||
if a.PluginEnv == nil {
|
if a.PluginEnv == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
l4g.Info("Shutting down plugins")
|
||||||
|
|
||||||
for _, err := range a.PluginEnv.Shutdown() {
|
for _, err := range a.PluginEnv.Shutdown() {
|
||||||
l4g.Error(err.Error())
|
l4g.Error(err.Error())
|
||||||
}
|
}
|
||||||
utils.RemoveConfigListener(a.PluginConfigListenerId)
|
utils.RemoveConfigListener(a.PluginConfigListenerId)
|
||||||
a.PluginConfigListenerId = ""
|
a.PluginConfigListenerId = ""
|
||||||
|
a.PluginEnv = nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,8 +76,18 @@ func runServer(configFileLocation string) {
|
|||||||
a.LoadLicense()
|
a.LoadLicense()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.InitBuiltInPlugins()
|
||||||
|
|
||||||
if webappDir, ok := utils.FindDir(model.CLIENT_DIR); ok {
|
if webappDir, ok := utils.FindDir(model.CLIENT_DIR); ok {
|
||||||
a.InitPlugins("plugins", webappDir+"/plugins")
|
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 {
|
} else {
|
||||||
l4g.Error("Unable to find webapp directory, could not initialize plugins")
|
l4g.Error("Unable to find webapp directory, could not initialize plugins")
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user