Revert "Revert "Vfs fix extend""

pull/295/head
Nikolai Onken 2016-04-25 17:37:54 +02:00
rodzic 1b6f180b9e
commit a84c97c755
10 zmienionych plików z 41 dodań i 38 usunięć

Wyświetl plik

@ -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,

Wyświetl plik

@ -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",

Wyświetl plik

@ -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.");
});

Wyświetl plik

@ -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);

Wyświetl plik

@ -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

Wyświetl plik

@ -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;

Wyświetl plik

@ -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

Wyświetl plik

@ -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);

Wyświetl plik

@ -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));

Wyświetl plik

@ -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";