Sfoglia il codice sorgente

ssh: respect keyboard-interactive prompt echo setting - fixes #5045

Eugene Pankov 4 anni fa
parent
commit
bb47a5d76f

+ 1 - 1
tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.pug

@@ -2,7 +2,7 @@
     strong Keyboard-interactive auth
     .ml-2 {{prompt.name}}
 
-.prompt-text {{prompt.prompts[step]}}
+.prompt-text {{prompt.prompts[step].prompt}}
 
 input.form-control.mt-2(
     #input,

+ 1 - 1
tabby-ssh/src/components/keyboardInteractiveAuthPanel.component.ts

@@ -15,7 +15,7 @@ export class KeyboardInteractiveAuthComponent {
     @ViewChild('input') input: ElementRef
 
     isPassword (): boolean {
-        return this.prompt.prompts[this.step].toLowerCase().includes('password')
+        return this.prompt.prompts[this.step].prompt.toLowerCase().includes('password') || !this.prompt.prompts[this.step].echo
     }
 
     previous (): void {

+ 3 - 2
tabby-ssh/src/session/ssh.ts

@@ -11,6 +11,7 @@ import { ConfigService, FileProvidersService, HostAppService, NotificationsServi
 import { BaseSession } from 'tabby-terminal'
 import { Socket } from 'net'
 import { Client, ClientChannel, SFTPWrapper } from 'ssh2'
+import type { Prompt } from 'ssh2-streams'
 import { Subject, Observable } from 'rxjs'
 import { ProxyCommandStream, SocksProxyStream } from '../services/ssh.service'
 import { PasswordStorageService } from '../services/passwordStorage.service'
@@ -34,7 +35,7 @@ export class KeyboardInteractivePrompt {
     constructor (
         public name: string,
         public instruction: string,
-        public prompts: string[],
+        public prompts: Prompt[],
         private callback: (_: string[]) => void,
     ) { }
 
@@ -213,7 +214,7 @@ export class SSHSession extends BaseSession {
                 this.emitKeyboardInteractivePrompt(new KeyboardInteractivePrompt(
                     name,
                     instructions,
-                    prompts.map(x => x.prompt),
+                    prompts,
                     finish,
                 ))
             }))