mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
WIP: separate runtime and api components
This commit is contained in:
@@ -25,7 +25,7 @@ var permissions = require("./permissions");
|
||||
var theme = require("../theme");
|
||||
|
||||
var settings = null;
|
||||
var log = require("../../log");
|
||||
var log = null
|
||||
|
||||
|
||||
passport.use(strategies.bearerStrategy.BearerStrategy);
|
||||
@@ -36,11 +36,13 @@ var server = oauth2orize.createServer();
|
||||
|
||||
server.exchange(oauth2orize.exchange.password(strategies.passwordTokenExchange));
|
||||
|
||||
function init(_settings,storage) {
|
||||
settings = _settings;
|
||||
function init(runtime) {
|
||||
settings = runtime.settings;
|
||||
log = runtime.log;
|
||||
if (settings.adminAuth) {
|
||||
Users.init(settings.adminAuth);
|
||||
Tokens.init(settings.adminAuth,storage);
|
||||
Tokens.init(settings.adminAuth,runtime.storage);
|
||||
strategies.init(runtime);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -26,7 +26,7 @@ var Users = require("./users");
|
||||
var Clients = require("./clients");
|
||||
var permissions = require("./permissions");
|
||||
|
||||
var log = require("../../log");
|
||||
var log;
|
||||
|
||||
var bearerStrategy = function (accessToken, done) {
|
||||
// is this a valid token?
|
||||
@@ -124,6 +124,9 @@ AnonymousStrategy.prototype.authenticate = function(req) {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: function(runtime) {
|
||||
log = runtime.log;
|
||||
},
|
||||
bearerStrategy: bearerStrategy,
|
||||
clientPasswordStrategy: clientPasswordStrategy,
|
||||
passwordTokenExchange: passwordTokenExchange,
|
||||
|
@@ -14,10 +14,14 @@
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var log = require("../log");
|
||||
var api = require("../nodes");
|
||||
var log;
|
||||
var api;
|
||||
|
||||
module.exports = {
|
||||
init: function(runtime) {
|
||||
log = runtime.log;
|
||||
api = runtime.api;
|
||||
},
|
||||
get: function (req, res) {
|
||||
// TODO: It should verify the given node id is of the type specified -
|
||||
// but that would add a dependency from this module to the
|
||||
|
@@ -14,12 +14,16 @@
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var log = require("../log");
|
||||
|
||||
var redNodes = require("../nodes");
|
||||
var settings = require("../settings");
|
||||
var log;
|
||||
var redNodes;
|
||||
var settings;
|
||||
|
||||
module.exports = {
|
||||
init: function(runtime) {
|
||||
settings = runtime.settings;
|
||||
redNodes = runtime.api;
|
||||
log = runtime.log;
|
||||
},
|
||||
get: function(req,res) {
|
||||
log.audit({event: "flows.get"},req);
|
||||
res.json(redNodes.getFlows());
|
||||
|
149
red/api/index.js
149
red/api/index.js
@@ -29,12 +29,12 @@ var theme = require("./theme");
|
||||
var locales = require("./locales");
|
||||
var credentials = require("./credentials");
|
||||
|
||||
var log = require("../log");
|
||||
|
||||
var auth = require("./auth");
|
||||
var needsPermission = auth.needsPermission;
|
||||
|
||||
var settings = require("../settings");
|
||||
var log;
|
||||
var adminApp;
|
||||
var nodeApp;
|
||||
|
||||
var errorHandler = function(err,req,res,next) {
|
||||
if (err.message === "request entity too large") {
|
||||
@@ -46,71 +46,92 @@ var errorHandler = function(err,req,res,next) {
|
||||
res.status(400).json({error:"unexpected_error", message:err.toString()});
|
||||
};
|
||||
|
||||
function init(adminApp,storage) {
|
||||
function init(runtime) {
|
||||
var settings = runtime.settings;
|
||||
log = runtime.log;
|
||||
if (settings.httpNodeRoot !== false) {
|
||||
nodeApp = express();
|
||||
}
|
||||
if (settings.httpAdminRoot !== false) {
|
||||
adminApp = express();
|
||||
auth.init(runtime);
|
||||
credentials.init(runtime);
|
||||
flows.init(runtime);
|
||||
info.init(runtime);
|
||||
library.init(adminApp,runtime);
|
||||
locales.init(runtime);
|
||||
nodes.init(runtime);
|
||||
|
||||
auth.init(settings,storage);
|
||||
// Editor
|
||||
if (!settings.disableEditor) {
|
||||
ui.init(settings);
|
||||
var editorApp = express();
|
||||
editorApp.get("/",ui.ensureSlash,ui.editor);
|
||||
editorApp.get("/icons/:icon",ui.icon);
|
||||
if (settings.editorTheme) {
|
||||
editorApp.use("/theme",theme.init(settings));
|
||||
// Editor
|
||||
if (!settings.disableEditor) {
|
||||
ui.init(runtime);
|
||||
var editorApp = express();
|
||||
editorApp.get("/",ui.ensureSlash,ui.editor);
|
||||
editorApp.get("/icons/:icon",ui.icon);
|
||||
if (settings.editorTheme) {
|
||||
editorApp.use("/theme",theme.init(runtime));
|
||||
}
|
||||
editorApp.use("/",ui.editorResources);
|
||||
adminApp.use(editorApp);
|
||||
}
|
||||
editorApp.use("/",ui.editorResources);
|
||||
adminApp.use(editorApp);
|
||||
var maxApiRequestSize = settings.apiMaxLength || '1mb';
|
||||
adminApp.use(bodyParser.json({limit:maxApiRequestSize}));
|
||||
adminApp.use(bodyParser.urlencoded({limit:maxApiRequestSize,extended:true}));
|
||||
|
||||
adminApp.get("/auth/login",auth.login);
|
||||
|
||||
if (settings.adminAuth) {
|
||||
//TODO: all passport references ought to be in ./auth
|
||||
adminApp.use(passport.initialize());
|
||||
adminApp.post("/auth/token",
|
||||
auth.ensureClientSecret,
|
||||
auth.authenticateClient,
|
||||
auth.getToken,
|
||||
auth.errorHandler
|
||||
);
|
||||
adminApp.post("/auth/revoke",needsPermission(""),auth.revoke);
|
||||
}
|
||||
|
||||
// Flows
|
||||
adminApp.get("/flows",needsPermission("flows.read"),flows.get);
|
||||
adminApp.post("/flows",needsPermission("flows.write"),flows.post);
|
||||
|
||||
// Nodes
|
||||
adminApp.get("/nodes",needsPermission("nodes.read"),nodes.getAll);
|
||||
adminApp.post("/nodes",needsPermission("nodes.write"),nodes.post);
|
||||
|
||||
adminApp.get("/nodes/:mod",needsPermission("nodes.read"),nodes.getModule);
|
||||
adminApp.put("/nodes/:mod",needsPermission("nodes.write"),nodes.putModule);
|
||||
adminApp.delete("/nodes/:mod",needsPermission("nodes.write"),nodes.delete);
|
||||
|
||||
adminApp.get("/nodes/:mod/:set",needsPermission("nodes.read"),nodes.getSet);
|
||||
adminApp.put("/nodes/:mod/:set",needsPermission("nodes.write"),nodes.putSet);
|
||||
|
||||
adminApp.get('/credentials/:type/:id', needsPermission("credentials.read"),credentials.get);
|
||||
|
||||
adminApp.get(/locales\/(.+)\/?$/,locales.get);
|
||||
|
||||
// Library
|
||||
adminApp.post(new RegExp("/library/flows\/(.*)"),needsPermission("library.write"),library.post);
|
||||
adminApp.get("/library/flows",needsPermission("library.read"),library.getAll);
|
||||
adminApp.get(new RegExp("/library/flows\/(.*)"),needsPermission("library.read"),library.get);
|
||||
|
||||
// Settings
|
||||
adminApp.get("/settings",needsPermission("settings.read"),info.settings);
|
||||
|
||||
// Error Handler
|
||||
adminApp.use(errorHandler);
|
||||
}
|
||||
var maxApiRequestSize = settings.apiMaxLength || '1mb';
|
||||
adminApp.use(bodyParser.json({limit:maxApiRequestSize}));
|
||||
adminApp.use(bodyParser.urlencoded({limit:maxApiRequestSize,extended:true}));
|
||||
|
||||
adminApp.get("/auth/login",auth.login);
|
||||
|
||||
if (settings.adminAuth) {
|
||||
//TODO: all passport references ought to be in ./auth
|
||||
adminApp.use(passport.initialize());
|
||||
adminApp.post("/auth/token",
|
||||
auth.ensureClientSecret,
|
||||
auth.authenticateClient,
|
||||
auth.getToken,
|
||||
auth.errorHandler
|
||||
);
|
||||
adminApp.post("/auth/revoke",needsPermission(""),auth.revoke);
|
||||
}
|
||||
|
||||
// Flows
|
||||
adminApp.get("/flows",needsPermission("flows.read"),flows.get);
|
||||
adminApp.post("/flows",needsPermission("flows.write"),flows.post);
|
||||
|
||||
// Nodes
|
||||
adminApp.get("/nodes",needsPermission("nodes.read"),nodes.getAll);
|
||||
adminApp.post("/nodes",needsPermission("nodes.write"),nodes.post);
|
||||
|
||||
adminApp.get("/nodes/:mod",needsPermission("nodes.read"),nodes.getModule);
|
||||
adminApp.put("/nodes/:mod",needsPermission("nodes.write"),nodes.putModule);
|
||||
adminApp.delete("/nodes/:mod",needsPermission("nodes.write"),nodes.delete);
|
||||
|
||||
adminApp.get("/nodes/:mod/:set",needsPermission("nodes.read"),nodes.getSet);
|
||||
adminApp.put("/nodes/:mod/:set",needsPermission("nodes.write"),nodes.putSet);
|
||||
|
||||
adminApp.get('/credentials/:type/:id', needsPermission("credentials.read"),credentials.get);
|
||||
|
||||
adminApp.get(/locales\/(.+)\/?$/,locales.get);
|
||||
|
||||
// Library
|
||||
library.init(adminApp);
|
||||
adminApp.post(new RegExp("/library/flows\/(.*)"),needsPermission("library.write"),library.post);
|
||||
adminApp.get("/library/flows",needsPermission("library.read"),library.getAll);
|
||||
adminApp.get(new RegExp("/library/flows\/(.*)"),needsPermission("library.read"),library.get);
|
||||
|
||||
// Settings
|
||||
adminApp.get("/settings",needsPermission("settings.read"),info.settings);
|
||||
|
||||
// Error Handler
|
||||
adminApp.use(errorHandler);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: init
|
||||
init: init,
|
||||
library: {
|
||||
register: library.register
|
||||
},
|
||||
auth: {
|
||||
needsPermission: auth.needsPermission
|
||||
},
|
||||
adminApp: function() { return adminApp; },
|
||||
nodeApp: function() { return nodeApp; }
|
||||
};
|
||||
|
@@ -13,28 +13,30 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
var settings = require('../settings');
|
||||
var theme = require("./theme");
|
||||
|
||||
var util = require('util');
|
||||
var settings;
|
||||
|
||||
module.exports = {
|
||||
init: function(runtime) {
|
||||
settings = runtime.settings;
|
||||
},
|
||||
settings: function(req,res) {
|
||||
var safeSettings = {
|
||||
httpNodeRoot: settings.httpNodeRoot,
|
||||
version: settings.version,
|
||||
user: req.user
|
||||
}
|
||||
|
||||
|
||||
var themeSettings = theme.settings();
|
||||
if (themeSettings) {
|
||||
safeSettings.editorTheme = themeSettings;
|
||||
}
|
||||
|
||||
|
||||
if (util.isArray(settings.paletteCategories)) {
|
||||
safeSettings.paletteCategories = settings.paletteCategories;
|
||||
}
|
||||
|
||||
|
||||
res.json(safeSettings);
|
||||
}
|
||||
}
|
||||
|
@@ -15,9 +15,8 @@
|
||||
**/
|
||||
|
||||
var redApp = null;
|
||||
var storage = require("../storage");
|
||||
var log = require("../log");
|
||||
|
||||
var storage;
|
||||
var log;
|
||||
var needsPermission = require("./auth").needsPermission;
|
||||
|
||||
function createLibrary(type) {
|
||||
@@ -70,8 +69,10 @@ function createLibrary(type) {
|
||||
}
|
||||
}
|
||||
module.exports = {
|
||||
init: function(app) {
|
||||
init: function(app,runtime) {
|
||||
redApp = app;
|
||||
log = runtime.log;
|
||||
storage = runtime.storage;
|
||||
},
|
||||
register: createLibrary,
|
||||
|
||||
@@ -90,7 +91,7 @@ module.exports = {
|
||||
}).otherwise(function(err) {
|
||||
if (err) {
|
||||
log.warn(log._("api.library.error-load-flow",{path:req.params[0],message:err.toString()}));
|
||||
if (err.code === 'forbidden') {
|
||||
if (err.code === 'forbidden') {
|
||||
log.audit({event: "library.get",type:"flow",path:req.params[0],error:"forbidden"},req);
|
||||
res.status(403).end();
|
||||
return;
|
||||
|
@@ -13,9 +13,11 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
var i18n = require("../i18n");
|
||||
|
||||
var i18n;
|
||||
module.exports = {
|
||||
init: function(runtime) {
|
||||
i18n = runtime.i18n;
|
||||
},
|
||||
get: function(req,res) {
|
||||
var namespace = req.params[0];
|
||||
namespace = namespace.replace(/\.json$/,"");
|
||||
|
@@ -13,16 +13,22 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
var redNodes = require("../nodes");
|
||||
var comms = require("../comms");
|
||||
var log = require("../log");
|
||||
var i18n = require("../i18n");
|
||||
|
||||
var when = require("when");
|
||||
|
||||
var settings = require("../settings");
|
||||
var redNodes;
|
||||
var comms;
|
||||
var log;
|
||||
var i18n;
|
||||
var settings;
|
||||
|
||||
module.exports = {
|
||||
init: function(runtime) {
|
||||
redNodes = runtime.api;
|
||||
comms = runtime.comms;
|
||||
log = runtime.log;
|
||||
i18n = runtime.i18n;
|
||||
settings = runtime.settings;
|
||||
},
|
||||
getAll: function(req,res) {
|
||||
if (req.get("accept") == "application/json") {
|
||||
log.audit({event: "nodes.list.get"},req);
|
||||
|
@@ -53,7 +53,8 @@ function serveFile(app,baseUrl,file) {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: function(settings) {
|
||||
init: function(runtime) {
|
||||
var settings = runtime.settings;
|
||||
var i;
|
||||
var url;
|
||||
themeContext = clone(defaultContext);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Copyright 2013, 2014 IBM Corp.
|
||||
* Copyright 2013, 2015 IBM Corp.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -21,26 +21,26 @@ var theme = require("./theme");
|
||||
|
||||
var Mustache = require("mustache");
|
||||
|
||||
var events = require("../events");
|
||||
var settings;
|
||||
|
||||
var icon_paths = [path.resolve(__dirname + '/../../public/icons')];
|
||||
var iconCache = {};
|
||||
//TODO: create a default icon
|
||||
var defaultIcon = path.resolve(__dirname + '/../../public/icons/arrow-in.png');
|
||||
|
||||
events.on("node-icon-dir",function(dir) {
|
||||
icon_paths.push(path.resolve(dir));
|
||||
});
|
||||
|
||||
var templateDir = path.resolve(__dirname+"/../../editor/templates");
|
||||
var editorTemplate;
|
||||
|
||||
function nodeIconDir(dir) {
|
||||
icon_paths.push(path.resolve(dir));
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: function(_settings) {
|
||||
settings = _settings;
|
||||
init: function(runtime) {
|
||||
editorTemplate = fs.readFileSync(path.join(templateDir,"index.mst"),"utf8");
|
||||
Mustache.parse(editorTemplate);
|
||||
// TODO: this allows init to be called multiple times without
|
||||
// registering multiple instances of the listener.
|
||||
// It isn't.... ideal.
|
||||
runtime.events.removeListener("node-icon-dir",nodeIconDir);
|
||||
runtime.events.on("node-icon-dir",nodeIconDir);
|
||||
},
|
||||
|
||||
ensureSlash: function(req,res,next) {
|
||||
|
80
red/red.js
80
red/red.js
@@ -14,22 +14,18 @@
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var server = require("./server");
|
||||
var nodes = require("./nodes");
|
||||
var library = require("./api/library");
|
||||
var comms = require("./comms");
|
||||
var log = require("./log");
|
||||
var util = require("./util");
|
||||
var i18n = require("./i18n");
|
||||
var fs = require("fs");
|
||||
var settings = require("./settings");
|
||||
var credentials = require("./nodes/credentials");
|
||||
var auth = require("./api/auth");
|
||||
var path = require('path');
|
||||
var events = require("events");
|
||||
|
||||
var runtime = require("./runtime");
|
||||
var api = require("./api");
|
||||
|
||||
process.env.NODE_RED_HOME = process.env.NODE_RED_HOME || path.resolve(__dirname+"/..");
|
||||
|
||||
var nodeApp = null;
|
||||
var adminApp = null;
|
||||
var server = null;
|
||||
|
||||
function checkBuild() {
|
||||
var editorFile = path.resolve(path.join(__dirname,"..","public","red","red.min.js"));
|
||||
try {
|
||||
@@ -43,40 +39,44 @@ function checkBuild() {
|
||||
|
||||
var RED = {
|
||||
init: function(httpServer,userSettings) {
|
||||
server = httpServer;
|
||||
|
||||
if (!userSettings.SKIP_BUILD_CHECK) {
|
||||
checkBuild();
|
||||
}
|
||||
userSettings.version = this.version();
|
||||
log.init(userSettings);
|
||||
settings.init(userSettings);
|
||||
server.init(httpServer,settings);
|
||||
return server.app;
|
||||
},
|
||||
start: server.start,
|
||||
stop: server.stop,
|
||||
nodes: nodes,
|
||||
library: { register: library.register },
|
||||
credentials: credentials,
|
||||
events: events,
|
||||
log: log,
|
||||
comms: comms,
|
||||
settings:settings,
|
||||
util: util,
|
||||
auth: {
|
||||
needsPermission: auth.needsPermission
|
||||
},
|
||||
version: function () {
|
||||
var p = require(path.join(process.env.NODE_RED_HOME,"package.json")).version;
|
||||
/* istanbul ignore else */
|
||||
if (fs.existsSync(path.join(process.env.NODE_RED_HOME,".git"))) {
|
||||
p += "-git";
|
||||
runtime.init(httpServer,userSettings);
|
||||
if (userSettings.httpAdminRoot !== false || userSettings.httpNodeRoot !== false) {
|
||||
api.init(runtime);
|
||||
adminApp = api.adminApp();
|
||||
nodeApp = api.nodeApp();
|
||||
}
|
||||
return p;
|
||||
|
||||
if (adminApp === null) {
|
||||
adminApp = {
|
||||
get:function(){},
|
||||
post: function(){},
|
||||
put: function(){},
|
||||
delete: function(){}
|
||||
}
|
||||
}
|
||||
return runtime.app;
|
||||
},
|
||||
get app() { console.log("Deprecated use of RED.app - use RED.httpAdmin instead"); return server.app },
|
||||
get httpAdmin() { return server.app },
|
||||
get httpNode() { return server.nodeApp },
|
||||
get server() { return server.server }
|
||||
start: runtime.start,
|
||||
stop: runtime.stop,
|
||||
nodes: runtime.api,
|
||||
events: runtime.events,
|
||||
log: runtime.log,
|
||||
comms: runtime.comms,
|
||||
settings:runtime.settings,
|
||||
util: runtime.util,
|
||||
version: runtime.version,
|
||||
library: api.library,
|
||||
auth: api.auth,
|
||||
|
||||
get app() { console.log("Deprecated use of RED.app - use RED.httpAdmin instead"); return runtime.app },
|
||||
get httpAdmin() { return adminApp },
|
||||
get httpNode() { return nodeApp },
|
||||
get server() { return server }
|
||||
};
|
||||
|
||||
module.exports = RED;
|
||||
|
@@ -37,9 +37,9 @@ function init(_server,_settings) {
|
||||
|
||||
|
||||
function start() {
|
||||
var Tokens = require("./api/auth/tokens");
|
||||
var Users = require("./api/auth/users");
|
||||
var Permissions = require("./api/auth/permissions");
|
||||
var Tokens = require("../api/auth/tokens");
|
||||
var Users = require("../api/auth/users");
|
||||
var Permissions = require("../api/auth/permissions");
|
||||
if (!settings.disableEditor) {
|
||||
Users.default().then(function(anonymousUser) {
|
||||
var webSocketKeepAliveTime = settings.webSocketKeepAliveTime || 15000;
|
@@ -24,11 +24,11 @@ var supportedLangs = [];
|
||||
|
||||
var resourceMap = {
|
||||
"runtime": {
|
||||
basedir: path.resolve(__dirname+"/../locales"),
|
||||
basedir: path.resolve(__dirname+"/../../locales"),
|
||||
file:"runtime.json"
|
||||
},
|
||||
"editor": {
|
||||
basedir: path.resolve(__dirname+"/../locales"),
|
||||
basedir: path.resolve(__dirname+"/../../locales"),
|
||||
file: "editor.json"
|
||||
}
|
||||
}
|
@@ -14,7 +14,6 @@
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var express = require('express');
|
||||
var when = require('when');
|
||||
|
||||
var redNodes = require("./nodes");
|
||||
@@ -22,23 +21,27 @@ var comms = require("./comms");
|
||||
var storage = require("./storage");
|
||||
var log = require("./log");
|
||||
var i18n = require("./i18n");
|
||||
|
||||
var app = null;
|
||||
var nodeApp = null;
|
||||
var server = null;
|
||||
var settings = null;
|
||||
var events = require("./events");
|
||||
var settings = require("./settings");
|
||||
var path = require('path');
|
||||
var fs = require("fs");
|
||||
|
||||
var runtimeMetricInterval = null;
|
||||
|
||||
function init(server,userSettings) {
|
||||
userSettings.version = version();
|
||||
log.init(userSettings);
|
||||
settings.init(userSettings);
|
||||
comms.init(server,settings);
|
||||
}
|
||||
|
||||
function init(_server,_settings) {
|
||||
server = _server;
|
||||
settings = _settings;
|
||||
|
||||
comms.init(_server,_settings);
|
||||
|
||||
nodeApp = express();
|
||||
app = express();
|
||||
function version() {
|
||||
var p = require(path.join(process.env.NODE_RED_HOME,"package.json")).version;
|
||||
/* istanbul ignore else */
|
||||
if (fs.existsSync(path.join(process.env.NODE_RED_HOME,".git"))) {
|
||||
p += "-git";
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
function start() {
|
||||
@@ -46,9 +49,6 @@ function start() {
|
||||
.then(function() { return storage.init(settings)})
|
||||
.then(function() { return settings.load(storage)})
|
||||
.then(function() {
|
||||
if (settings.httpAdminRoot !== false) {
|
||||
require("./api").init(app,storage);
|
||||
}
|
||||
|
||||
if (log.metric()) {
|
||||
runtimeMetricInterval = setInterval(function() {
|
||||
@@ -141,12 +141,19 @@ function stop() {
|
||||
comms.stop();
|
||||
}
|
||||
|
||||
var serverAPI = module.exports = {
|
||||
var runtime = module.exports = {
|
||||
init: init,
|
||||
start: start,
|
||||
stop: stop,
|
||||
|
||||
get app() { return app },
|
||||
get nodeApp() { return nodeApp },
|
||||
get server() { return server }
|
||||
version: version,
|
||||
|
||||
log: log,
|
||||
i18n: i18n,
|
||||
settings: settings,
|
||||
storage: storage,
|
||||
comms: comms,
|
||||
events: events,
|
||||
api: redNodes,
|
||||
util: require("./util")
|
||||
}
|
@@ -18,8 +18,6 @@ var when = require("when");
|
||||
|
||||
var log = require("../log");
|
||||
|
||||
var needsPermission = require("../api/auth").needsPermission;
|
||||
|
||||
var credentialCache = {};
|
||||
var storage = null;
|
||||
var credentialsDef = {};
|
@@ -36,9 +36,7 @@ events.on("node-locales-dir", function(info) {
|
||||
function init(_settings) {
|
||||
settings = _settings;
|
||||
localfilesystem.init(settings);
|
||||
|
||||
RED = require('../../red');
|
||||
|
||||
RED = require('../../../red');
|
||||
}
|
||||
|
||||
function load(defaultNodesDir,disableNodePathScan) {
|
@@ -22,7 +22,7 @@ var events = require("../../events");
|
||||
var log = require("../../log");
|
||||
|
||||
var settings;
|
||||
var defaultNodesDir = path.resolve(path.join(__dirname,"..","..","..","nodes"));
|
||||
var defaultNodesDir = path.resolve(path.join(__dirname,"..","..","..","..","nodes"));
|
||||
var disableNodePathScan = false;
|
||||
|
||||
function init(_settings,_defaultNodesDir,_disableNodePathScan) {
|
||||
@@ -133,7 +133,7 @@ function scanDirForNodesModules(dir,moduleName) {
|
||||
* @return a list of node modules: {dir,package}
|
||||
*/
|
||||
function scanTreeForNodesModules(moduleName) {
|
||||
var dir = __dirname+"/../../nodes";
|
||||
var dir = __dirname+"/../../../../nodes";
|
||||
var results = [];
|
||||
var userDir;
|
||||
|
@@ -256,7 +256,7 @@ function getFullNodeInfo(typeOrId) {
|
||||
var module = moduleConfigs[getModule(id)];
|
||||
if (module) {
|
||||
return module.nodes[getNode(id)];
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -292,7 +292,7 @@ function getModuleList() {
|
||||
//}
|
||||
//return list;
|
||||
return moduleConfigs;
|
||||
|
||||
|
||||
}
|
||||
|
||||
function getModuleInfo(module) {
|
||||
@@ -358,7 +358,7 @@ function getNodeConfig(id,lang) {
|
||||
if (config) {
|
||||
var result = config.config;
|
||||
result += loader.getNodeHelp(config,lang||"en-US")
|
||||
|
||||
|
||||
//if (config.script) {
|
||||
// result += '<script type="text/javascript">'+config.script+'</script>';
|
||||
//}
|
||||
@@ -490,9 +490,9 @@ var registry = module.exports = {
|
||||
addNodeSet: addNodeSet,
|
||||
enableNodeSet: enableNodeSet,
|
||||
disableNodeSet: disableNodeSet,
|
||||
|
||||
|
||||
removeModule: removeModule,
|
||||
|
||||
|
||||
getNodeInfo: getNodeInfo,
|
||||
getFullNodeInfo: getFullNodeInfo,
|
||||
getNodeList: getNodeList,
|
Reference in New Issue
Block a user