diff --git a/ui/desktop/app/routes/scopes/scope/projects/sessions.js b/ui/desktop/app/routes/scopes/scope/projects/sessions.js index 272cf0672..2715a7aa3 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/sessions.js +++ b/ui/desktop/app/routes/scopes/scope/projects/sessions.js @@ -11,6 +11,7 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { // =services + @service ipc; @service session; // =attributes @@ -83,5 +84,10 @@ export default class ScopesScopeProjectsSessionsRoute extends Route { @notifySuccess('notifications.canceled-success') async cancelSession(session) { await session.cancelSession(); + try { + this.ipc.invoke('cancel', { session_id: session.id }); + } catch (e) { + //Ignore errors + } } } diff --git a/ui/desktop/app/routes/scopes/scope/projects/targets/target/sessions.js b/ui/desktop/app/routes/scopes/scope/projects/targets/target/sessions.js index 4f0281e2f..2a849f3b9 100644 --- a/ui/desktop/app/routes/scopes/scope/projects/targets/target/sessions.js +++ b/ui/desktop/app/routes/scopes/scope/projects/targets/target/sessions.js @@ -1,8 +1,13 @@ import Route from '@ember/routing/route'; import { action } from '@ember/object'; +import { inject as service } from '@ember/service'; import { notifySuccess, notifyError } from 'core/decorators/notify'; export default class ScopesScopeProjectsTargetsTargetSessionsRoute extends Route { + // =services + + @service ipc; + // =actions /** @@ -14,5 +19,10 @@ export default class ScopesScopeProjectsTargetsTargetSessionsRoute extends Route @notifySuccess('notifications.canceled-success') async cancelSession(session) { await session.cancelSession(); + try { + this.ipc.invoke('cancel', { session_id: session.id }); + } catch (e) { + //Ignore errors + } } } diff --git a/ui/desktop/electron-app/src/boundary-cli.js b/ui/desktop/electron-app/src/boundary-cli.js index 453a959df..eeb5050f8 100644 --- a/ui/desktop/electron-app/src/boundary-cli.js +++ b/ui/desktop/electron-app/src/boundary-cli.js @@ -53,6 +53,5 @@ module.exports = { ? `CLI Version: ${versionNumber}\nCLI Commit: ${gitRevision}` : `CLI Commit: ${gitRevision}`; return { gitRevision, versionNumber, formatted }; - return rawOutput; }, }; diff --git a/ui/desktop/electron-app/src/handlers.js b/ui/desktop/electron-app/src/handlers.js index 4e102212a..04343c5ae 100644 --- a/ui/desktop/electron-app/src/handlers.js +++ b/ui/desktop/electron-app/src/handlers.js @@ -2,7 +2,8 @@ const { shell } = require('electron'); const isDev = require('electron-is-dev'); const handle = require('./ipc-handler'); const boundaryCli = require('./boundary-cli'); -const origin = require('./origin.js'); +const origin = require('./origin'); +const spawnSession = require('./spawn-session'); /** * Returns the current runtime origin, which is used by the main thread to @@ -58,3 +59,10 @@ handle('cliExists', () => boundaryCli.exists()); handle('connect', ({ target_id, token, host_id }) => boundaryCli.connect(target_id, token, host_id) ); + +/** + * Cancel an established boundary session spawned process. + */ +handle('cancel', ({ session_id }) => { + spawnSession.cancelSession(session_id); +}); diff --git a/ui/desktop/electron-app/src/spawn-session.js b/ui/desktop/electron-app/src/spawn-session.js index 72292deeb..f632e4cea 100644 --- a/ui/desktop/electron-app/src/spawn-session.js +++ b/ui/desktop/electron-app/src/spawn-session.js @@ -5,7 +5,7 @@ const spawnedSessions = []; const purge = (process_id, index) => { process.kill(process_id); // Remove tracking after cancellation - delete spawnedSessions[index]; + spawnedSessions.splice(index, 1); }; module.exports = { @@ -15,7 +15,6 @@ module.exports = { * @param {object} params */ add: ({ childProcess, data }) => { - debugger; spawnedSessions.push({ data, process_id: childProcess.pid,