mirror of
https://github.com/Eugeny/tabby.git
synced 2024-12-24 11:02:47 +03:00
fixes
This commit is contained in:
parent
552991271f
commit
2af1e6e6ac
@ -6,6 +6,7 @@ import { ToastrModule } from 'ngx-toastr'
|
||||
|
||||
import TerminusCorePlugin, { HostAppService, ToolbarButtonProvider, TabRecoveryProvider, ConfigProvider, HotkeysService, HotkeyProvider, TabContextMenuItemProvider, CLIHandler, ConfigService } from 'terminus-core'
|
||||
import TerminusTerminalModule from 'terminus-terminal'
|
||||
import TerminusElectronPlugin from 'terminus-electron'
|
||||
import { SettingsTabProvider } from 'terminus-settings'
|
||||
|
||||
import { TerminalTabComponent } from './components/terminalTab.component'
|
||||
@ -47,6 +48,7 @@ import { AutoOpenTabCLIHandler, OpenPathCLIHandler, TerminalCLIHandler } from '.
|
||||
NgbModule,
|
||||
ToastrModule,
|
||||
TerminusCorePlugin,
|
||||
TerminusElectronPlugin,
|
||||
TerminusTerminalModule,
|
||||
],
|
||||
providers: [
|
||||
|
@ -19,6 +19,7 @@
|
||||
width: 190px;
|
||||
flex: none;
|
||||
overflow-y: auto;
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
|
||||
> .tab-content {
|
||||
|
@ -320,16 +320,23 @@ export class SSHSession extends BaseSession {
|
||||
|
||||
this.remainingAuthMethods = [{ type: 'none' }]
|
||||
if (!this.connection.auth || this.connection.auth === 'publicKey') {
|
||||
for (const pk of this.connection.privateKeys ?? []) {
|
||||
try {
|
||||
this.remainingAuthMethods.push({
|
||||
type: 'publickey',
|
||||
name: pk,
|
||||
contents: await this.fileProviders.retrieveFile(pk),
|
||||
})
|
||||
} catch (error) {
|
||||
this.emitServiceMessage(colors.bgYellow.yellow.black(' ! ') + ` Could not load private key ${pk}: ${error}`)
|
||||
if (this.connection.privateKeys?.length) {
|
||||
for (const pk of this.connection.privateKeys) {
|
||||
try {
|
||||
this.remainingAuthMethods.push({
|
||||
type: 'publickey',
|
||||
name: pk,
|
||||
contents: await this.fileProviders.retrieveFile(pk),
|
||||
})
|
||||
} catch (error) {
|
||||
this.emitServiceMessage(colors.bgYellow.yellow.black(' ! ') + ` Could not load private key ${pk}: ${error}`)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.remainingAuthMethods.push({
|
||||
type: 'publickey',
|
||||
name: 'auto',
|
||||
})
|
||||
}
|
||||
}
|
||||
if (!this.connection.auth || this.connection.auth === 'agent') {
|
||||
@ -717,7 +724,7 @@ export class SSHSession extends BaseSession {
|
||||
const userKeyPath = path.join(process.env.HOME!, '.ssh', 'id_rsa')
|
||||
if (await fs.exists(userKeyPath)) {
|
||||
this.emitServiceMessage('Using user\'s default private key')
|
||||
privateKeyContents = fs.readFile(userKeyPath, { encoding: null })
|
||||
privateKeyContents = await fs.readFile(userKeyPath, { encoding: null })
|
||||
}
|
||||
}
|
||||
|
||||
@ -740,11 +747,17 @@ export class SSHSession extends BaseSession {
|
||||
|
||||
async parsePrivateKey (privateKey: string): Promise<any> {
|
||||
const keyHash = crypto.createHash('sha512').update(privateKey).digest('hex')
|
||||
let passphrase: string|null = await this.passwordStorage.loadPrivateKeyPassword(keyHash)
|
||||
let triedSavedPassphrase = false
|
||||
let passphrase: string|null = null
|
||||
while (true) {
|
||||
try {
|
||||
return sshpk.parsePrivateKey(privateKey, 'auto', { passphrase })
|
||||
} catch (e) {
|
||||
if (!triedSavedPassphrase) {
|
||||
passphrase = await this.passwordStorage.loadPrivateKeyPassword(keyHash)
|
||||
triedSavedPassphrase = true
|
||||
continue
|
||||
}
|
||||
if (e instanceof sshpk.KeyEncryptedError || e instanceof sshpk.KeyParseError) {
|
||||
await this.passwordStorage.deletePrivateKeyPassword(keyHash)
|
||||
|
||||
|
@ -64,6 +64,7 @@ export class EditConnectionModalComponent {
|
||||
)
|
||||
|
||||
async ngOnInit () {
|
||||
this.connection.algorithms = this.connection.algorithms ?? {}
|
||||
for (const k of Object.values(SSHAlgorithmType)) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
if (!this.connection.algorithms[k]) {
|
||||
@ -76,7 +77,6 @@ export class EditConnectionModalComponent {
|
||||
}
|
||||
}
|
||||
|
||||
this.connection.algorithms = this.connection.algorithms ?? {}
|
||||
this.connection.scripts = this.connection.scripts ?? []
|
||||
this.connection.auth = this.connection.auth ?? null
|
||||
this.connection.privateKeys ??= []
|
||||
|
Loading…
Reference in New Issue
Block a user