1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-22 18:50:08 +03:00

F #4132: Support for RDP in alias interfaces (#4460)

This commit is contained in:
Sergio Betanzos 2020-03-31 17:43:51 +02:00 committed by GitHub
parent e0937d82fa
commit 4ec9d50424
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 10 deletions

View File

@ -897,16 +897,31 @@ define(function(require) {
// returns true if the RDP button should be enabled
function isRDPSupported(element) {
var rtn = false;
if(element.TEMPLATE && element.TEMPLATE.NIC){
if(!Array.isArray(element.TEMPLATE.NIC)){
element.TEMPLATE.NIC = [element.TEMPLATE.NIC];
if(element.TEMPLATE && element.TEMPLATE.NIC) {
var template = element.TEMPLATE;
rtn = hasRDP(template.NIC)
if (!rtn && template.NIC_ALIAS) {
rtn = hasRDP(template.NIC_ALIAS)
}
element.TEMPLATE.NIC.some(function(nic) {
rtn = nic.RDP && nic.RDP == "YES"
})
}
return rtn;
}
function hasRDP(nics) {
var activated = false;
nics = Array.isArray(nics) ? nics : [nics];
$.each(nics, function(_, nic) {
if (nic.RDP && String(nic.RDP).toLowerCase() === "yes") {
activated = true;
}
});
return activated;
}
return VM;
});

View File

@ -177,9 +177,19 @@ define(function(require) {
call: function() {
var vm = Sunstone.getElementRightInfo(TAB_ID);
if (vm && vm.NAME && vm.TEMPLATE && vm.TEMPLATE.NIC && Array.isArray(vm.TEMPLATE.NIC)) {
if (vm && vm.NAME && vm.TEMPLATE && vm.TEMPLATE.NIC) {
var name = vm.NAME;
var nic = vm.TEMPLATE.NIC.find(n => n.RDP === "YES");
var nics = vm.TEMPLATE.NIC;
nics = Array.isArray(nics) ? vm.TEMPLATE.NIC : [vm.TEMPLATE.NIC];
// append nic_alias in nics
if (vm.TEMPLATE.NIC_ALIAS) {
var alias = vm.TEMPLATE.NIC_ALIAS;
alias = Array.isArray(alias) ? alias : [alias];
nics = $.merge(alias, nics)
}
var nic = nics.find(n => n.RDP && String(n.RDP).toUpperCase() === "YES");
var ip = nic && nic.IP ? nic.IP : '';
var credentials = {};
@ -187,12 +197,12 @@ define(function(require) {
var context = vm.TEMPLATE.CONTEXT;
for (var prop in context) {
var propUpperCase = String(prop).toUpperCase();
(propUpperCase === "USERNAME" || propUpperCase === "PASSWORD")
(propUpperCase === "USERNAME" || propUpperCase === "PASSWORD")
&& (credentials[propUpperCase] = context[prop]);
}
}
nic && Rdp.downloadFile(ip, name, credentials);
nic && Rdp.downloadFile(ip, name, credentials);
} else {
Notifier.notifyError(Locale.tr("RDP file error"));
return false;