summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris <ccbrown112@gmail.com>2018-03-07 13:53:07 -0600
committerChristopher Brown <ccbrown112@gmail.com>2018-03-07 13:57:59 -0600
commit98e1231fcc6f12eedad2d5fd7a28bf9d349dd853 (patch)
tree19eb81cd8040114248a8b1162ab6ffe516813752
parente4ddad16bfe15ac1c1b6a0334df084bbb334d4e3 (diff)
downloadchat-98e1231fcc6f12eedad2d5fd7a28bf9d349dd853.tar.gz
chat-98e1231fcc6f12eedad2d5fd7a28bf9d349dd853.tar.bz2
chat-98e1231fcc6f12eedad2d5fd7a28bf9d349dd853.zip
respect plugin manifest webapp bundle_path (#8393)
-rw-r--r--model/manifest.go5
-rw-r--r--plugin/pluginenv/environment.go21
2 files changed, 22 insertions, 4 deletions
diff --git a/model/manifest.go b/model/manifest.go
index 5ba4854b6..2b415dc62 100644
--- a/model/manifest.go
+++ b/model/manifest.go
@@ -173,6 +173,11 @@ func (m *Manifest) ClientManifest() *Manifest {
cm.Name = ""
cm.Description = ""
cm.Backend = nil
+ if cm.Webapp != nil {
+ cm.Webapp = new(ManifestWebapp)
+ *cm.Webapp = *m.Webapp
+ cm.Webapp.BundlePath = "/static/" + m.Id + "_bundle.js"
+ }
return cm
}
diff --git a/plugin/pluginenv/environment.go b/plugin/pluginenv/environment.go
index f53021f74..adc9ddbde 100644
--- a/plugin/pluginenv/environment.go
+++ b/plugin/pluginenv/environment.go
@@ -8,6 +8,7 @@ import (
"fmt"
"io/ioutil"
"net/http"
+ "path/filepath"
"sync"
"github.com/pkg/errors"
@@ -163,12 +164,24 @@ func (env *Environment) ActivatePlugin(id string) error {
return fmt.Errorf("env missing webapp path, cannot activate plugin: %v", id)
}
- webappBundle, err := ioutil.ReadFile(fmt.Sprintf("%s/%s/webapp/%s_bundle.js", env.searchPath, id, id))
+ bundlePath := filepath.Clean(bundle.Manifest.Webapp.BundlePath)
+ if bundlePath == "" || bundlePath[0] == '.' {
+ return fmt.Errorf("invalid webapp bundle path")
+ }
+ bundlePath = filepath.Join(env.searchPath, id, bundlePath)
+
+ webappBundle, err := ioutil.ReadFile(bundlePath)
if err != nil {
- if supervisor != nil {
- supervisor.Stop()
+ // Backwards compatibility for plugins where webapp.bundle_path was ignored. This should
+ // be removed eventually.
+ if webappBundle2, err2 := ioutil.ReadFile(fmt.Sprintf("%s/%s/webapp/%s_bundle.js", env.searchPath, id, id)); err2 == nil {
+ webappBundle = webappBundle2
+ } else {
+ if supervisor != nil {
+ supervisor.Stop()
+ }
+ return errors.Wrapf(err, "unable to read webapp bundle: %v", id)
}
- return errors.Wrapf(err, "unable to read webapp bundle: %v", id)
}
err = ioutil.WriteFile(fmt.Sprintf("%s/%s_bundle.js", env.webappPath, id), webappBundle, 0644)