JSLint.
This commit is contained in:
parent
abcdac6b43
commit
76072094e3
@ -41,18 +41,22 @@
|
|||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
Base64 = {
|
"use strict";
|
||||||
|
/*jslint white: false, bitwise: false, plusplus: false */
|
||||||
|
/*global console */
|
||||||
|
|
||||||
|
var Base64 = {
|
||||||
|
|
||||||
/* Convert data (an array of integers) to a Base64 string. */
|
/* Convert data (an array of integers) to a Base64 string. */
|
||||||
toBase64Table : 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
|
toBase64Table : 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
|
||||||
base64Pad : '=',
|
base64Pad : '=',
|
||||||
|
|
||||||
encode: function (data) {
|
encode: function (data) {
|
||||||
var result = '';
|
var result = '',
|
||||||
var chrTable = Base64.toBase64Table.split('');
|
chrTable = Base64.toBase64Table.split(''),
|
||||||
var pad = Base64.base64Pad;
|
pad = Base64.base64Pad,
|
||||||
var length = data.length;
|
length = data.length,
|
||||||
var i;
|
i;
|
||||||
// Convert every three bytes to 4 ascii characters.
|
// Convert every three bytes to 4 ascii characters.
|
||||||
for (i = 0; i < (length - 2); i += 3) {
|
for (i = 0; i < (length - 2); i += 3) {
|
||||||
result += chrTable[data[i] >> 2];
|
result += chrTable[data[i] >> 2];
|
||||||
@ -65,7 +69,7 @@ encode: function (data) {
|
|||||||
if (length%3) {
|
if (length%3) {
|
||||||
i = length - (length%3);
|
i = length - (length%3);
|
||||||
result += chrTable[data[i] >> 2];
|
result += chrTable[data[i] >> 2];
|
||||||
if ((length%3) == 2) {
|
if ((length%3) === 2) {
|
||||||
result += chrTable[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
|
result += chrTable[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
|
||||||
result += chrTable[(data[i+1] & 0x0f) << 2];
|
result += chrTable[(data[i+1] & 0x0f) << 2];
|
||||||
result += pad;
|
result += pad;
|
||||||
@ -91,26 +95,26 @@ toBinaryTable : [
|
|||||||
],
|
],
|
||||||
|
|
||||||
decode: function (data, offset) {
|
decode: function (data, offset) {
|
||||||
offset = typeof(offset) != 'undefined' ? offset : 0;
|
offset = typeof(offset) !== 'undefined' ? offset : 0;
|
||||||
var binTable = Base64.toBinaryTable;
|
var binTable = Base64.toBinaryTable,
|
||||||
var pad = Base64.base64Pad;
|
pad = Base64.base64Pad,
|
||||||
var leftbits = 0; // number of bits decoded, but yet to be appended
|
result, result_length, idx, i, c, padding,
|
||||||
var leftdata = 0; // bits decoded, but yet to be appended
|
leftbits = 0, // number of bits decoded, but yet to be appended
|
||||||
|
leftdata = 0, // bits decoded, but yet to be appended
|
||||||
|
data_length = data.indexOf('=') - offset;
|
||||||
|
|
||||||
|
if (data_length < 0) { data_length = data.length - offset; }
|
||||||
|
|
||||||
/* Every four characters is 3 resulting numbers */
|
/* Every four characters is 3 resulting numbers */
|
||||||
var data_length = data.indexOf('=') - offset;
|
result_length = (data_length >> 2) * 3 + Math.floor((data_length%4)/1.5);
|
||||||
if (data_length < 0) data_length = data.length - offset;
|
result = new Array(result_length);
|
||||||
|
|
||||||
var result_length = (data_length >> 2) * 3 + Math.floor((data_length%4)/1.5);
|
|
||||||
var result = new Array(result_length);
|
|
||||||
|
|
||||||
// Convert one by one.
|
// Convert one by one.
|
||||||
var idx = 0;
|
for (idx = 0, i = offset; i < data.length; i++) {
|
||||||
for (var i = offset; i < data.length; i++) {
|
c = binTable[data.charCodeAt(i) & 0x7f];
|
||||||
var c = binTable[data.charCodeAt(i) & 0x7f];
|
padding = (data.charAt(i) === pad);
|
||||||
var padding = (data.charAt(i) == pad);
|
|
||||||
// Skip illegal characters and whitespace
|
// Skip illegal characters and whitespace
|
||||||
if (c == -1) {
|
if (c === -1) {
|
||||||
console.error("Illegal character '" + data.charCodeAt(i) + "'");
|
console.error("Illegal character '" + data.charCodeAt(i) + "'");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -123,16 +127,18 @@ decode: function (data, offset) {
|
|||||||
if (leftbits >= 8) {
|
if (leftbits >= 8) {
|
||||||
leftbits -= 8;
|
leftbits -= 8;
|
||||||
// Append if not padding.
|
// Append if not padding.
|
||||||
if (!padding)
|
if (!padding) {
|
||||||
result[idx++] = (leftdata >> leftbits) & 0xff;
|
result[idx++] = (leftdata >> leftbits) & 0xff;
|
||||||
|
}
|
||||||
leftdata &= (1 << leftbits) - 1;
|
leftdata &= (1 << leftbits) - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there are any bits left, the base64 string was corrupted
|
// If there are any bits left, the base64 string was corrupted
|
||||||
if (leftbits)
|
if (leftbits) {
|
||||||
throw {name: 'Base64-Error',
|
throw {name: 'Base64-Error',
|
||||||
message: 'Corrupted base64 string'};
|
message: 'Corrupted base64 string'};
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,10 @@
|
|||||||
* fine Java utilities: http://www.acme.com/java/
|
* fine Java utilities: http://www.acme.com/java/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
DES = {
|
"use strict";
|
||||||
|
/*jslint white: false, bitwise: false, plusplus: false */
|
||||||
|
|
||||||
|
var DES = {
|
||||||
|
|
||||||
// Tables, permutations, S-boxes, etc.
|
// Tables, permutations, S-boxes, etc.
|
||||||
|
|
||||||
@ -107,7 +110,7 @@ DES = {
|
|||||||
46, 54, 29, 39, 50, 44,
|
46, 54, 29, 39, 50, 44,
|
||||||
32, 47, 43, 48, 38, 55,
|
32, 47, 43, 48, 38, 55,
|
||||||
33, 52, 45, 41, 49, 35,
|
33, 52, 45, 41, 49, 35,
|
||||||
28, 31, ],
|
28, 31 ],
|
||||||
SP1 : [ 0x01010400, 0x00000000, 0x00010000,
|
SP1 : [ 0x01010400, 0x00000000, 0x00010000,
|
||||||
0x01010404, 0x01010004, 0x00010404, 0x00000004, 0x00010000,
|
0x01010404, 0x01010004, 0x00010404, 0x00000004, 0x00010000,
|
||||||
0x00000400, 0x01010400, 0x01010404, 0x00000400, 0x01000404,
|
0x00000400, 0x01010400, 0x01010404, 0x00000400, 0x01000404,
|
||||||
@ -237,52 +240,57 @@ DES = {
|
|||||||
|
|
||||||
// Turn an 8-byte key into internal keys.
|
// Turn an 8-byte key into internal keys.
|
||||||
deskey : function(keyBlock, encrypting, KnL) {
|
deskey : function(keyBlock, encrypting, KnL) {
|
||||||
var i, j, l, m, n;
|
var i, j, l, m, n,
|
||||||
var pc1m = new Array(56);
|
pc1m = new Array(56),
|
||||||
var pcr = new Array(56);
|
pcr = new Array(56),
|
||||||
var kn = new Array(32);
|
kn = new Array(32);
|
||||||
|
|
||||||
for (j = 0; j < 56; ++j) {
|
for (j = 0; j < 56; ++j) {
|
||||||
l = DES.pc1[j];
|
l = DES.pc1[j];
|
||||||
m = l & 07;
|
m = l & 0x7;
|
||||||
pc1m[j] = ((keyBlock[l >>> 3] & DES.bytebit[m]) != 0) ? 1: 0;
|
pc1m[j] = ((keyBlock[l >>> 3] & DES.bytebit[m]) !== 0) ? 1: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 16; ++i) {
|
for (i = 0; i < 16; ++i) {
|
||||||
if (encrypting)
|
if (encrypting) {
|
||||||
m = i << 1;
|
m = i << 1;
|
||||||
else
|
} else {
|
||||||
m = (15- i) << 1;
|
m = (15- i) << 1;
|
||||||
|
}
|
||||||
n = m + 1;
|
n = m + 1;
|
||||||
kn[m] = kn[n] = 0;
|
kn[m] = kn[n] = 0;
|
||||||
for (j = 0; j < 28; ++j) {
|
for (j = 0; j < 28; ++j) {
|
||||||
l = j + DES.totrot[i];
|
l = j + DES.totrot[i];
|
||||||
if (l < 28)
|
if (l < 28) {
|
||||||
pcr[j] = pc1m[l];
|
pcr[j] = pc1m[l];
|
||||||
else
|
} else {
|
||||||
pcr[j] = pc1m[l - 28];
|
pcr[j] = pc1m[l - 28];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
for (j = 28; j < 56; ++j) {
|
for (j = 28; j < 56; ++j) {
|
||||||
l = j + DES.totrot[i];
|
l = j + DES.totrot[i];
|
||||||
if (l < 56)
|
if (l < 56) {
|
||||||
pcr[j] = pc1m[l];
|
pcr[j] = pc1m[l];
|
||||||
else
|
} else {
|
||||||
pcr[j] = pc1m[l - 28];
|
pcr[j] = pc1m[l - 28];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
for (j = 0; j < 24; ++j) {
|
for (j = 0; j < 24; ++j) {
|
||||||
if (pcr[DES.pc2[j]] != 0)
|
if (pcr[DES.pc2[j]] !== 0) {
|
||||||
kn[m] |= DES.bigbyte[j];
|
kn[m] |= DES.bigbyte[j];
|
||||||
if (pcr[DES.pc2[j + 24]] != 0)
|
}
|
||||||
|
if (pcr[DES.pc2[j + 24]] !== 0) {
|
||||||
kn[n] |= DES.bigbyte[j];
|
kn[n] |= DES.bigbyte[j];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
DES.cookey(kn, KnL);
|
DES.cookey(kn, KnL);
|
||||||
},
|
},
|
||||||
|
|
||||||
cookey: function(raw, KnL) {
|
cookey: function(raw, KnL) {
|
||||||
var raw0, raw1;
|
var raw0, raw1,
|
||||||
var rawi, KnLi;
|
rawi, KnLi,
|
||||||
var i;
|
i;
|
||||||
|
|
||||||
for (i = 0, rawi = 0, KnLi = 0; i < 16; ++i) {
|
for (i = 0, rawi = 0, KnLi = 0; i < 16; ++i) {
|
||||||
raw0 = raw[rawi++];
|
raw0 = raw[rawi++];
|
||||||
@ -320,9 +328,9 @@ DES = {
|
|||||||
|
|
||||||
// The DES function.
|
// The DES function.
|
||||||
des: function(inInts, outInts, keys) {
|
des: function(inInts, outInts, keys) {
|
||||||
var fval, work, right, leftt;
|
var fval, work, right, leftt,
|
||||||
var round;
|
round,
|
||||||
var keysi = 0;
|
keysi = 0;
|
||||||
|
|
||||||
leftt = inInts[0];
|
leftt = inInts[0];
|
||||||
right = inInts[1];
|
right = inInts[1];
|
||||||
@ -401,25 +409,26 @@ DES = {
|
|||||||
|
|
||||||
// / Squash bytes down to ints.
|
// / Squash bytes down to ints.
|
||||||
squashBytesToInts: function (inBytes, inOff, outInts, outOff, intLen) {
|
squashBytesToInts: function (inBytes, inOff, outInts, outOff, intLen) {
|
||||||
for (var i = 0; i < intLen; ++i)
|
for (var i = 0; i < intLen; ++i) {
|
||||||
outInts[outOff + i] = ((inBytes[inOff + i * 4] & 0xff) << 24)
|
outInts[outOff + i] = ((inBytes[inOff + i * 4] & 0xff) << 24)
|
||||||
| ((inBytes[inOff + i * 4+ 1] & 0xff) << 16)
|
| ((inBytes[inOff + i * 4+ 1] & 0xff) << 16)
|
||||||
| ((inBytes[inOff + i * 4+ 2] & 0xff) << 8)
|
| ((inBytes[inOff + i * 4+ 2] & 0xff) << 8)
|
||||||
| (inBytes[inOff + i * 4+ 3] & 0xff);
|
| (inBytes[inOff + i * 4+ 3] & 0xff);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// / Spread ints into unsigned bytes.
|
// / Spread ints into unsigned bytes.
|
||||||
spreadIntsToBytes: function (inInts, inOff, outBytes, outOff, intLen) {
|
spreadIntsToBytes: function (inInts, inOff, outBytes, outOff, intLen) {
|
||||||
for (var i = 0; i < intLen; ++i) {
|
var i, j, idx;
|
||||||
|
for (i = 0; i < intLen; ++i) {
|
||||||
outBytes[outOff + i * 4] = (inInts[inOff + i] >>> 24) % 256;
|
outBytes[outOff + i * 4] = (inInts[inOff + i] >>> 24) % 256;
|
||||||
outBytes[outOff + i * 4+ 1] = (inInts[inOff + i] >>> 16) % 256;
|
outBytes[outOff + i * 4+ 1] = (inInts[inOff + i] >>> 16) % 256;
|
||||||
outBytes[outOff + i * 4+ 2] = (inInts[inOff + i] >>> 8) % 256;
|
outBytes[outOff + i * 4+ 2] = (inInts[inOff + i] >>> 8) % 256;
|
||||||
outBytes[outOff + i * 4+ 3] = (inInts[inOff + i]) % 256;
|
outBytes[outOff + i * 4+ 3] = (inInts[inOff + i]) % 256;
|
||||||
}
|
}
|
||||||
/* Make unsigned */
|
/* Make unsigned */
|
||||||
var idx;
|
for (i = 0; i < intLen; ++i) {
|
||||||
for (var i = 0; i < intLen; ++i) {
|
for (j = 0; j < 4; j++) {
|
||||||
for (var j = 0; j < 4; j++) {
|
|
||||||
idx = outOff + i * 4 + j;
|
idx = outOff + i * 4 + j;
|
||||||
if (outBytes[idx] < 0) {
|
if (outBytes[idx] < 0) {
|
||||||
outBytes[idx] += 256;
|
outBytes[idx] += 256;
|
||||||
@ -428,4 +437,4 @@ DES = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
};
|
||||||
|
@ -112,7 +112,7 @@ var that = {}, // Public API interface
|
|||||||
|
|
||||||
fbu_rt_start : 0,
|
fbu_rt_start : 0,
|
||||||
fbu_rt_total : 0,
|
fbu_rt_total : 0,
|
||||||
fbu_rt_cnt : 0,
|
fbu_rt_cnt : 0
|
||||||
},
|
},
|
||||||
|
|
||||||
test_mode = false,
|
test_mode = false,
|
||||||
|
@ -7,7 +7,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
/*global window, VNC_uri_prefix */
|
/*jslint evil: true */
|
||||||
|
/*global window, document, VNC_uri_prefix */
|
||||||
|
|
||||||
// Globals defined here
|
// Globals defined here
|
||||||
var VNC_native_ws, WebSocket__swfLocation;
|
var VNC_native_ws, WebSocket__swfLocation;
|
||||||
|
@ -1,14 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* noVNC: HTML5 VNC client
|
||||||
|
* Copyright (C) 2010 Joel Martin
|
||||||
|
* Licensed under LGPL-3 (see LICENSE.LGPL-3)
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
/*jslint browser: true, white: false */
|
||||||
|
/*global Util, VNC_frame_data, finish */
|
||||||
|
|
||||||
var rfb, mode, test_state, frame_idx, frame_length,
|
var rfb, mode, test_state, frame_idx, frame_length,
|
||||||
iteration, iterations, istart_time;
|
iteration, iterations, istart_time,
|
||||||
|
|
||||||
|
// Pre-declarations for jslint
|
||||||
|
send_array, next_iteration, queue_next_packet, do_packet;
|
||||||
|
|
||||||
// Override send_array
|
// Override send_array
|
||||||
send_array = function (arr) {
|
send_array = function (arr) {
|
||||||
// Stub out send_array
|
// Stub out send_array
|
||||||
}
|
};
|
||||||
|
|
||||||
function next_iteration () {
|
|
||||||
var time, iter_time, end_time;
|
|
||||||
|
|
||||||
|
next_iteration = function () {
|
||||||
if (iteration === 0) {
|
if (iteration === 0) {
|
||||||
frame_length = VNC_frame_data.length;
|
frame_length = VNC_frame_data.length;
|
||||||
test_state = 'running';
|
test_state = 'running';
|
||||||
@ -18,7 +29,7 @@ function next_iteration () {
|
|||||||
|
|
||||||
if (test_state !== 'running') { return; }
|
if (test_state !== 'running') { return; }
|
||||||
|
|
||||||
iteration++;
|
iteration += 1;
|
||||||
if (iteration > iterations) {
|
if (iteration > iterations) {
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
@ -30,10 +41,10 @@ function next_iteration () {
|
|||||||
|
|
||||||
queue_next_packet();
|
queue_next_packet();
|
||||||
|
|
||||||
}
|
};
|
||||||
|
|
||||||
function queue_next_packet () {
|
queue_next_packet = function () {
|
||||||
var frame, now, foffset, toffset, delay;
|
var frame, foffset, toffset, delay;
|
||||||
if (test_state !== 'running') { return; }
|
if (test_state !== 'running') { return; }
|
||||||
|
|
||||||
frame = VNC_frame_data[frame_idx];
|
frame = VNC_frame_data[frame_idx];
|
||||||
@ -66,14 +77,14 @@ function queue_next_packet () {
|
|||||||
} else {
|
} else {
|
||||||
setTimeout(do_packet, 1);
|
setTimeout(do_packet, 1);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
function do_packet () {
|
do_packet = function () {
|
||||||
//Util.Debug("Processing frame: " + frame_idx);
|
//Util.Debug("Processing frame: " + frame_idx);
|
||||||
frame = VNC_frame_data[frame_idx];
|
var frame = VNC_frame_data[frame_idx];
|
||||||
rfb.recv_message({'data' : frame.slice(frame.indexOf('{', 1) + 1)});
|
rfb.recv_message({'data' : frame.slice(frame.indexOf('{', 1) + 1)});
|
||||||
frame_idx += 1;
|
frame_idx += 1;
|
||||||
|
|
||||||
queue_next_packet();
|
queue_next_packet();
|
||||||
}
|
};
|
||||||
|
|
||||||
|
2
vnc.html
2
vnc.html
@ -1,7 +1,7 @@
|
|||||||
|
<html>
|
||||||
<!--
|
<!--
|
||||||
noVNC example: simple example using default controls
|
noVNC example: simple example using default controls
|
||||||
-->
|
-->
|
||||||
<html>
|
|
||||||
<head>
|
<head>
|
||||||
<title>VNC Client</title>
|
<title>VNC Client</title>
|
||||||
<link rel="stylesheet" href="include/plain.css">
|
<link rel="stylesheet" href="include/plain.css">
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
<html>
|
||||||
<!--
|
<!--
|
||||||
noVNC Example: Automatically connect on page load.
|
noVNC Example: Automatically connect on page load.
|
||||||
|
|
||||||
Connect parameters are provided in query string:
|
Connect parameters are provided in query string:
|
||||||
http://example.com/?host=HOST&port=PORT&encrypt=1&true_color=1
|
http://example.com/?host=HOST&port=PORT&encrypt=1&true_color=1
|
||||||
-->
|
-->
|
||||||
<html>
|
|
||||||
<head>
|
<head>
|
||||||
<title>VNC Client</title>
|
<title>VNC Client</title>
|
||||||
<link rel="stylesheet" href="include/plain.css" title="plain">
|
<link rel="stylesheet" href="include/plain.css" title="plain">
|
||||||
|
Loading…
Reference in New Issue
Block a user