mirror of
https://github.com/Eugeny/tabby
synced 2024-12-14 07:12:50 +00:00
automatically recover ssh tabs (fixes #583)
This commit is contained in:
parent
d03430fb2e
commit
ce3610c2da
6 changed files with 29 additions and 10 deletions
|
@ -6,7 +6,7 @@ import { SettingsTabComponent } from './components/settingsTab.component'
|
|||
@Injectable()
|
||||
export class RecoveryProvider extends TabRecoveryProvider {
|
||||
async recover (recoveryToken: any): Promise<RecoveredTab> {
|
||||
if (recoveryToken.type === 'app:settings') {
|
||||
if (recoveryToken && recoveryToken.type === 'app:settings') {
|
||||
return { type: SettingsTabComponent }
|
||||
}
|
||||
return null
|
||||
|
|
|
@ -53,4 +53,11 @@ export class SSHTabComponent extends BaseTerminalTabComponent {
|
|||
this.session.resize(this.size.columns, this.size.rows)
|
||||
this.session.start()
|
||||
}
|
||||
|
||||
async getRecoveryToken (): Promise<any> {
|
||||
return {
|
||||
type: 'app:ssh-tab',
|
||||
connection: this.connection,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common'
|
|||
import { FormsModule } from '@angular/forms'
|
||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
|
||||
import { ToastrModule } from 'ngx-toastr'
|
||||
import TerminusCoreModule, { ToolbarButtonProvider, ConfigProvider } from 'terminus-core'
|
||||
import TerminusCoreModule, { ToolbarButtonProvider, ConfigProvider, TabRecoveryProvider } from 'terminus-core'
|
||||
import { SettingsTabProvider } from 'terminus-settings'
|
||||
|
||||
import { EditConnectionModalComponent } from './components/editConnectionModal.component'
|
||||
|
@ -15,6 +15,7 @@ import { SSHTabComponent } from './components/sshTab.component'
|
|||
import { ButtonProvider } from './buttonProvider'
|
||||
import { SSHConfigProvider } from './config'
|
||||
import { SSHSettingsTabProvider } from './settings'
|
||||
import { RecoveryProvider } from './recoveryProvider'
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -28,6 +29,7 @@ import { SSHSettingsTabProvider } from './settings'
|
|||
{ provide: ToolbarButtonProvider, useClass: ButtonProvider, multi: true },
|
||||
{ provide: ConfigProvider, useClass: SSHConfigProvider, multi: true },
|
||||
{ provide: SettingsTabProvider, useClass: SSHSettingsTabProvider, multi: true },
|
||||
{ provide: TabRecoveryProvider, useClass: RecoveryProvider, multi: true },
|
||||
],
|
||||
entryComponents: [
|
||||
EditConnectionModalComponent,
|
||||
|
|
17
terminus-ssh/src/recoveryProvider.ts
Normal file
17
terminus-ssh/src/recoveryProvider.ts
Normal file
|
@ -0,0 +1,17 @@
|
|||
import { Injectable } from '@angular/core'
|
||||
import { TabRecoveryProvider, RecoveredTab } from 'terminus-core'
|
||||
|
||||
import { SSHTabComponent } from './components/sshTab.component'
|
||||
|
||||
@Injectable()
|
||||
export class RecoveryProvider extends TabRecoveryProvider {
|
||||
async recover (recoveryToken: any): Promise<RecoveredTab> {
|
||||
if (recoveryToken && recoveryToken.type === 'app:ssh-tab') {
|
||||
return {
|
||||
type: SSHTabComponent,
|
||||
options: { connection: recoveryToken.connection },
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
|
@ -159,7 +159,6 @@ export class SSHService {
|
|||
keepaliveInterval: session.connection.keepaliveInterval,
|
||||
keepaliveCountMax: session.connection.keepaliveCountMax,
|
||||
readyTimeout: session.connection.readyTimeout,
|
||||
debug: (...x) => console.log(...x),
|
||||
hostVerifier: digest => {
|
||||
log('SHA256 fingerprint: ' + digest)
|
||||
return true
|
||||
|
|
|
@ -5,14 +5,8 @@ import { TerminalTabComponent } from './components/terminalTab.component'
|
|||
|
||||
@Injectable()
|
||||
export class RecoveryProvider extends TabRecoveryProvider {
|
||||
constructor (
|
||||
// private sessions: SessionsService,
|
||||
) {
|
||||
super()
|
||||
}
|
||||
|
||||
async recover (recoveryToken: any): Promise<RecoveredTab> {
|
||||
if (recoveryToken.type === 'app:terminal-tab') {
|
||||
if (recoveryToken && recoveryToken.type === 'app:terminal-tab') {
|
||||
return {
|
||||
type: TerminalTabComponent,
|
||||
options: { sessionOptions: recoveryToken.sessionOptions },
|
||||
|
|
Loading…
Reference in a new issue