Add ultravnc_repeater.pl support to rfb.js and vnc_auto.html
This commit is contained in:
parent
ab44059b8b
commit
8d0c7fb5ac
|
@ -39,6 +39,7 @@ var that = {}, // Public API methods
|
||||||
rfb_port = 5900,
|
rfb_port = 5900,
|
||||||
rfb_password = '',
|
rfb_password = '',
|
||||||
rfb_path = '',
|
rfb_path = '',
|
||||||
|
rfb_repeaterID = '',
|
||||||
|
|
||||||
rfb_state = 'disconnected',
|
rfb_state = 'disconnected',
|
||||||
rfb_version = 0,
|
rfb_version = 0,
|
||||||
|
@ -659,10 +660,10 @@ mouseMove = function(x, y) {
|
||||||
init_msg = function() {
|
init_msg = function() {
|
||||||
//Util.Debug(">> init_msg [rfb_state '" + rfb_state + "']");
|
//Util.Debug(">> init_msg [rfb_state '" + rfb_state + "']");
|
||||||
|
|
||||||
var strlen, reason, length, sversion, cversion,
|
var strlen, reason, length, sversion, cversion, repeaterID,
|
||||||
i, types, num_types, challenge, response, bpp, depth,
|
i, types, num_types, challenge, response, bpp, depth,
|
||||||
big_endian, red_max, green_max, blue_max, red_shift,
|
big_endian, red_max, green_max, blue_max, red_shift,
|
||||||
green_shift, blue_shift, true_color, name_length;
|
green_shift, blue_shift, true_color, name_length, is_repeater;
|
||||||
|
|
||||||
//Util.Debug("ws.rQ (" + ws.rQlen() + ") " + ws.rQslice(0));
|
//Util.Debug("ws.rQ (" + ws.rQlen() + ") " + ws.rQslice(0));
|
||||||
switch (rfb_state) {
|
switch (rfb_state) {
|
||||||
|
@ -673,7 +674,9 @@ init_msg = function() {
|
||||||
}
|
}
|
||||||
sversion = ws.rQshiftStr(12).substr(4,7);
|
sversion = ws.rQshiftStr(12).substr(4,7);
|
||||||
Util.Info("Server ProtocolVersion: " + sversion);
|
Util.Info("Server ProtocolVersion: " + sversion);
|
||||||
|
is_repeater = 0;
|
||||||
switch (sversion) {
|
switch (sversion) {
|
||||||
|
case "000.000": is_repeater = 1; break; // UltraVNC repeater
|
||||||
case "003.003": rfb_version = 3.3; break;
|
case "003.003": rfb_version = 3.3; break;
|
||||||
case "003.006": rfb_version = 3.3; break; // UltraVNC
|
case "003.006": rfb_version = 3.3; break; // UltraVNC
|
||||||
case "003.889": rfb_version = 3.3; break; // Apple Remote Desktop
|
case "003.889": rfb_version = 3.3; break; // Apple Remote Desktop
|
||||||
|
@ -684,6 +687,13 @@ init_msg = function() {
|
||||||
default:
|
default:
|
||||||
return fail("Invalid server version " + sversion);
|
return fail("Invalid server version " + sversion);
|
||||||
}
|
}
|
||||||
|
if (is_repeater) {
|
||||||
|
repeaterID = rfb_repeaterID;
|
||||||
|
while(repeaterID.length < 250)
|
||||||
|
repeaterID += "\0";
|
||||||
|
ws.send_string(repeaterID);
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (rfb_version > rfb_max_version) {
|
if (rfb_version > rfb_max_version) {
|
||||||
rfb_version = rfb_max_version;
|
rfb_version = rfb_max_version;
|
||||||
}
|
}
|
||||||
|
@ -730,6 +740,7 @@ init_msg = function() {
|
||||||
// Server decides
|
// Server decides
|
||||||
if (ws.rQwait("security scheme", 4)) { return false; }
|
if (ws.rQwait("security scheme", 4)) { return false; }
|
||||||
rfb_auth_scheme = ws.rQshift32();
|
rfb_auth_scheme = ws.rQshift32();
|
||||||
|
//rfb_auth_scheme = ws.rQshiftStr(12);
|
||||||
}
|
}
|
||||||
updateState('Authentication',
|
updateState('Authentication',
|
||||||
"Authenticating using scheme: " + rfb_auth_scheme);
|
"Authenticating using scheme: " + rfb_auth_scheme);
|
||||||
|
@ -1748,13 +1759,14 @@ clientCutText = function(text) {
|
||||||
// Public API interface functions
|
// Public API interface functions
|
||||||
//
|
//
|
||||||
|
|
||||||
that.connect = function(host, port, password, path) {
|
that.connect = function(host, port, password, path, repeaterID) {
|
||||||
//Util.Debug(">> connect");
|
//Util.Debug(">> connect");
|
||||||
|
|
||||||
rfb_host = host;
|
rfb_host = host;
|
||||||
rfb_port = port;
|
rfb_port = port;
|
||||||
rfb_password = (password !== undefined) ? password : "";
|
rfb_password = (password !== undefined) ? password : "";
|
||||||
rfb_path = (path !== undefined) ? path : "";
|
rfb_path = (path !== undefined) ? path : "";
|
||||||
|
rfb_repeaterID = (repeaterID !== undefined) ? repeaterID : "";
|
||||||
|
|
||||||
if ((!rfb_host) || (!rfb_port)) {
|
if ((!rfb_host) || (!rfb_port)) {
|
||||||
return fail("Must set host and port");
|
return fail("Must set host and port");
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
window.onload = function () {
|
window.onload = function () {
|
||||||
var host, port, password, path, token;
|
var host, port, password, path, token, repeaterID;
|
||||||
|
|
||||||
$D('sendCtrlAltDelButton').style.display = "inline";
|
$D('sendCtrlAltDelButton').style.display = "inline";
|
||||||
$D('sendCtrlAltDelButton').onclick = sendCtrlAltDel;
|
$D('sendCtrlAltDelButton').onclick = sendCtrlAltDel;
|
||||||
|
@ -103,6 +103,8 @@
|
||||||
|
|
||||||
password = WebUtil.getQueryVar('password', '');
|
password = WebUtil.getQueryVar('password', '');
|
||||||
path = WebUtil.getQueryVar('path', 'websockify');
|
path = WebUtil.getQueryVar('path', 'websockify');
|
||||||
|
repeaterID = WebUtil.getQueryVar('repeaterid','');
|
||||||
|
|
||||||
if ((!host) || (!port)) {
|
if ((!host) || (!port)) {
|
||||||
updateState('failed',
|
updateState('failed',
|
||||||
"Must specify host and port in URL");
|
"Must specify host and port in URL");
|
||||||
|
@ -118,7 +120,7 @@
|
||||||
'view_only': WebUtil.getQueryVar('view_only', false),
|
'view_only': WebUtil.getQueryVar('view_only', false),
|
||||||
'updateState': updateState,
|
'updateState': updateState,
|
||||||
'onPasswordRequired': passwordRequired});
|
'onPasswordRequired': passwordRequired});
|
||||||
rfb.connect(host, port, password, path);
|
rfb.connect(host, port, password, path, repeaterID);
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue