From eac98a6d4d7c805297aae39875773a7795861147 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 19 Jan 2018 13:12:22 +0000 Subject: [PATCH] Prevent ssh-keygen prompting for passphrase when blank --- .../localfilesystem/projects/ssh/keygen.js | 70 +++++++------------ 1 file changed, 26 insertions(+), 44 deletions(-) diff --git a/red/runtime/storage/localfilesystem/projects/ssh/keygen.js b/red/runtime/storage/localfilesystem/projects/ssh/keygen.js index ba97e7636..6a7574640 100644 --- a/red/runtime/storage/localfilesystem/projects/ssh/keygen.js +++ b/red/runtime/storage/localfilesystem/projects/ssh/keygen.js @@ -22,49 +22,32 @@ var log; function runSshKeygenCommand(args,cwd,env) { return new Promise(function(resolve, reject) { - console.log("Spawning command",args); - try { - var child = child_process.spawn(sshkeygenCommand, args, {cwd: cwd, detached: true, env: env}); - var stdout = ""; - var stderr = ""; + var child = child_process.spawn(sshkeygenCommand, args, {cwd: cwd, detached: true, env: env}); + var stdout = ""; + var stderr = ""; - var watchdog = setTimeout(function() { - console.log("TIMEOUT"); - console.log("stdout",stdout); - console.log("stderr",stderr); - child.kill(); - },6000); - - child.stdout.on('data', function(data) { - stdout += data; - }); - child.stderr.on('data', function(data) { - stderr += data; - }); - child.on('close', function(code, signal) { - clearTimeout(watchdog); - console.log("sshKeyGen closed",code); - console.log("sshKeyGen",stdout); - console.log("sshKeyGen",stderr); - if (code !== 0) { - var err = new Error(stderr); - err.stdout = stdout; - err.stderr = stderr; - if (/passphrase is too short/.test(stderr)) { - err.code = "key_passphrase_too_short"; - } else if(/Key must at least be 1024 bits/.test(stderr)) { - err.code = "key_length_too_short"; - } - reject(err); + child.stdout.on('data', function(data) { + stdout += data; + }); + child.stderr.on('data', function(data) { + stderr += data; + }); + child.on('close', function(code, signal) { + if (code !== 0) { + var err = new Error(stderr); + err.stdout = stdout; + err.stderr = stderr; + if (/passphrase is too short/.test(stderr)) { + err.code = "key_passphrase_too_short"; + } else if(/Key must at least be 1024 bits/.test(stderr)) { + err.code = "key_length_too_short"; } - else { - resolve(stdout); - } - }); - } catch(err) { - console.log("Threw error",err); - reject(err); - } + reject(err); + } + else { + resolve(stdout); + } + }); }); } @@ -83,9 +66,8 @@ function generateKey(options) { if (options.comment) { args.push('-C', options.comment); } - if (options.password) { - args.push('-N', options.password); - } + args.push('-N', options.password||''); + return runSshKeygenCommand(args,__dirname); }