mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
Bug 4132: RDP in fenced vnet mapping (#4242)
* add rdp * fix mapping networks * fix ip in button RDP vm info
This commit is contained in:
parent
520eca0801
commit
df7e2ea50b
@ -24,6 +24,7 @@ define(function(require) {
|
||||
var Vnc = require('utils/vnc');
|
||||
var Spice = require('utils/spice');
|
||||
var Rdp = require('utils/rdp');
|
||||
var mapips = require('./utils/mapips');
|
||||
|
||||
var TAB_ID = require('./tabId');
|
||||
var CREATE_DIALOG_ID = require('./form-panels/create/formPanelId');
|
||||
@ -177,21 +178,27 @@ define(function(require) {
|
||||
call: function() {
|
||||
var vm = Sunstone.getElementRightInfo(TAB_ID);
|
||||
|
||||
if (vm && vm.NAME && vm.TEMPLATE && Array.isArray(vm.TEMPLATE.NIC)) {
|
||||
if (vm && vm.NAME && vm.TEMPLATE && vm.TEMPLATE.NIC && Array.isArray(vm.TEMPLATE.NIC)) {
|
||||
var name = vm.NAME;
|
||||
var nic = vm.TEMPLATE.NIC.find(n => n.RDP === "YES");
|
||||
var ip = nic && nic.IP ? nic.IP : '';
|
||||
var credentials = {};
|
||||
|
||||
if (vm.TEMPLATE.CONTEXT) {
|
||||
var context = vm.TEMPLATE.CONTEXT;
|
||||
|
||||
for (var prop in context) {
|
||||
var propUpperCase = String(prop).toUpperCase();
|
||||
(propUpperCase === "USERNAME" || propUpperCase === "PASSWORD")
|
||||
&& (credentials[propUpperCase] = context[prop]);
|
||||
}
|
||||
var pblc = vm.TEMPLATE.CONTEXT.MAP_PUBLIC;
|
||||
var prvt = vm.TEMPLATE.CONTEXT.MAP_PRIVATE;
|
||||
var mapp = new mapips(pblc, prvt);
|
||||
var foundip = mapp.renderPublicIp(ip);
|
||||
ip = foundip || ip
|
||||
}
|
||||
nic && Rdp.downloadFile(nic.IP, name, credentials);
|
||||
|
||||
nic && Rdp.downloadFile(ip, name, credentials);
|
||||
} else {
|
||||
Notifier.notifyError(Locale.tr("RDP file error"));
|
||||
return false;
|
||||
|
@ -31,6 +31,8 @@ define(function(require) {
|
||||
var Notifier = require('utils/notifier');
|
||||
var DashboardUtils = require('utils/dashboard');
|
||||
var SearchDropdown = require('hbs!./datatable/search');
|
||||
var Rdp = require('utils/rdp');
|
||||
var TemplateUtils = require('utils/template-utils');
|
||||
|
||||
/*
|
||||
CONSTANTS
|
||||
@ -170,6 +172,15 @@ define(function(require) {
|
||||
|
||||
TabDataTable.prototype.initialize.call(this, opts);
|
||||
|
||||
//download file RDP
|
||||
$('#' + this.dataTableId).on("click", '.download_rdp', function(e){
|
||||
e.stopPropagation();
|
||||
var ip = $(this).attr("ip");
|
||||
var credential = TemplateUtils.stringToTemplate( $(this).attr("credential") );
|
||||
var name = $(this).attr("name");
|
||||
Rdp.downloadFile(ip, name, credential);
|
||||
});
|
||||
|
||||
$('#' + this.dataTableId).on("click", '.vnc', function() {
|
||||
var vmId = $(this).attr('vm_id');
|
||||
|
||||
|
@ -100,6 +100,7 @@ define(function(require) {
|
||||
var render = '';
|
||||
if(
|
||||
element &&
|
||||
element.NAME &&
|
||||
element.TEMPLATE &&
|
||||
element.TEMPLATE.CONTEXT &&
|
||||
element.TEMPLATE.CONTEXT.MAP_PRIVATE &&
|
||||
@ -107,16 +108,28 @@ define(function(require) {
|
||||
element.TEMPLATE.NIC &&
|
||||
config &&
|
||||
config.system_config &&
|
||||
config.system_config.extended_vm_info &&
|
||||
config.system_config.mapped_ips
|
||||
config.system_config.get_extended_vm_info &&
|
||||
config.system_config.get_extended_vm_info !== 'false' &&
|
||||
config.system_config.mapped_ips &&
|
||||
config.system_config.mapped_ips !== 'false'
|
||||
){
|
||||
var nics = element.TEMPLATE.NIC;
|
||||
var pblc = element.TEMPLATE.CONTEXT.MAP_PUBLIC;
|
||||
var prvt = element.TEMPLATE.CONTEXT.MAP_PRIVATE;
|
||||
var credentials = {};
|
||||
var context = element.TEMPLATE.CONTEXT;
|
||||
var pblc = element.TEMPLATE.CONTEXT.MAP_PUBLIC; //"10.0.0.0/8";
|
||||
var prvt = element.TEMPLATE.CONTEXT.MAP_PRIVATE; //"192.168.0.0/16";
|
||||
var renderTitle = true;
|
||||
if (!$.isArray(nics)){
|
||||
nics = [nics];
|
||||
}
|
||||
|
||||
//find RDP CREDENTIALS
|
||||
for (var prop in context) {
|
||||
var propUpperCase = String(prop).toUpperCase();
|
||||
(propUpperCase === "USERNAME" || propUpperCase === "PASSWORD")
|
||||
&& (credentials[propUpperCase] = context[prop]);
|
||||
}
|
||||
|
||||
var mapp = new mapips(pblc, prvt);
|
||||
nics.forEach(function(nic){
|
||||
if(nic && nic.IP){
|
||||
@ -126,7 +139,20 @@ define(function(require) {
|
||||
render = $('<div/>').append($('<br/>').add($('<b/>').text(Locale.tr('Mapped Networks')))).html();
|
||||
renderTitle = false;
|
||||
}
|
||||
render += $("<div/>").append($("<br/>").add($("<div/>").text(foundip+" ("+nic.IP+")"))).html();
|
||||
if(nic.RDP && String(nic.RDP).toUpperCase() === "YES"){
|
||||
render += $("<div/>").append(
|
||||
$("<button/>",{
|
||||
class:'button download_rdp',
|
||||
ip: foundip,
|
||||
name:element.NAME,
|
||||
credential: TemplateUtils.templateToString(credentials)
|
||||
}).css({display:'block'}).text("RDP: "+foundip)
|
||||
).html();
|
||||
}else{
|
||||
render += $("<div/>").append(
|
||||
$("<div/>").text(foundip)
|
||||
).html();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -46,23 +46,23 @@ define(function(require) {
|
||||
);
|
||||
}
|
||||
|
||||
mapIPprivate() {
|
||||
mapIPprivate(ipnic) {
|
||||
var dataPublic = this.pblc.split("/");
|
||||
var dataPrivate = this.prvt.split("/");
|
||||
var nic = ipnic || "";
|
||||
if (
|
||||
Array.isArray(dataPrivate) &&
|
||||
Array.isArray(dataPublic) &&
|
||||
dataPublic[0] &&
|
||||
dataPublic[1] &&
|
||||
dataPrivate[0] &&
|
||||
dataPrivate[1] &&
|
||||
dataPublic[1] === dataPrivate[1]
|
||||
dataPrivate[1]
|
||||
) {
|
||||
var mask = ip.fromPrefixLen(dataPublic[1]);
|
||||
var networkPublic = ip.mask(dataPublic[0], mask);
|
||||
mask = ip.fromPrefixLen(dataPrivate[1]);
|
||||
var hostBytes = ip.not(mask);
|
||||
var hostsPrivate = ip.mask(dataPrivate[0], hostBytes);
|
||||
var hostsPrivate = ip.mask(ipnic, hostBytes);
|
||||
this.rtn = this.intToip(
|
||||
this.ipToint(networkPublic) + this.ipToint(hostsPrivate)
|
||||
);
|
||||
@ -74,7 +74,7 @@ define(function(require) {
|
||||
var ipnic = nic || "";
|
||||
var rtn = '';
|
||||
if (ip.cidrSubnet(this.prvt).contains(ipnic)) {
|
||||
rtn = this.mapIPprivate();
|
||||
rtn = this.mapIPprivate(ipnic);
|
||||
}
|
||||
return rtn;
|
||||
}
|
||||
|
@ -69,8 +69,7 @@ define(function(require) {
|
||||
config &&
|
||||
config.system_config &&
|
||||
config.system_config.leases
|
||||
){
|
||||
console.log("-->",form);
|
||||
){
|
||||
$(parseVarToJqueryClass(classButton)).off("click").on("click", function(e){
|
||||
e.preventDefault();
|
||||
var confLeases = config.system_config.leases;
|
||||
|
@ -47,8 +47,8 @@
|
||||
'allow_vnc_federation' : '<%= (!$conf[:allow_vnc_federation].nil?)? $conf[:allow_vnc_federation] : "no" %>',
|
||||
'max_upload_file_size' : <%= $conf[:max_upload_file_size] ? $conf[:max_upload_file_size] : "undefined" %>,
|
||||
'leases' : <%= $conf[:leases] ? $conf[:leases].to_json : "null" %>,
|
||||
'mapped_ips' : <%= $conf[:mapped_ips] ? $conf[:mapped_ips] : false %>,
|
||||
'extended_vm_info': <%= $conf[:get_extended_vm_info] ? $conf[:get_extended_vm_info] : false %>
|
||||
'mapped_ips' : '<%= $conf[:mapped_ips] ? $conf[:mapped_ips] : false %>',
|
||||
'get_extended_vm_info': '<%= $conf[:get_extended_vm_info] ? $conf[:get_extended_vm_info] : false %>'
|
||||
},
|
||||
'view' : view,
|
||||
'available_views' : available_views,
|
||||
|
Loading…
x
Reference in New Issue
Block a user