mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-18 02:19:57 +00:00
keepalive and timeout
This commit is contained in:
parent
1dc6a627fd
commit
2a9d5816fc
@ -30,7 +30,7 @@
|
|||||||
"native-process-working-directory": "^1.0.2",
|
"native-process-working-directory": "^1.0.2",
|
||||||
"npm": "6",
|
"npm": "6",
|
||||||
"rxjs": "^7.5.7",
|
"rxjs": "^7.5.7",
|
||||||
"russh": "^0.0.1-alpha.15",
|
"russh": "0.0.3",
|
||||||
"source-map-support": "^0.5.20",
|
"source-map-support": "^0.5.20",
|
||||||
"v8-compile-cache": "^2.3.0",
|
"v8-compile-cache": "^2.3.0",
|
||||||
"yargs": "^17.7.2"
|
"yargs": "^17.7.2"
|
||||||
|
@ -1494,15 +1494,27 @@ glasstron@0.1.1:
|
|||||||
node-addon-api "^4.0.0"
|
node-addon-api "^4.0.0"
|
||||||
x11 "^2.3.0"
|
x11 "^2.3.0"
|
||||||
|
|
||||||
"glob@>=3.1.4, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6":
|
glob@^10.2.2, glob@^10.3.10:
|
||||||
version "7.1.6"
|
version "10.4.5"
|
||||||
resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz"
|
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
|
||||||
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
|
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
|
||||||
|
dependencies:
|
||||||
|
foreground-child "^3.1.0"
|
||||||
|
jackspeak "^3.1.2"
|
||||||
|
minimatch "^9.0.4"
|
||||||
|
minipass "^7.1.2"
|
||||||
|
package-json-from-dist "^1.0.0"
|
||||||
|
path-scurry "^1.11.1"
|
||||||
|
|
||||||
|
glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
|
||||||
|
version "7.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||||
|
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
fs.realpath "^1.0.0"
|
fs.realpath "^1.0.0"
|
||||||
inflight "^1.0.4"
|
inflight "^1.0.4"
|
||||||
inherits "2"
|
inherits "2"
|
||||||
minimatch "^3.0.4"
|
minimatch "^3.1.1"
|
||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
@ -1925,10 +1937,10 @@ isstream@~0.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz"
|
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz"
|
||||||
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
||||||
|
|
||||||
jackspeak@^2.3.5:
|
jackspeak@^3.1.2:
|
||||||
version "2.3.6"
|
version "3.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8"
|
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
|
||||||
integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
|
integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@isaacs/cliui" "^8.0.2"
|
"@isaacs/cliui" "^8.0.2"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@ -2280,13 +2292,18 @@ lowercase-keys@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
|
resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
|
||||||
integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
|
integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
|
||||||
|
|
||||||
lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0":
|
lru-cache@^10.0.1:
|
||||||
version "10.0.2"
|
version "10.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.2.tgz#34504678cc3266b09b8dfd6fab4e1515258271b7"
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.2.tgz#34504678cc3266b09b8dfd6fab4e1515258271b7"
|
||||||
integrity sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==
|
integrity sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==
|
||||||
dependencies:
|
dependencies:
|
||||||
semver "^7.3.5"
|
semver "^7.3.5"
|
||||||
|
|
||||||
|
lru-cache@^10.2.0:
|
||||||
|
version "10.4.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
|
||||||
|
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
|
||||||
|
|
||||||
lru-cache@^4.0.1:
|
lru-cache@^4.0.1:
|
||||||
version "4.1.5"
|
version "4.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
|
||||||
@ -2406,10 +2423,17 @@ minimatch@^3.0.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^1.1.7"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
minimatch@^9.0.1:
|
minimatch@^3.1.1:
|
||||||
version "9.0.3"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||||
integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
|
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||||
|
dependencies:
|
||||||
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
|
minimatch@^9.0.4:
|
||||||
|
version "9.0.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
|
||||||
|
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^2.0.1"
|
brace-expansion "^2.0.1"
|
||||||
|
|
||||||
@ -2482,6 +2506,11 @@ minipass@^5.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
|
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
|
||||||
integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
|
integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
|
||||||
|
|
||||||
|
minipass@^7.1.2:
|
||||||
|
version "7.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||||
|
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||||
|
|
||||||
minizlib@^1.3.3:
|
minizlib@^1.3.3:
|
||||||
version "1.3.3"
|
version "1.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
|
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
|
||||||
@ -3096,6 +3125,11 @@ p-try@^2.0.0:
|
|||||||
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
||||||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
||||||
|
|
||||||
|
package-json-from-dist@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00"
|
||||||
|
integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==
|
||||||
|
|
||||||
package-json@^4.0.0:
|
package-json@^4.0.0:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
|
resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
|
||||||
@ -3208,12 +3242,12 @@ path-parse@^1.0.6:
|
|||||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||||
|
|
||||||
path-scurry@^1.10.1:
|
path-scurry@^1.11.1:
|
||||||
version "1.10.1"
|
version "1.11.1"
|
||||||
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698"
|
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
|
||||||
integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
|
integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
|
||||||
dependencies:
|
dependencies:
|
||||||
lru-cache "^9.1.1 || ^10.0.0"
|
lru-cache "^10.2.0"
|
||||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||||
|
|
||||||
path-type@^2.0.0:
|
path-type@^2.0.0:
|
||||||
@ -3602,10 +3636,10 @@ run-queue@^1.0.0, run-queue@^1.0.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
aproba "^1.1.1"
|
aproba "^1.1.1"
|
||||||
|
|
||||||
russh@^0.0.1-alpha.15:
|
russh@0.0.3:
|
||||||
version "0.0.1-alpha.15"
|
version "0.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/russh/-/russh-0.0.1-alpha.15.tgz#d592469618418204d81235ad95a973144c5ad199"
|
resolved "https://registry.yarnpkg.com/russh/-/russh-0.0.3.tgz#bcb53d2efbe2b216857171bc5ca2131001ddfa46"
|
||||||
integrity sha512-jwk1q2RTg0qB/B0ZZkzNNbIglz0wWL5G2b1VjDdtcjjYoIE+TmrURs7XKvdSaaOPxqm+LmBIT70vagxvw/0XlQ==
|
integrity sha512-iTW4M5W856zYjbjQYjlDFaSFSQ6pLBy+zsCYFwhivYuj8U5mZ7kF7TeGOUat9t4l25HVxAS36ivCt5l79p9lcQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@napi-rs/cli" "^2.18.3"
|
"@napi-rs/cli" "^2.18.3"
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ import { ConfigService, FileProvidersService, NotificationsService, PromptModalC
|
|||||||
import { Socket } from 'net'
|
import { Socket } from 'net'
|
||||||
import { Subject, Observable } from 'rxjs'
|
import { Subject, Observable } from 'rxjs'
|
||||||
import { HostKeyPromptModalComponent } from '../components/hostKeyPromptModal.component'
|
import { HostKeyPromptModalComponent } from '../components/hostKeyPromptModal.component'
|
||||||
// import { HTTPProxyStream, SocksProxyStream } from '../services/ssh.service'
|
|
||||||
import { PasswordStorageService } from '../services/passwordStorage.service'
|
import { PasswordStorageService } from '../services/passwordStorage.service'
|
||||||
import { SSHKnownHostsService } from '../services/sshKnownHosts.service'
|
import { SSHKnownHostsService } from '../services/sshKnownHosts.service'
|
||||||
import { SFTPSession } from './sftp'
|
import { SFTPSession } from './sftp'
|
||||||
@ -222,8 +221,6 @@ export class SSHSession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async start (): Promise<void> {
|
async start (): Promise<void> {
|
||||||
// const log = (s: any) => this.emitServiceMessage(s)
|
|
||||||
|
|
||||||
await this.init()
|
await this.init()
|
||||||
|
|
||||||
const algorithms = {}
|
const algorithms = {}
|
||||||
@ -231,8 +228,6 @@ export class SSHSession {
|
|||||||
algorithms[key] = this.profile.options.algorithms![key].filter(x => supportedAlgorithms[key].includes(x))
|
algorithms[key] = this.profile.options.algorithms![key].filter(x => supportedAlgorithms[key].includes(x))
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo migrate connection opts
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/init-declarations
|
// eslint-disable-next-line @typescript-eslint/init-declarations
|
||||||
let transport: russh.SshTransport
|
let transport: russh.SshTransport
|
||||||
if (this.profile.options.proxyCommand) {
|
if (this.profile.options.proxyCommand) {
|
||||||
@ -240,16 +235,6 @@ export class SSHSession {
|
|||||||
|
|
||||||
const argv = shellQuote.parse(this.profile.options.proxyCommand)
|
const argv = shellQuote.parse(this.profile.options.proxyCommand)
|
||||||
transport = await russh.SshTransport.newCommand(argv[0], argv.slice(1))
|
transport = await russh.SshTransport.newCommand(argv[0], argv.slice(1))
|
||||||
// TODO stderr service messages
|
|
||||||
// this.proxyCommandStream.destroyed$.subscribe(err => {
|
|
||||||
// if (err) {
|
|
||||||
// this.emitServiceMessage(colors.bgRed.black(' X ') + ` ${err.message}`)
|
|
||||||
// this.destroy()
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
// this.proxyCommandStream.message$.subscribe(message => {
|
|
||||||
// this.emitServiceMessage(colors.bgBlue.black(' Proxy ') + ' ' + message.trim())
|
|
||||||
// })
|
|
||||||
} else if (this.jumpChannel) {
|
} else if (this.jumpChannel) {
|
||||||
transport = await russh.SshTransport.newSshChannel(await this.jumpChannel.take())
|
transport = await russh.SshTransport.newSshChannel(await this.jumpChannel.take())
|
||||||
this.jumpChannel = null
|
this.jumpChannel = null
|
||||||
@ -289,6 +274,9 @@ export class SSHSession {
|
|||||||
mac: this.profile.options.algorithms?.[SSHAlgorithmType.HMAC]?.filter(x => supportedAlgorithms[SSHAlgorithmType.HMAC].includes(x)),
|
mac: this.profile.options.algorithms?.[SSHAlgorithmType.HMAC]?.filter(x => supportedAlgorithms[SSHAlgorithmType.HMAC].includes(x)),
|
||||||
key: this.profile.options.algorithms?.[SSHAlgorithmType.HOSTKEY]?.filter(x => supportedAlgorithms[SSHAlgorithmType.HOSTKEY].includes(x)),
|
key: this.profile.options.algorithms?.[SSHAlgorithmType.HOSTKEY]?.filter(x => supportedAlgorithms[SSHAlgorithmType.HOSTKEY].includes(x)),
|
||||||
},
|
},
|
||||||
|
keepaliveIntervalSeconds: Math.round((this.profile.options.keepaliveInterval ?? 15000) / 1000),
|
||||||
|
keepaliveCountMax: this.profile.options.keepaliveCountMax,
|
||||||
|
connectionTimeoutSeconds: this.profile.options.readyTimeout ? Math.round(this.profile.options.readyTimeout / 1000) : null,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -343,17 +331,6 @@ export class SSHSession {
|
|||||||
this.passwordStorage.savePassword(this.profile, this.savedPassword)
|
this.passwordStorage.savePassword(this.profile, this.savedPassword)
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
// ssh.connect({
|
|
||||||
// keepaliveInterval: this.profile.options.keepaliveInterval ?? 15000,
|
|
||||||
// keepaliveCountMax: this.profile.options.keepaliveCountMax,
|
|
||||||
// readyTimeout: this.profile.options.readyTimeout,
|
|
||||||
// })
|
|
||||||
} catch (e) {
|
|
||||||
this.notifications.error(e.message)
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const fw of this.profile.options.forwardedPorts ?? []) {
|
for (const fw of this.profile.options.forwardedPorts ?? []) {
|
||||||
this.addPortForward(Object.assign(new ForwardedPort(), fw))
|
this.addPortForward(Object.assign(new ForwardedPort(), fw))
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user