Merge remote-tracking branch 'origin/dev-1.10.0' into dev-1.10.0

This commit is contained in:
LukeGus
2025-12-18 02:18:15 -06:00

View File

@@ -316,7 +316,6 @@ wss.on("connection", async (ws: WebSocket, req) => {
let sshConn: Client | null = null; let sshConn: Client | null = null;
let sshStream: ClientChannel | null = null; let sshStream: ClientChannel | null = null;
let pingInterval: NodeJS.Timeout | null = null;
let keyboardInteractiveFinish: ((responses: string[]) => void) | null = null; let keyboardInteractiveFinish: ((responses: string[]) => void) | null = null;
let totpPromptSent = false; let totpPromptSent = false;
let isKeyboardInteractive = false; let isKeyboardInteractive = false;
@@ -802,8 +801,6 @@ wss.on("connection", async (ws: WebSocket, req) => {
); );
}); });
setupPingInterval();
if (initialPath && initialPath.trim() !== "") { if (initialPath && initialPath.trim() !== "") {
const cdCommand = `cd "${initialPath.replace(/"/g, '\\"')}" && pwd\n`; const cdCommand = `cd "${initialPath.replace(/"/g, '\\"')}" && pwd\n`;
stream.write(cdCommand); stream.write(cdCommand);
@@ -1279,11 +1276,6 @@ wss.on("connection", async (ws: WebSocket, req) => {
clearTimeout(timeoutId); clearTimeout(timeoutId);
} }
if (pingInterval) {
clearInterval(pingInterval);
pingInterval = null;
}
if (sshStream) { if (sshStream) {
try { try {
sshStream.end(); sshStream.end();
@@ -1320,24 +1312,12 @@ wss.on("connection", async (ws: WebSocket, req) => {
}, 100); }, 100);
} }
function setupPingInterval() { // Note: PTY-level keepalive (writing \x00 to the stream) was removed.
pingInterval = setInterval(() => { // It was causing ^@ characters to appear in terminals with echoctl enabled.
if (sshConn && sshStream) { // SSH-level keepalive is configured via connectConfig (keepaliveInterval,
try { // keepaliveCountMax, tcpKeepAlive), which handles connection health monitoring
sshStream.write("\x00"); // without producing visible output on the terminal.
} catch (e: unknown) { //
sshLogger.error( // See: https://github.com/Termix-SSH/Support/issues/232
"SSH keepalive failed: " + // See: https://github.com/Termix-SSH/Support/issues/309
(e instanceof Error ? e.message : "Unknown error"),
);
cleanupSSH();
}
} else if (!sshConn || !sshStream) {
if (pingInterval) {
clearInterval(pingInterval);
pingInterval = null;
}
}
}, 30000);
}
}); });