Ver código fonte

only enable agent forwarding on windows when pageant is running (fixes #496)

Eugene Pankov 7 anos atrás
pai
commit
384744ec44

+ 1 - 0
.gitignore

@@ -5,6 +5,7 @@ node_modules
 
 build/files.wxs
 dist
+*/dist
 
 *.xcworkspacedata
 *.xcuserstate

+ 2 - 1
terminus-ssh/package.json

@@ -36,7 +36,8 @@
   },
   "optionalDependencies": {
     "wincredmgr": "^2.0.0",
-    "xkeychain": "^0.0.6"
+    "xkeychain": "^0.0.6",
+    "windows-process-tree": "^0.2.3"
   },
   "dependencies": {
     "ssh2": "^0.5.5"

+ 15 - 2
terminus-ssh/src/services/ssh.service.ts

@@ -11,6 +11,12 @@ import { PromptModalComponent } from '../components/promptModal.component'
 import { PasswordStorageService } from './passwordStorage.service'
 const { SSH2Stream } = require('ssh2-streams')
 
+let windowsProcessTree
+try {
+    windowsProcessTree = require('windows-process-tree/build/Release/windows_process_tree.node')
+} catch (e) {
+} // tslint:disable-line
+
 @Injectable()
 export class SSHService {
     private logger: Logger
@@ -67,7 +73,7 @@ export class SSHService {
         let ssh = new Client()
         let connected = false
         let savedPassword: string = null
-        await new Promise((resolve, reject) => {
+        await new Promise(async (resolve, reject) => {
             ssh.on('ready', () => {
                 connected = true
                 if (savedPassword) {
@@ -99,7 +105,14 @@ export class SSHService {
 
             let agent: string = null
             if (this.hostApp.platform === Platform.Windows) {
-                agent = 'pageant'
+                let pageantRunning = new Promise<boolean>(resolve => {
+                    windowsProcessTree.getProcessList(list => {
+                        resolve(list.some(x => x.name === 'pageant.exe'))
+                    }, 0)
+                })
+                if (await pageantRunning) {
+                    agent = 'pageant'
+                }
             } else {
                 agent = process.env.SSH_AUTH_SOCK
             }

+ 1 - 0
terminus-ssh/webpack.config.js

@@ -48,6 +48,7 @@ module.exports = {
     'wincredmgr',
     'path',
     'ngx-toastr',
+    'windows-process-tree/build/Release/windows_process_tree.node',
     /^rxjs/,
     /^@angular/,
     /^@ng-bootstrap/,

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 157
terminus-ssh/yarn.lock


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff