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

feature #3748: Add VNC libraries

This commit is contained in:
Daniel Molina 2015-06-10 15:49:14 +02:00
parent 9dafd0db16
commit 20740ad583
3 changed files with 107 additions and 2 deletions

View File

@ -48,7 +48,10 @@ require.config({
'flot.tooltip': '../bower_components/flot.tooltip/js/jquery.flot.tooltip.min',
/* noUiSlider */
'nouislider': '../vendor/4.0/nouislider/jquery.nouislider.min'
'nouislider': '../vendor/4.0/nouislider/jquery.nouislider.min',
/* VNC */
'vnc-util': '../bower_components/no-vnc/include/util'
},
shim: {
/* jQuery */
@ -152,6 +155,11 @@ require.config({
'nouislider': {
deps: ['jquery']
},
/* VNC */
'vnc-util': {
exports: 'Util'
},
}
});

View File

@ -99,7 +99,9 @@ define(function(require) {
},
'autoRefresh' : _config['view']['autorefresh'],
'tableOrder': _config['user_config']['table_order']
'tableOrder': _config['user_config']['table_order'],
'vncProxyPort': _config['system_config']['vnc_proxy_port'],
'vncWSS': _config['user_config']['vnc_wss']
}
return Config;

View File

@ -0,0 +1,95 @@
define(function(require) {
INCLUDE_URI = "bower_components/no-vnc/include/";
require('vnc-util');
var Config = require('sunstone-config');
var _lock = false;
var _rfb;
Util.load_scripts(["webutil.js", "base64.js", "websock.js", "des.js",
"keysymdef.js", "keyboard.js", "input.js", "display.js",
"jsunzip.js", "rfb.js", "keysym.js"]);
return {
'lockStatus': lockStatus,
'lock': lock,
'unlock': unlock,
'vncCallback': vncCallback,
'disconnect': disconnect,
'sendCtrlAltDel': sendCtrlAltDel
}
function lockStatus() {
return _lock;
}
function lock() {
_lock = true;
}
function unlock() {
_lock = false;
}
function vncCallback(response) {
_rfb = new RFB({'target': $D('VNC_canvas'),
'encrypt': Config.vncWSS == "yes",
'true_color': true,
'local_cursor': true,
'shared': true,
'onUpdateState': updateVNCState});
var proxy_host = window.location.hostname;
var proxy_port = Config.vncProxyPort;
var pw = response["password"];
var token = response["token"];
var vm_name = response["vm_name"];
var path = '?token=' + token;
var url = "vnc?";
url += "host=" + proxy_host;
url += "&port=" + proxy_port;
url += "&token=" + token;
url += "&password=" + pw;
url += "&encrypt=" + Config.vncWSS;
url += "&title=" + vm_name;
$("#open_in_a_new_window").attr('href', url)
_rfb.connect(proxy_host, proxy_port, pw, path);
}
function disconnect() {
if (_rfb) { _rfb.disconnect(); }
}
function sendCtrlAltDel() {
if (_rfb) { rfb.sendCtrlAltDel(); }
}
//This is taken from noVNC examples
function updateVNCState(rfb, state, oldstate, msg) {
var s, sb, cad, klass;
s = $D('VNC_status');
sb = $D('VNC_status_bar');
cad = $D('sendCtrlAltDelButton');
switch (state) {
case 'failed': level = "error"; break;
case 'fatal': level = "error"; break;
case 'normal': level = "normal"; break;
case 'disconnected': level = "normal"; break;
case 'loaded': level = "normal"; break;
default: level = "warn"; break;
}
if (state === "normal") {
cad.disabled = false;
} else {
cad.disabled = true;
}
if (typeof(msg) !== 'undefined') {
sb.setAttribute("class", "noVNC_status_" + level);
s.innerHTML = msg;
}
}
});