Commit 8d0c7fb5 authored by William Lightning's avatar William Lightning

Add ultravnc_repeater.pl support to rfb.js and vnc_auto.html

parent ab44059b
...@@ -39,6 +39,7 @@ var that = {}, // Public API methods ...@@ -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) { ...@@ -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() { ...@@ -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() { ...@@ -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() { ...@@ -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) { ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment