Fix spice+agent and none console types not supported.

This commit is contained in:
grossmj
2022-06-18 18:53:36 +02:00
parent 7e43dc77cb
commit 9efd99dccb
4 changed files with 74 additions and 65 deletions

View File

@ -33,20 +33,24 @@ export class ConsoleDeviceActionBrowserComponent {
this.node.console_host = this.server.host;
}
if (
this.node.console_type === 'telnet' ||
this.node.console_type === 'vnc' ||
this.node.console_type === 'spice'
) {
try {
try {
if (this.node.console_type === 'telnet') {
location.assign(
`gns3+${this.node.console_type}://${this.node.console_host}:${this.node.console}?name=${this.node.name}&project_id=${this.node.project_id}&node_id=${this.node.node_id}`
`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}`
);
} catch (e) {
this.toasterService.error(e);
} 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.startsWith('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 are: telnet, vnc, spice and spice+agent.');
}
} else {
this.toasterService.error('Supported console types: telnet, vnc, spice.');
} catch (e) {
this.toasterService.error(e);
}
}
}

View File

@ -29,7 +29,7 @@ export class ConsoleDeviceActionComponent implements OnInit {
let consoleCommand = this.settingsService.getConsoleSettings()
? this.settingsService.getConsoleSettings()
: this.nodeService.getDefaultCommand();
const startedNodes = this.nodes.filter((node) => node.status === 'started');
const startedNodes = this.nodes.filter((node) => node.status === 'started' && node.console_type !== 'none');
if (startedNodes.length === 0) {
this.toasterService.error('Device needs to be started in order to console to it.');
@ -37,7 +37,7 @@ export class ConsoleDeviceActionComponent implements OnInit {
}
for (var node of this.nodes) {
if (node.status !== 'started') {
if (node.status !== 'started' && node.console_type !== 'none') {
continue;
}

View File

@ -232,12 +232,12 @@ export class LogConsoleComponent implements OnInit, AfterViewInit, OnDestroy {
location.assign(
`gns3+vnc://${node.console_host}:${node.console}?name=${node.name}&project_id=${node.project_id}&node_id=${node.node_id}`
);
} else if (node.console_type === 'spice') {
} else if (node.console_type.startsWith('spice')) {
location.assign(
`gns3+spice://${node.console_host}:${node.console}?name=${node.name}&project_id=${node.project_id}&node_id=${node.node_id}`
);
} else {
this.showCommand('Supported console types: telnet, vnc, spice.');
this.showCommand('Supported console types are: telnet, vnc, spice and spice+agent');
}
} else {
this.showCommand(`This node must be started before a console can be opened.`);

View File

@ -78,13 +78,15 @@ export class NodeConsoleService {
let nodesToStart = 'Please start the following nodes if you want to open consoles for them: ';
let nodesToStartCounter = 0;
nodes.forEach((n) => {
if (n.status === 'started') {
this.mapSettingsService.logConsoleSubject.next(true);
// this timeout is required due to xterm.js implementation
setTimeout(() => { this.openConsoleForNode(n); }, 500);
} else {
nodesToStartCounter++;
nodesToStart += n.name + ' '
if (n.console_type !== "none") {
if (n.status === 'started') {
this.mapSettingsService.logConsoleSubject.next(true);
// this timeout is required due to xterm.js implementation
setTimeout(() => { this.openConsoleForNode(n); }, 500);
} else {
nodesToStartCounter++;
nodesToStart += n.name + ' '
}
}
});
if (nodesToStartCounter > 0) {
@ -93,16 +95,19 @@ export class NodeConsoleService {
}
openConsolesForAllNodesInNewTabs(nodes: Node[]) {
let nodesToStart = 'Please start the following nodes if you want to open consoles for them: ';
let nodesToStart = 'Please start the following nodes if you want to open consoles in tabs for them: ';
let nodesToStartCounter = 0;
nodes.forEach((n) => {
if (n.status === 'started') {
let url = this.router.url.split('/');
let urlString = `/static/web-ui/${url[1]}/${url[2]}/${url[3]}/${url[4]}/nodes/${n.node_id}`;
window.open(urlString);
} else {
nodesToStartCounter++;
nodesToStart += n.name + ' '
// opening a console in tab is only supported for telnet type
if (n.console_type === "telnet") {
if (n.status === 'started') {
let url = this.router.url.split('/');
let urlString = `/static/web-ui/${url[1]}/${url[2]}/${url[3]}/${url[4]}/nodes/${n.node_id}`;
window.open(urlString);
} else {
nodesToStartCounter++;
nodesToStart += n.name + ' '
}
}
});
if (nodesToStartCounter > 0) {