diff options
author | Chris <ccbrown112@gmail.com> | 2018-01-15 11:21:06 -0600 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2018-01-15 09:21:06 -0800 |
commit | f5c8a71698d0a7a16c68be220e49fe64bfee7f5c (patch) | |
tree | 194b9cc79eceb1c91c44e39b9d797671c178fe0e /plugin/pluginenv/options.go | |
parent | 7e5ce976681e99be6b26d428935ba1106d530efa (diff) | |
download | chat-f5c8a71698d0a7a16c68be220e49fe64bfee7f5c.tar.gz chat-f5c8a71698d0a7a16c68be220e49fe64bfee7f5c.tar.bz2 chat-f5c8a71698d0a7a16c68be220e49fe64bfee7f5c.zip |
ABC-22: Plugin sandboxing for linux/amd64 (#8068)
* plugin sandboxing
* remove unused type
* better symlink handling, better remounting, better test, whitespace
fixes, and comment on the remounting
* fix test compile error
* big simplification for getting mount flags
* mask statfs flags to the ones we're interested in
Diffstat (limited to 'plugin/pluginenv/options.go')
-rw-r--r-- | plugin/pluginenv/options.go | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/plugin/pluginenv/options.go b/plugin/pluginenv/options.go index 35ecf1d7f..43cbdac68 100644 --- a/plugin/pluginenv/options.go +++ b/plugin/pluginenv/options.go @@ -4,11 +4,10 @@ package pluginenv import ( - "fmt" - "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/plugin" "github.com/mattermost/mattermost-server/plugin/rpcplugin" + "github.com/mattermost/mattermost-server/plugin/rpcplugin/sandbox" ) // APIProvider specifies a function that provides an API implementation to each plugin. @@ -40,14 +39,12 @@ func WebappPath(path string) Option { } } -// DefaultSupervisorProvider chooses a supervisor based on the plugin's manifest contents. E.g. if -// the manifest specifies a backend executable, it will be given an rpcplugin.Supervisor. +// DefaultSupervisorProvider chooses a supervisor based on the system and the plugin's manifest +// contents. E.g. if the manifest specifies a backend executable, it will be given an +// rpcplugin.Supervisor. func DefaultSupervisorProvider(bundle *model.BundleInfo) (plugin.Supervisor, error) { - if bundle.Manifest == nil { - return nil, fmt.Errorf("a manifest is required") - } - if bundle.Manifest.Backend == nil { - return nil, fmt.Errorf("invalid manifest: missing backend plugin") + if err := sandbox.CheckSupport(); err == nil { + return sandbox.SupervisorProvider(bundle) } return rpcplugin.SupervisorProvider(bundle) } |