diff --git a/src/app/components/project-map/context-menu/actions/console-device-action-browser/console-device-action-browser.component.ts b/src/app/components/project-map/context-menu/actions/console-device-action-browser/console-device-action-browser.component.ts
index 51a7f435..62bd7420 100644
--- a/src/app/components/project-map/context-menu/actions/console-device-action-browser/console-device-action-browser.component.ts
+++ b/src/app/components/project-map/context-menu/actions/console-device-action-browser/console-device-action-browser.component.ts
@@ -1,23 +1,43 @@
import { Component, Input } from '@angular/core';
import { Node } from '../../../../../cartography/models/node';
import { ToasterService } from '../../../../../services/toaster.service';
+import { NodeService } from '../../../../../services/node.service';
+import { Server } from '../../../../../models/server';
+
@Component({
selector: 'app-console-device-action-browser',
templateUrl: './console-device-action-browser.component.html'
})
export class ConsoleDeviceActionBrowserComponent {
+ @Input() server: Server;
@Input() node: Node;
constructor(
- private toasterService: ToasterService
+ private toasterService: ToasterService,
+ private nodeService: NodeService
) {}
openConsole() {
- if(this.node.status !== "started") {
+ this.nodeService.getNode(this.server, this.node).subscribe((node: Node) => {
+ this.node = node;
+ this.startConsole();
+ });
+ }
+
+ startConsole() {
+ if (this.node.status !== "started") {
this.toasterService.error("This node must be started before a console can be opened");
} else {
- location.assign(`telnet://${this.node.console_host}:${this.node.console}/`);
+ if (this.node.console_type === "telnet") {
+ location.assign(`gns3+telnet://${this.node.console_host}:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`);
+ } else if (this.node.console_type === "vnc") {
+ location.assign(`gns3+vnc://${this.node.console_host}:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`);
+ } else if(this.node.console_type === "spice") {
+ location.assign(`gns3+spice://${this.node.console_host}:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`);
+ } else {
+ this.toasterService.error("Supported console types: telnet, vnc, spice.");
+ }
}
}
}
diff --git a/src/app/components/project-map/context-menu/context-menu.component.html b/src/app/components/project-map/context-menu/context-menu.component.html
index bac3811b..24916844 100644
--- a/src/app/components/project-map/context-menu/context-menu.component.html
+++ b/src/app/components/project-map/context-menu/context-menu.component.html
@@ -21,7 +21,8 @@
[nodes]="nodes"
>