Custom console for particular node

This commit is contained in:
Piotr Pekala 2019-09-20 07:01:28 -07:00
parent 78767399fc
commit 380a45883e
2 changed files with 25 additions and 4 deletions

View File

@ -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.");
}
}
}
}

View File

@ -21,7 +21,8 @@
[nodes]="nodes"
></app-console-device-action>
<app-console-device-action-browser
*ngIf="!projectService.isReadOnly(project) && nodes.length===1 && !isElectronApp && nodes[0].console_type!=='none'"
*ngIf="!projectService.isReadOnly(project) && nodes.length===1 && !isElectronApp"
[server]="server"
[node]="nodes[0]"
></app-console-device-action-browser>
<app-change-symbol-action