1
0
Fork 0
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:
Ylian Saint-Hilaire 2020-05-28 16:24:48 -07:00
parent 40abf105ab
commit 56192d51a3
66 changed files with 980 additions and 970 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -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}
}

File diff suppressed because one or more lines are too long

View file

@ -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); }
}

File diff suppressed because one or more lines are too long

View file

@ -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 = '';