mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-03-09 15:40:18 +00:00
Improved Korean, New MeshCommander
This commit is contained in:
parent
40abf105ab
commit
56192d51a3
66 changed files with 980 additions and 970 deletions
1684
public/commander.htm
1684
public/commander.htm
File diff suppressed because one or more lines are too long
2
public/scripts/amt-desktop-0.0.2-min.js
vendored
2
public/scripts/amt-desktop-0.0.2-min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -67,7 +67,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
|||
obj.canvas.canvas.height = obj.rheight = obj.height = 400;
|
||||
QS(obj.canvasid).cursor = 'default';
|
||||
} else {
|
||||
QS(obj.canvasid).cursor = obj.showmouse ?'default':'none';
|
||||
QS(obj.canvasid).cursor = obj.showmouse ? 'default' : 'none';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -255,7 +255,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
|||
// ###BEGIN###{Inflate}
|
||||
else {
|
||||
// This is compressed ZLib data, decompress and process it. (TODO: This need to be optimized, remove str/arr conversions)
|
||||
var str = obj.inflate.inflate(arrToStr(obj.acc.slice(ptr, ptr + datalen - dx)));
|
||||
var str = obj.inflate.inflate(arrToStr(new Uint8Array(obj.acc.buffer.slice(ptr, ptr + datalen - dx))));
|
||||
if (str.length > 0) { _decodeLRE(strToArr(str), 0, x, y, width, height, s, str.length); } else { console.log("Invalid deflate data"); }
|
||||
}
|
||||
// ###END###{Inflate}
|
||||
|
@ -274,7 +274,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
|||
|
||||
//console.log('cmdsize', cmdsize);
|
||||
if (cmdsize == 0) return;
|
||||
if (cmdsize != obj.acc.byteLength) { obj.acc = obj.acc.slice(cmdsize); } else { obj.acc = null; }
|
||||
if (cmdsize != obj.acc.byteLength) { obj.acc = new Uint8Array(obj.acc.buffer.slice(cmdsize)); } else { obj.acc = null; }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -312,7 +312,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
|||
} else {
|
||||
for (i = 0; i < subencoding; i++) { palette[i] = data[ptr++]; }
|
||||
if (subencoding == 2) { br = 1; bm = 1; } else if (subencoding <= 4) { br = 2; bm = 3; } // Compute bits to read & bit mark
|
||||
while (rlecount < s && ptr < data.byteLength) { v = data[ptr++]; for (i = (8 - br) ; i >= 0; i -= br) { _setPixel8(palette[(v >> i) & bm], rlecount++); } } // Display all the bits
|
||||
while (rlecount < s && ptr < data.byteLength) { v = data[ptr++]; for (i = (8 - br); i >= 0; i -= br) { _setPixel8(palette[(v >> i) & bm], rlecount++); } } // Display all the bits
|
||||
}
|
||||
_putImage(obj.spare, x, y);
|
||||
}
|
||||
|
@ -353,9 +353,9 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
|||
else if (subencoding > 129) { // Palette RLE encoded tile
|
||||
// Read the palette
|
||||
if (obj.bpp == 2) {
|
||||
for (i = 0; i < (subencoding - 128) ; i++) { palette[i] = data[ptr++] + (data[ptr++] << 8); }
|
||||
for (i = 0; i < (subencoding - 128); i++) { palette[i] = data[ptr++] + (data[ptr++] << 8); }
|
||||
} else {
|
||||
for (i = 0; i < (subencoding - 128) ; i++) { palette[i] = data[ptr++]; }
|
||||
for (i = 0; i < (subencoding - 128); i++) { palette[i] = data[ptr++]; }
|
||||
}
|
||||
|
||||
// Decode RLE on palette
|
||||
|
@ -568,10 +568,10 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
|
|||
obj.ox = obj.mx;
|
||||
obj.oy = obj.my;
|
||||
} else {
|
||||
// ###END###{DesktopFocus}
|
||||
// ###END###{DesktopFocus}
|
||||
// Request the entire screen
|
||||
obj.send(String.fromCharCode(3, 1, 0, 0, 0, 0) + ShortToStr(obj.rwidth) + ShortToStr(obj.rheight)); // FramebufferUpdateRequest
|
||||
// ###BEGIN###{DesktopFocus}
|
||||
// ###BEGIN###{DesktopFocus}
|
||||
}
|
||||
// ###END###{DesktopFocus}
|
||||
}
|
||||
|
|
2
public/scripts/amt-redir-ws-0.1.0-min.js
vendored
2
public/scripts/amt-redir-ws-0.1.0-min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -100,7 +100,7 @@ var CreateAmtRedirect = function (module, authCookie) {
|
|||
if (accArray.byteLength < 9 + authDataLen) return;
|
||||
var status = accArray[1], authType = accArray[4], authData = [];
|
||||
for (i = 0; i < authDataLen; i++) { authData.push(accArray[9 + i]); }
|
||||
var authDataBuf = accArray.slice(9, 9 + authDataLen);
|
||||
var authDataBuf = new Uint8Array(obj.acc.slice(9, 9 + authDataLen));
|
||||
cmdsize = 9 + authDataLen;
|
||||
if (authType == 0) {
|
||||
// Query
|
||||
|
@ -122,12 +122,12 @@ var CreateAmtRedirect = function (module, authCookie) {
|
|||
|
||||
// Realm
|
||||
var realmlen = authDataBuf[curptr];
|
||||
var realm = arrToStr(authDataBuf.slice(curptr + 1, curptr + 1 + realmlen));
|
||||
var realm = arrToStr(new Uint8Array(authDataBuf.buffer.slice(curptr + 1, curptr + 1 + realmlen)));
|
||||
curptr += (realmlen + 1);
|
||||
|
||||
// Nonce
|
||||
var noncelen = authDataBuf[curptr];
|
||||
var nonce = arrToStr(authDataBuf.slice(curptr + 1, curptr + 1 + noncelen));
|
||||
var nonce = arrToStr(new Uint8Array(authDataBuf.buffer.slice(curptr + 1, curptr + 1 + noncelen)));
|
||||
curptr += (noncelen + 1);
|
||||
|
||||
// QOP
|
||||
|
@ -138,7 +138,7 @@ var CreateAmtRedirect = function (module, authCookie) {
|
|||
var extra = '';
|
||||
if (authType == 4) {
|
||||
qoplen = authDataBuf[curptr];
|
||||
qop = arrToStr(authDataBuf.slice(curptr + 1, curptr + 1 + qoplen));
|
||||
qop = arrToStr(new Uint8Array(authDataBuf.buffer.slice(curptr + 1, curptr + 1 + qoplen)));
|
||||
curptr += (qoplen + 1);
|
||||
extra = snc + ':' + cnonce + ':' + qop + ':';
|
||||
}
|
||||
|
@ -192,7 +192,7 @@ var CreateAmtRedirect = function (module, authCookie) {
|
|||
if (accArray.byteLength < 10) break;
|
||||
var cs = (10 + (accArray[9] << 8) + accArray[8]);
|
||||
if (accArray.byteLength < cs) break;
|
||||
if (obj.m.ProcessBinaryData) { obj.m.ProcessBinaryData(accArray.slice(10, cs)); } else { obj.m.ProcessData(arrToStr(accArray.slice(10, cs))); }
|
||||
if (obj.m.ProcessBinaryData) { obj.m.ProcessBinaryData(new Uint8Array(accArray.buffer.slice(10, cs))); } else { obj.m.ProcessData(arrToStr(new Uint8Array(accArray.buffer.slice(10, cs)))); }
|
||||
cmdsize = cs;
|
||||
break;
|
||||
case 0x2B: // Keep alive message (43)
|
||||
|
@ -204,7 +204,9 @@ var CreateAmtRedirect = function (module, authCookie) {
|
|||
obj.connectstate = 1;
|
||||
obj.m.Start();
|
||||
// KVM traffic, forward rest of accumulator directly.
|
||||
if (accArray.byteLength > 8) { obj.m.ProcessData(accArray.slice(8)); }
|
||||
if (accArray.byteLength > 8) {
|
||||
if (obj.m.ProcessBinaryData) { obj.m.ProcessBinaryData(new Uint8Array(accArray.buffer.slice(8))); } else { obj.m.ProcessData(arrToStr(new Uint8Array(accArray.buffer.slice(8)))); }
|
||||
}
|
||||
cmdsize = accArray.byteLength;
|
||||
break;
|
||||
case 0xF0:
|
||||
|
@ -232,7 +234,7 @@ var CreateAmtRedirect = function (module, authCookie) {
|
|||
}
|
||||
}
|
||||
|
||||
obj.send = function (x) {
|
||||
obj.Send = obj.send = function (x) {
|
||||
if (obj.socket == null || obj.connectstate != 1) return;
|
||||
if (obj.protocol == 1) { obj.xxSend(String.fromCharCode(0x28, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++) + ShortToStrX(x.length) + x); } else { obj.xxSend(x); }
|
||||
}
|
||||
|
|
2
public/scripts/amt-wsman-ws-0.2.0-min.js
vendored
2
public/scripts/amt-wsman-ws-0.2.0-min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -27,6 +27,8 @@ var CreateWsmanComm = function (host, port, user, pass, tls) {
|
|||
// Private method
|
||||
//obj.Debug = function (msg) { console.log(msg); }
|
||||
|
||||
function arrToStr(arr) { return String.fromCharCode.apply(null, arr); }
|
||||
|
||||
// Private method
|
||||
// pri = priority, if set to 1, the call is high priority and put on top of the stack.
|
||||
obj.PerformAjax = function (postdata, callback, tag, pri, url, action) {
|
||||
|
@ -114,9 +116,8 @@ var CreateWsmanComm = function (host, port, user, pass, tls) {
|
|||
obj.socketHeader = null;
|
||||
obj.socketData = '';
|
||||
obj.socketState = 1;
|
||||
|
||||
console.log(obj.tlsv1only);
|
||||
obj.socket = new WebSocket(window.location.protocol.replace('http', 'ws') + '//' + window.location.host + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')) + '/webrelay.ashx?p=1&host=' + obj.host + '&port=' + obj.port + '&tls=' + obj.tls + '&tlsv1only=' + obj.tlsv1only + ((user == '*') ? '&serverauth=1' : '') + ((typeof pass === 'undefined') ? ('&serverauth=1&user=' + user) : '')); // The "p=1" indicates to the relay that this is a WSMAN session
|
||||
obj.socket.binaryType = 'arraybuffer';
|
||||
obj.socket.onopen = _OnSocketConnected;
|
||||
obj.socket.onmessage = _OnMessage;
|
||||
obj.socket.onclose = _OnSocketClosed;
|
||||
|
@ -129,60 +130,17 @@ var CreateWsmanComm = function (host, port, user, pass, tls) {
|
|||
for (i in obj.pendingAjaxCall) { obj.sendRequest(obj.pendingAjaxCall[i][0], obj.pendingAjaxCall[i][3], obj.pendingAjaxCall[i][4]); }
|
||||
}
|
||||
|
||||
// Setup the file reader
|
||||
var fileReader = new FileReader();
|
||||
var fileReaderInuse = false, fileReaderAcc = [];
|
||||
if (fileReader.readAsBinaryString) {
|
||||
// Chrome & Firefox (Draft)
|
||||
fileReader.onload = function (e) { _OnSocketData(e.target.result); if (fileReaderAcc.length == 0) { fileReaderInuse = false; } else { fileReader.readAsBinaryString(new Blob([fileReaderAcc.shift()])); } }
|
||||
} else if (fileReader.readAsArrayBuffer) {
|
||||
// Chrome & Firefox (Spec)
|
||||
fileReader.onloadend = function (e) { _OnSocketData(e.target.result); if (fileReaderAcc.length == 0) { fileReaderInuse = false; } else { fileReader.readAsArrayBuffer(fileReaderAcc.shift()); } }
|
||||
}
|
||||
|
||||
function _OnMessage(e) {
|
||||
if (typeof e.data == 'object') {
|
||||
if (fileReaderInuse == true) { fileReaderAcc.push(e.data); return; }
|
||||
if (fileReader.readAsBinaryString) {
|
||||
// Chrome & Firefox (Draft)
|
||||
fileReaderInuse = true;
|
||||
fileReader.readAsBinaryString(new Blob([e.data]));
|
||||
} else if (fileReader.readAsArrayBuffer) {
|
||||
// Chrome & Firefox (Spec)
|
||||
fileReaderInuse = true;
|
||||
fileReader.readAsArrayBuffer(e.data);
|
||||
} else {
|
||||
// IE10, readAsBinaryString does not exist, use an alternative.
|
||||
var binary = '', bytes = new Uint8Array(e.data), length = bytes.byteLength;
|
||||
for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
|
||||
_OnSocketData(binary);
|
||||
}
|
||||
} else {
|
||||
_OnSocketData(e.data);
|
||||
}
|
||||
};
|
||||
|
||||
// Websocket relay specific private method
|
||||
function _OnSocketData(data) {
|
||||
//obj.Debug("_OnSocketData (" + data.length + "): " + data);
|
||||
|
||||
if (typeof data === 'object') {
|
||||
// This is an ArrayBuffer, convert it to a string array (used in IE)
|
||||
var binary = '', bytes = new Uint8Array(data), length = bytes.byteLength;
|
||||
for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
|
||||
data = binary;
|
||||
}
|
||||
else if (typeof data !== 'string') return;
|
||||
|
||||
//console.log("RECV: " + data); // DEBUG
|
||||
|
||||
obj.socketAccumulator += data;
|
||||
function _OnMessage(e) {
|
||||
//obj.Debug("_OnSocketData (" + data.byteLength + "): " + data);
|
||||
obj.socketAccumulator += arrToStr(new Uint8Array(e.data));
|
||||
while (true) {
|
||||
if (obj.socketParseState == 0) {
|
||||
var headersize = obj.socketAccumulator.indexOf('\r\n\r\n');
|
||||
if (headersize < 0) return;
|
||||
//obj.Debug(obj.socketAccumulator.substring(0, headersize)); // Display received HTTP header
|
||||
obj.socketHeader = obj.socketAccumulator.substring(0, headersize).split('\r\n');
|
||||
if (obj.amtVersion == null) { for (var i in obj.socketHeader) { if (obj.socketHeader[i].indexOf('Server: Intel(R) Active Management Technology ') == 0) { obj.amtVersion = obj.socketHeader[i].substring(46); } } }
|
||||
obj.socketAccumulator = obj.socketAccumulator.substring(headersize + 4);
|
||||
obj.socketParseState = 1;
|
||||
obj.socketData = '';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue