kopia lustrzana https://github.com/c9/core
Revert "Revert "Vfs fix extend""
rodzic
1b6f180b9e
commit
a84c97c755
|
@ -35,8 +35,6 @@ module.exports = function(options) {
|
|||
var devel = options.standalone && !options.local || options.mode === "devel" || options.mode == "onlinedev" || options.dev;
|
||||
|
||||
var localExtendFiles = options.localExtend || options.standalone;
|
||||
// allow extend code access only to C9-deveoped plugins
|
||||
var extendToken = options.extendToken || "token";
|
||||
|
||||
var plugins = [
|
||||
// C9
|
||||
|
@ -412,7 +410,6 @@ module.exports = function(options) {
|
|||
"plugins/c9.ide.language.go/go",
|
||||
{
|
||||
packagePath: "plugins/c9.ide.language.jsonalyzer/jsonalyzer",
|
||||
extendToken: extendToken,
|
||||
workspaceDir: workspaceDir,
|
||||
homeDir: options.home,
|
||||
bashBin: options.bashBin,
|
||||
|
@ -787,7 +784,6 @@ module.exports = function(options) {
|
|||
},
|
||||
{
|
||||
packagePath: "plugins/c9.ide.pubsub/pubsub-client",
|
||||
extendToken: extendToken
|
||||
},
|
||||
{
|
||||
packagePath: "plugins/c9.ide.collab/notifications/bubble",
|
||||
|
@ -868,7 +864,6 @@ module.exports = function(options) {
|
|||
plugins.push(
|
||||
{
|
||||
packagePath: "plugins/c9.ide.collab/connect",
|
||||
extendToken: extendToken,
|
||||
enable: collab,
|
||||
debug: debug,
|
||||
localServerFile: localExtendFiles,
|
||||
|
|
10
package.json
10
package.json
|
@ -65,9 +65,9 @@
|
|||
"c9.ide.language.javascript.eslint": "#4de5457db1",
|
||||
"c9.ide.language.javascript.tern": "#b55d0069bb",
|
||||
"c9.ide.language.javascript.infer": "#18acb93a3a",
|
||||
"c9.ide.language.jsonalyzer": "#724bf6919d",
|
||||
"c9.ide.language.jsonalyzer": "#ccc7bfdd92",
|
||||
"c9.ide.language.codeintel": "#253ae15f5e",
|
||||
"c9.ide.collab": "#b05e428616",
|
||||
"c9.ide.collab": "#60db5fb28d",
|
||||
"c9.ide.local": "#10eb45842a",
|
||||
"c9.ide.find": "#e33fbaed2f",
|
||||
"c9.ide.find.infiles": "#c0a13737ef",
|
||||
|
@ -90,17 +90,17 @@
|
|||
"c9.ide.help.support": "#932fbb3743",
|
||||
"c9.ide.imgeditor": "#612e75ef4f",
|
||||
"c9.ide.immediate": "#19758abe08",
|
||||
"c9.ide.installer": "#462c535ff0",
|
||||
"c9.ide.installer": "#a397e56fcc",
|
||||
"c9.ide.language.python": "#330b80e3b2",
|
||||
"c9.ide.language.go": "#6ce1c7a7ef",
|
||||
"c9.ide.mount": "#4c39359b87",
|
||||
"c9.ide.navigate": "#113b38a061",
|
||||
"c9.ide.navigate": "#ce2d16f517",
|
||||
"c9.ide.newresource": "#981a408a7b",
|
||||
"c9.ide.openfiles": "#2ae85a9e33",
|
||||
"c9.ide.preview": "#5f5fff0185",
|
||||
"c9.ide.preview.browser": "#897177be7f",
|
||||
"c9.ide.preview.markdown": "#c3174d86e0",
|
||||
"c9.ide.pubsub": "#b19163ae34",
|
||||
"c9.ide.pubsub": "#a6403d76bb",
|
||||
"c9.ide.readonly": "#719881e192",
|
||||
"c9.ide.recentfiles": "#7c099abf40",
|
||||
"c9.ide.remote": "#301d2ab519",
|
||||
|
|
|
@ -92,9 +92,9 @@ define(function(require, exports, module) {
|
|||
delete extraPackages[config.packagePath];
|
||||
}
|
||||
});
|
||||
Object.keys(extraPackages).forEach(function(extraConfig) {
|
||||
Object.keys(extraPackages).forEach(function(packagePath) {
|
||||
console.warn("[c9.ide.loader] Package "
|
||||
+ extraConfig.packagePath + " should be installed, according "
|
||||
+ packagePath + " should be installed, according "
|
||||
+ "to the database, but was not found on the filesystem. "
|
||||
+ "Try reinstalling it.");
|
||||
});
|
||||
|
|
|
@ -91,11 +91,13 @@ apf.codebox = function(struct, tagName) {
|
|||
var checkInitial = function() {
|
||||
var value = ace.getValue();
|
||||
if (value && ace.renderer.initialMessageNode) {
|
||||
ace.renderer.off("afterRender", checkInitial);
|
||||
dom.removeCssClass(ace.container, "ace_initialMsg");
|
||||
ace.renderer.scroller.removeChild(ace.renderer.initialMessageNode);
|
||||
ace.renderer.initialMessageNode = null;
|
||||
}
|
||||
else if (!value && !ace.renderer.initialMessageNode) {
|
||||
ace.renderer.on("afterRender", checkInitial);
|
||||
dom.addCssClass(ace.container, "ace_initialMsg");
|
||||
var el = document.createElement("div");
|
||||
el.className = "tb_textboxInitialMsg";
|
||||
|
@ -103,7 +105,6 @@ apf.codebox = function(struct, tagName) {
|
|||
ace.renderer.initialMessageNode = el;
|
||||
ace.renderer.scroller.appendChild(ace.renderer.initialMessageNode);
|
||||
}
|
||||
|
||||
};
|
||||
ace.on("input", checkInitial);
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ define(function (require, exports, module) {
|
|||
if (loaded) return false;
|
||||
loaded = true;
|
||||
|
||||
if (c9.readonly) return false;
|
||||
|
||||
ext.loadRemotePlugin("log", {
|
||||
code: require("text!./log-service.js"),
|
||||
redefine: true
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
define(function(require, exports, module) {
|
||||
"use strict";
|
||||
|
||||
main.consumes = ["Plugin", "ext", "c9", "vfs", "metrics"];
|
||||
main.consumes = ["Plugin", "ext", "c9", "vfs"];
|
||||
main.provides = ["vfs.ping"];
|
||||
return main;
|
||||
|
||||
|
@ -9,7 +9,6 @@ define(function(require, exports, module) {
|
|||
var Plugin = imports.Plugin;
|
||||
var c9 = imports.c9;
|
||||
var ext = imports.ext;
|
||||
var metrics = imports.metrics;
|
||||
|
||||
/***** Initialization *****/
|
||||
|
||||
|
@ -17,15 +16,18 @@ define(function(require, exports, module) {
|
|||
var api;
|
||||
|
||||
var loaded = false;
|
||||
function load(){
|
||||
if (loaded) return;
|
||||
function load(oldVfs) {
|
||||
if (loaded && !oldVfs) return;
|
||||
loaded = true;
|
||||
|
||||
|
||||
ext.loadRemotePlugin("ping", {
|
||||
code: require("text!./ping-service.js"),
|
||||
redefine: true
|
||||
file: oldVfs ? undefined : "c9.vfs.client/ping-service.js",
|
||||
code: oldVfs ? require("text!./ping-service.js") : undefined
|
||||
}, function(err, remote) {
|
||||
if (err)
|
||||
if (!remote && !oldVfs)
|
||||
return load(true);
|
||||
|
||||
if (!remote)
|
||||
return console.error(err);
|
||||
|
||||
api = remote;
|
||||
|
|
|
@ -56,7 +56,6 @@ define(function(require, exports, module) {
|
|||
projectDir: vfsOptions.projectDir,
|
||||
extendDirectory: options.extendDirectory,
|
||||
extendOptions: projectOptions.extendOptions,
|
||||
extendToken: "not_needed",
|
||||
collab: options.collab,
|
||||
vfsOptions: vfsOptions,
|
||||
public: true
|
||||
|
|
|
@ -24,7 +24,6 @@ function Vfs(vfs, master, options) {
|
|||
this.public = options.public || false;
|
||||
this.vfsOptions = options.vfsOptions || {};
|
||||
this.pid = this.vfsOptions.pid;
|
||||
var extendToken = options.extendToken;
|
||||
|
||||
this.homeDir = options.homeDir;
|
||||
this.workspaceDir = options.projectDir;
|
||||
|
@ -36,14 +35,12 @@ function Vfs(vfs, master, options) {
|
|||
blocked: this.readonly,
|
||||
extendDirectory: options.extendDirectory,
|
||||
extendOptions: options.extendOptions,
|
||||
extendToken: extendToken
|
||||
});
|
||||
this.vfsWorkspace = wrapVfs(vfs, {
|
||||
root: this.workspaceDir,
|
||||
readonly: this.readonly,
|
||||
extendDirectory: options.extendDirectory,
|
||||
extendOptions: options.extendOptions,
|
||||
extendToken: extendToken
|
||||
});
|
||||
|
||||
var vfsProxy = proxyVfs(Object.keys(this.vfsHome), this.vfsHome, this.vfsWorkspace);
|
||||
|
|
|
@ -8,7 +8,6 @@ module.exports = function(vfs, options) {
|
|||
var methods = options.methods || Object.keys(vfs);
|
||||
var readonly = "readonly" in options ? options.readonly : false;
|
||||
var blocked = !!options.blocked;
|
||||
var extendToken = options.extendToken;
|
||||
|
||||
var roMethods = {
|
||||
resolve: 1,
|
||||
|
@ -74,18 +73,26 @@ module.exports = function(vfs, options) {
|
|||
options[key] = extendOptions[key];
|
||||
}
|
||||
|
||||
if (options.code || options.stream) {
|
||||
if (readonly && (!extendToken || extendToken !== options.extendToken))
|
||||
return callback(new error.Forbidden("VFS extend: " + name + " with options 'stream' or 'code' not authorized in read only mode"));
|
||||
else
|
||||
return vfs.extend(name, options, callback);
|
||||
if (readonly) {
|
||||
var whitelist = {
|
||||
"c9.ide.collab/server/collab-server.js": true,
|
||||
"c9.ide.pubsub/pubsub-service.js": true,
|
||||
"c9.vfs.client/ping-service.js": true,
|
||||
};
|
||||
if (!options.file || !whitelist[options.file])
|
||||
return callback(new error.Forbidden("VFS extend: " + name + " is not authorized in read only mode"));
|
||||
}
|
||||
|
||||
if (!options.file)
|
||||
return callback(new error.Forbidden("Option 'file' is missing"));
|
||||
|
||||
if (typeof options.file != "string")
|
||||
return callback(new error.Forbidden("Invalid option 'file'"));
|
||||
|
||||
// localfs extend checks for file, then code, then stream
|
||||
if (!options.file) {
|
||||
if (options.code || options.stream)
|
||||
return vfs.extend(name, options, callback);
|
||||
|
||||
return callback(new error.Forbidden("Option 'file' is missing"));
|
||||
}
|
||||
|
||||
if (typeof options.file != "string")
|
||||
return callback(new error.Forbidden("Invalid option 'file'"));
|
||||
|
||||
if (extendDirectory) {
|
||||
var file = options.file = path.normalize(path.join(extendDirectory, options.file));
|
||||
|
|
|
@ -255,7 +255,7 @@ function plugin(options, imports, register) {
|
|||
};
|
||||
api.updatConfig = api.updatConfig || function(opts, params) {
|
||||
var id = params.token;
|
||||
opts.accessToken = opts.extendToken = id || "token";
|
||||
opts.accessToken = id || "token";
|
||||
var user = opts.extendOptions.user;
|
||||
user.id = id || -1;
|
||||
user.name = id ? "user" + id : "johndoe";
|
||||
|
|
Ładowanie…
Reference in New Issue