mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Rearrange ssh logic to bring it together
This commit is contained in:
@@ -41,7 +41,7 @@ module.exports = {
|
||||
// List all SSH keys
|
||||
app.get("/", needsPermission("settings.read"), function(req,res) {
|
||||
var username = getUsername(req.user);
|
||||
runtime.storage.sshkeys.listSSHKeys(username)
|
||||
runtime.storage.projects.ssh.listSSHKeys(username)
|
||||
.then(function(list) {
|
||||
res.json({
|
||||
keys: list
|
||||
@@ -61,7 +61,7 @@ module.exports = {
|
||||
app.get("/:id", needsPermission("settings.read"), function(req,res) {
|
||||
var username = getUsername(req.user);
|
||||
// console.log('username:', username);
|
||||
runtime.storage.sshkeys.getSSHKey(username, req.params.id)
|
||||
runtime.storage.projects.ssh.getSSHKey(username, req.params.id)
|
||||
.then(function(data) {
|
||||
if (data) {
|
||||
res.json({
|
||||
@@ -85,7 +85,7 @@ module.exports = {
|
||||
var username = getUsername(req.user);
|
||||
// console.log('req.body:', req.body);
|
||||
if ( req.body && req.body.name && /^[a-zA-Z0-9\-_]+$/.test(req.body.name)) {
|
||||
runtime.storage.sshkeys.generateSSHKey(username, req.body)
|
||||
runtime.storage.projects.ssh.generateSSHKey(username, req.body)
|
||||
.then(function(name) {
|
||||
// console.log('generate key --- success name:', name);
|
||||
res.json({
|
||||
@@ -108,7 +108,7 @@ module.exports = {
|
||||
// Delete a SSH key
|
||||
app.delete("/:id", needsPermission("settings.write"), function(req,res) {
|
||||
var username = getUsername(req.user);
|
||||
runtime.storage.sshkeys.deleteSSHKey(username, req.params.id)
|
||||
runtime.storage.projects.ssh.deleteSSHKey(username, req.params.id)
|
||||
.then(function() {
|
||||
res.status(204).end();
|
||||
})
|
||||
|
@@ -24,7 +24,6 @@ var library = require("./library");
|
||||
var sessions = require("./sessions");
|
||||
var runtimeSettings = require("./settings");
|
||||
var projects = require("./projects");
|
||||
var sshkeys = require("./sshkeys");
|
||||
|
||||
var initialFlowLoadComplete = false;
|
||||
var settings;
|
||||
@@ -61,7 +60,6 @@ var localfilesystem = {
|
||||
runtimeSettings.init(settings);
|
||||
promises.push(library.init(settings));
|
||||
promises.push(projects.init(settings, runtime));
|
||||
promises.push(sshkeys.init(settings, runtime));
|
||||
|
||||
var packageFile = fspath.join(settings.userDir,"package.json");
|
||||
var packagePromise = when.resolve();
|
||||
@@ -96,8 +94,7 @@ var localfilesystem = {
|
||||
saveSessions: sessions.saveSessions,
|
||||
getLibraryEntry: library.getLibraryEntry,
|
||||
saveLibraryEntry: library.saveLibraryEntry,
|
||||
projects: projects,
|
||||
sshkeys: sshkeys
|
||||
projects: projects
|
||||
};
|
||||
|
||||
module.exports = localfilesystem;
|
||||
|
@@ -23,7 +23,7 @@ var os = require('os');
|
||||
var gitTools = require("./git");
|
||||
var util = require("../util");
|
||||
var defaultFileSet = require("./defaultFileSet");
|
||||
var sshKeys = require("../sshkeys");
|
||||
var sshKeys = require("./ssh");
|
||||
var settings;
|
||||
var runtime;
|
||||
var log;
|
||||
|
@@ -23,7 +23,7 @@ var crypto = require('crypto');
|
||||
var storageSettings = require("../settings");
|
||||
var util = require("../util");
|
||||
var gitTools = require("./git");
|
||||
var sshTools = require("./sshKeygen");
|
||||
var sshTools = require("./ssh");
|
||||
|
||||
var Projects = require("./Project");
|
||||
|
||||
@@ -85,45 +85,47 @@ function init(_settings, _runtime) {
|
||||
var setupProjectsPromise;
|
||||
|
||||
if (projectsEnabled) {
|
||||
return gitTools.init(_settings, _runtime).then(function(gitVersion) {
|
||||
if (!gitVersion) {
|
||||
projectLogMessages.push(log._("storage.localfilesystem.projects.git-not-found"))
|
||||
projectsEnabled = false;
|
||||
} else {
|
||||
Projects.init(settings,runtime);
|
||||
sshTools.init(settings,runtime);
|
||||
projectsDir = fspath.join(settings.userDir,"projects");
|
||||
if (!settings.readOnly) {
|
||||
return fs.ensureDir(projectsDir)
|
||||
//TODO: this is accessing settings from storage directly as settings
|
||||
// has not yet been initialised. That isn't ideal - can this be deferred?
|
||||
.then(storageSettings.getSettings)
|
||||
.then(function(globalSettings) {
|
||||
var saveSettings = false;
|
||||
if (!globalSettings.projects) {
|
||||
globalSettings.projects = {
|
||||
projects: {}
|
||||
}
|
||||
saveSettings = true;
|
||||
} else {
|
||||
activeProject = globalSettings.projects.activeProject;
|
||||
}
|
||||
if (settings.flowFile) {
|
||||
if (globalSettings.projects.projects.hasOwnProperty(settings.flowFile)) {
|
||||
activeProject = settings.flowFile;
|
||||
globalSettings.projects.activeProject = settings.flowFile;
|
||||
return sshTools.init(settings,runtime).then(function() {
|
||||
gitTools.init(_settings, _runtime).then(function(gitVersion) {
|
||||
if (!gitVersion) {
|
||||
projectLogMessages.push(log._("storage.localfilesystem.projects.git-not-found"))
|
||||
projectsEnabled = false;
|
||||
} else {
|
||||
Projects.init(settings,runtime);
|
||||
sshTools.init(settings,runtime);
|
||||
projectsDir = fspath.join(settings.userDir,"projects");
|
||||
if (!settings.readOnly) {
|
||||
return fs.ensureDir(projectsDir)
|
||||
//TODO: this is accessing settings from storage directly as settings
|
||||
// has not yet been initialised. That isn't ideal - can this be deferred?
|
||||
.then(storageSettings.getSettings)
|
||||
.then(function(globalSettings) {
|
||||
var saveSettings = false;
|
||||
if (!globalSettings.projects) {
|
||||
globalSettings.projects = {
|
||||
projects: {}
|
||||
}
|
||||
saveSettings = true;
|
||||
} else {
|
||||
activeProject = globalSettings.projects.activeProject;
|
||||
}
|
||||
}
|
||||
if (!activeProject) {
|
||||
projectLogMessages.push(log._("storage.localfilesystem.no-active-project"))
|
||||
}
|
||||
if (saveSettings) {
|
||||
return storageSettings.saveSettings(globalSettings);
|
||||
}
|
||||
});
|
||||
if (settings.flowFile) {
|
||||
if (globalSettings.projects.projects.hasOwnProperty(settings.flowFile)) {
|
||||
activeProject = settings.flowFile;
|
||||
globalSettings.projects.activeProject = settings.flowFile;
|
||||
saveSettings = true;
|
||||
}
|
||||
}
|
||||
if (!activeProject) {
|
||||
projectLogMessages.push(log._("storage.localfilesystem.no-active-project"))
|
||||
}
|
||||
if (saveSettings) {
|
||||
return storageSettings.saveSettings(globalSettings);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
return Promise.resolve();
|
||||
@@ -552,6 +554,8 @@ module.exports = {
|
||||
getFlows: getFlows,
|
||||
saveFlows: saveFlows,
|
||||
getCredentials: getCredentials,
|
||||
saveCredentials: saveCredentials
|
||||
saveCredentials: saveCredentials,
|
||||
|
||||
ssh: sshTools
|
||||
|
||||
};
|
||||
|
@@ -17,7 +17,7 @@
|
||||
var fs = require('fs-extra');
|
||||
var when = require('when');
|
||||
var fspath = require("path");
|
||||
var sshTools = require("./projects/ssh");
|
||||
var keygen = require("./keygen");
|
||||
|
||||
var settings;
|
||||
var runtime;
|
||||
@@ -32,10 +32,6 @@ function init(_settings, _runtime) {
|
||||
sshkeyDir = fspath.join(settings.userDir, "projects", ".sshkeys");
|
||||
userSSHKeyDir = fspath.join(process.env.HOME || process.env.USERPROFILE || process.env.HOMEPATH, ".ssh");
|
||||
// console.log('sshkeys.init()');
|
||||
return createSSHKeyDirectory();
|
||||
}
|
||||
|
||||
function createSSHKeyDirectory() {
|
||||
return fs.ensureDir(sshkeyDir);
|
||||
}
|
||||
|
||||
@@ -176,7 +172,7 @@ function deleteSSHKeyFiles(username, name) {
|
||||
|
||||
function generateSSHKeyPair(name, privateKeyPath, comment, password, size) {
|
||||
log.trace("ssh-keygen["+[name,privateKeyPath,comment,size,"hasPassword?"+!!password].join(",")+"]");
|
||||
return sshTools.generateKey({location: privateKeyPath, comment: comment, password: password, size: size})
|
||||
return keygen.generateKey({location: privateKeyPath, comment: comment, password: password, size: size})
|
||||
.then(function(stdout) {
|
||||
return name;
|
||||
})
|
Reference in New Issue
Block a user