From dda70d0d1682cabf9b45e4afc7b57790e13a7b72 Mon Sep 17 00:00:00 2001 From: "FANG.Ge" Date: Wed, 7 Feb 2024 21:17:06 +0800 Subject: [PATCH] Add support for ssh algorithms, compaitibale with old embeded devices --- package.json | 26 ++++++++++++++++++++++++++ src/backend/backend.ts | 1 + src/backend/mi2/mi2.ts | 7 +++++++ 3 files changed, 34 insertions(+) diff --git a/package.json b/package.json index 38fb36f5..6f2b3f71 100644 --- a/package.json +++ b/package.json @@ -288,6 +288,32 @@ "bootstrap": { "type": "string", "description": "Content will be executed on the SSH host before the debugger call." + }, + "algorithms": { + "type": "object", + "description": "This option allows you to explicitly override the default transport layer algorithms used for the connection.", + "properties": { + "cipher": { + "type": "array", + "description": "Ciphers." + }, + "compress": { + "type": "array", + "description": "Compression algorithms." + }, + "hmac": { + "type": "array", + "description": "(H)MAC algorithms." + }, + "kex": { + "type": "array", + "description": "Key exchange algorithms." + }, + "serverHostKey": { + "type": "array", + "description": "Server host key formats." + } + } } } } diff --git a/src/backend/backend.ts b/src/backend/backend.ts index f532f0ed..d750acc7 100644 --- a/src/backend/backend.ts +++ b/src/backend/backend.ts @@ -47,6 +47,7 @@ export interface SSHArguments { x11host: string; bootstrap: string; sourceFileMap: { [index: string]: string }; + algorithms: any; } export interface IBackend { diff --git a/src/backend/mi2/mi2.ts b/src/backend/mi2/mi2.ts index 007fd209..bc23e42e 100644 --- a/src/backend/mi2/mi2.ts +++ b/src/backend/mi2/mi2.ts @@ -135,6 +135,10 @@ export class MI2 extends EventEmitter implements IBackend { connectionArgs.password = args.password; } + if (args.algorithms) { + connectionArgs.algorithms = args.algorithms; + } + this.sshConn.on("ready", () => { this.log("stdout", "Running " + this.application + " over ssh..."); const execArgs: any = {}; @@ -744,6 +748,9 @@ export class MI2 extends EventEmitter implements IBackend { const result = await this.sendCommand(`stack-list-variables --thread ${thread} --frame ${frame} --simple-values`); const variables = result.result("variables"); const ret: Variable[] = []; + + this.log("stderr", "2333:" + JSON.stringify(variables)); + for (const element of variables) { const key = MINode.valueOf(element, "name"); const value = MINode.valueOf(element, "value");