Node 6.x cbor fix.

Ylian Saint-Hilaire committed Aug 7, 2019 at 14:25 UTC f7dd9cfcbfa11dac81512493cb90b0b81d72cc07
3 files changed +54 -3
package.json
+2 -2
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.3.9-i",
3 + "version": "0.3.9-j",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",
@@ -29,7 +29,7 @@
29 "dependencies": {
30 "archiver": "^3.0.0",
31 "body-parser": "^1.19.0",
32 - "cbor": "^4.1.5",
32 + "cbor": "4.1.5",
33 "compression": "^1.7.4",
34 "connect-redis": "^3.4.1",
35 "cookie-session": "^2.0.0-beta.3",
views/default.handlebars
+1 -1
@@ -1514,7 +1514,7 @@
1514 x += '<hr />'
1515 if (net.name) { x += addHtmlValue2('Name', '<b>' + EscapeHtml(net.name) + '</b>'); }
1516 if (net.desc) { x += addHtmlValue2('Description', EscapeHtml(net.desc).replace('(R)', '&reg;').replace('(r)', '&reg;')); }
1517 - if (net.dnssuffix) { x += addHtmlValue2('DNS suffix', EscapeHtml(net.dnssuffix)); }
1517 + if (net.dnssuffix) { x += addHtmlValue2('DNS suffix', EscapeHtml(net.dnssuffix) + ' <img src="images/link4.png" title="Copy name to clipboard" style="cursor:pointer" onclick=copyTextToClip2(\"' + encodeURIComponent(net.dnssuffix) + '\") width=10 height=10>'); }
1518 if (net.mac) { x += addHtmlValue2('MAC address', '<a href="https://dnslytics.com/mac-address-lookup/' + net.mac.substring(0, 6) + '" rel="noreferrer noopener" target="MeshMACLoopup">' + EscapeHtml(net.mac.toLowerCase()) + '</a> <img src="images/link4.png" title="Copy MAC address to clipboard" style="cursor:pointer" onclick=copyTextToClip2(\"' + encodeURIComponent(net.mac.toLowerCase()) + '\") width=10 height=10>'); }
1519 if (net.v4addr) { x += addHtmlValue2('IPv4 address', EscapeHtml(net.v4addr) + ' <img src="images/link4.png" title="Copy address to clipboard" style="cursor:pointer" onclick=copyTextToClip2(\"' + encodeURIComponent(net.v4addr) + '\") width=10 height=10>'); }
1520 if (net.v4mask) { x += addHtmlValue2('IPv4 mask', EscapeHtml(net.v4mask) + ' <img src="images/link4.png" title="Copy address to clipboard" style="cursor:pointer" onclick=copyTextToClip2(\"' + encodeURIComponent(net.v4mask) + '\") width=10 height=10>'); }
webserver.js
+51
@@ -1960,6 +1960,29 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1960 }
1961 }
1962
1963 + /*
1964 + // Setup session recording if needed
1965 + if (domain.sessionrecording == true || ((typeof domain.sessionrecording == 'object') && ((domain.sessionrecording.protocols == null) || (domain.sessionrecording.protocols.indexOf(100) >= 0)))) { // TODO 100
1966 + var recFilename = 'relaysession' + ((domain.id == '') ? '' : '-') + domain.id + '-' + Date.now() + '-' + 'AAAAAAA' + '.mcrec'; // TODO: Random ID
1967 + var recFullFilename = null;
1968 + if (domain.sessionrecording.filepath) {
1969 + try { obj.fs.mkdirSync(domain.sessionrecording.filepath); } catch (e) { }
1970 + recFullFilename = obj.path.join(domain.sessionrecording.filepath, recFilename);
1971 + } else {
1972 + try { obj.fs.mkdirSync(parent.recordpath); } catch (e) { }
1973 + recFullFilename = obj.path.join(parent.recordpath, recFilename);
1974 + }
1975 + var fd = obj.fs.openSync(recFullFilename, 'w');
1976 + if (fd != null) {
1977 + // Write the recording file header
1978 + //console.log({ magic: 'MeshCentralRelaySession', ver: 1, userid: user._id, username: user.name, ipaddr: cleanRemoteAddr(ws._socket.remoteAddress), nodeid: node._id, intelamt: true, protocol: parseInt(req.query.p), time: new Date().toLocaleString() });
1979 + var firstBlock = JSON.stringify({ magic: 'MeshCentralRelaySession', ver: 1, userid: user._id, username: user.name, ipaddr: cleanRemoteAddr(ws._socket.remoteAddress), nodeid: node._id, intelamt: true, protocol: parseInt(req.query.p), time: new Date().toLocaleString() })
1980 + recordingEntry(fd, 1, 0, firstBlock, function () { });
1981 + ws.logfile = { fd: fd, lock: false };
1982 + }
1983 + }
1984 + */
1985 +
1986 // If Intel AMT CIRA connection is available, use it
1987 if (((conn & 2) != 0) && (parent.mpsserver.ciraConnections[req.query.host] != null)) {
1988 Debug(1, 'Opening relay CIRA channel connection to ' + req.query.host + '.');
@@ -3390,5 +3413,33 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
3413 function checkAmtPassword(p) { return (p.length > 7) && (/\d/.test(p)) && (/[a-z]/.test(p)) && (/[A-Z]/.test(p)) && (/\W/.test(p)); }
3414 function getRandomAmtPassword() { var p; do { p = Buffer.from(obj.crypto.randomBytes(9), 'binary').toString('base64').split('/').join('@'); } while (checkAmtPassword(p) == false); return p; }
3415
3416 + // Clean a IPv6 address that encodes a IPv4 address
3417 + function cleanRemoteAddr(addr) { if (addr.startsWith('::ffff:')) { return addr.substring(7); } else { return addr; } }
3418 +
3419 + // Record a new entry in a recording log
3420 + function recordingEntry(fd, type, flags, data, func) {
3421 + try {
3422 + if (typeof data == 'string') {
3423 + // String write
3424 + var blockData = Buffer.from(data), header = Buffer.alloc(16); // Header: Type (2) + Flags (2) + Size(4) + Time(8)
3425 + header.writeInt16BE(type, 0); // Type (1 = Header, 2 = Network Data)
3426 + header.writeInt16BE(flags, 2); // Flags (1 = Binary, 2 = User)
3427 + header.writeInt32BE(blockData.length, 4); // Size
3428 + header.writeIntBE(new Date(), 10, 6); // Time
3429 + var block = Buffer.concat([header, blockData]);
3430 + obj.fs.write(fd, block, 0, block.length, func);
3431 + } else {
3432 + // Binary write
3433 + var header = Buffer.alloc(16); // Header: Type (2) + Flags (2) + Size(4) + Time(8)
3434 + header.writeInt16BE(type, 0); // Type (1 = Header, 2 = Network Data)
3435 + header.writeInt16BE(flags | 1, 2); // Flags (1 = Binary, 2 = User)
3436 + header.writeInt32BE(data.length, 4); // Size
3437 + header.writeIntBE(new Date(), 10, 6); // Time
3438 + var block = Buffer.concat([header, data]);
3439 + obj.fs.write(fd, block, 0, block.length, func);
3440 + }
3441 + } catch (ex) { console.log(ex); func(); }
3442 + }
3443 +
3444 return obj;
3445 };
\ No newline at end of file