Updated all MeshAgents.

Ylian Saint-Hilaire committed Apr 24, 2020 at 18:24 UTC d787ee07433819c4b3d0a3f112c031ec4eab7aa8
26 files changed +226 -226
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/meshagent_arm
Binary files a/agents/meshagent_arm and b/agents/meshagent_arm differ
agents/meshagent_arm-linaro
Binary files a/agents/meshagent_arm-linaro and b/agents/meshagent_arm-linaro differ
agents/meshagent_arm64
Binary files a/agents/meshagent_arm64 and b/agents/meshagent_arm64 differ
agents/meshagent_armhf
Binary files a/agents/meshagent_armhf and b/agents/meshagent_armhf differ
agents/meshagent_freebsd_x86-64
Binary files a/agents/meshagent_freebsd_x86-64 and b/agents/meshagent_freebsd_x86-64 differ
agents/meshagent_mips
Binary files a/agents/meshagent_mips and b/agents/meshagent_mips differ
agents/meshagent_osx-x86-64
Binary files a/agents/meshagent_osx-x86-64 and b/agents/meshagent_osx-x86-64 differ
agents/meshagent_pogo
Binary files a/agents/meshagent_pogo and b/agents/meshagent_pogo differ
agents/meshagent_poky
Binary files a/agents/meshagent_poky and b/agents/meshagent_poky differ
agents/meshagent_poky64
Binary files a/agents/meshagent_poky64 and b/agents/meshagent_poky64 differ
agents/meshagent_x86
Binary files a/agents/meshagent_x86 and b/agents/meshagent_x86 differ
agents/meshagent_x86-64
Binary files a/agents/meshagent_x86-64 and b/agents/meshagent_x86-64 differ
agents/meshagent_x86-64_nokvm
Binary files a/agents/meshagent_x86-64_nokvm and b/agents/meshagent_x86-64_nokvm differ
agents/meshagent_x86_nokvm
Binary files a/agents/meshagent_x86_nokvm and b/agents/meshagent_x86_nokvm differ
agents/modules_meshcore/identifiers.js deleted
-208
@@ -1,208 +0,0 @@
1 -/*
2 -Copyright 2019-2020 Intel Corporation
3 -
4 -Licensed under the Apache License, Version 2.0 (the "License");
5 -you may not use this file except in compliance with the License.
6 -You may obtain a copy of the License at
7 -
8 - http://www.apache.org/licenses/LICENSE-2.0
9 -
10 -Unless required by applicable law or agreed to in writing, software
11 -distributed under the License is distributed on an "AS IS" BASIS,
12 -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 -See the License for the specific language governing permissions and
14 -limitations under the License.
15 -*/
16 -
17 -function trimIdentifiers(val)
18 -{
19 - for(var v in val)
20 - {
21 - if (!val[v] || val[v] == 'None' || val[v] == '') { delete val[v]; }
22 - }
23 -}
24 -
25 -function linux_identifiers()
26 -{
27 - var identifiers = {};
28 - var ret = {};
29 - var values = {};
30 - if (!require('fs').existsSync('/sys/class/dmi/id')) { throw ('this platform does not have DMI statistics'); }
31 - var entries = require('fs').readdirSync('/sys/class/dmi/id');
32 - for(var i in entries)
33 - {
34 - if (require('fs').statSync('/sys/class/dmi/id/' + entries[i]).isFile())
35 - {
36 - ret[entries[i]] = require('fs').readFileSync('/sys/class/dmi/id/' + entries[i]).toString().trim();
37 -
38 - if (ret[entries[i]] == 'None') { delete ret[entries[i]];}
39 - }
40 - }
41 - identifiers['bios_date'] = ret['bios_date'];
42 - identifiers['bios_vendor'] = ret['bios_vendor'];
43 - identifiers['bios_version'] = ret['bios_version'];
44 - identifiers['board_name'] = ret['board_name'];
45 - identifiers['board_serial'] = ret['board_serial'];
46 - identifiers['board_vendor'] = ret['board_vendor'];
47 - identifiers['board_version'] = ret['board_version'];
48 - identifiers['product_uuid'] = ret['product_uuid'];
49 -
50 - values.identifiers = identifiers;
51 - values.linux = ret;
52 - trimIdentifiers(values.identifiers);
53 - return (values);
54 -}
55 -
56 -function windows_wmic_results(str)
57 -{
58 - var lines = str.trim().split('\r\n');
59 - var keys = lines[0].split(',');
60 - var i, key, keyval;
61 - var tokens;
62 - var result = [];
63 -
64 - for (i = 1; i < lines.length; ++i)
65 - {
66 - var obj = {};
67 - tokens = lines[i].split(',');
68 - for (key = 0; key < keys.length; ++key)
69 - {
70 - if (tokens[key].trim())
71 - {
72 - obj[keys[key].trim()] = tokens[key].trim();
73 - }
74 - }
75 - result.push(obj);
76 - }
77 - return (result);
78 -}
79 -
80 -
81 -function windows_identifiers()
82 -{
83 - var ret = { windows: {}}; values = {}; var items; var i; var item;
84 - var child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'bios', 'get', '/VALUE']);
85 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
86 - child.waitExit();
87 -
88 - var items = child.stdout.str.split('\r\r\n');
89 - for(i in items)
90 - {
91 - item = items[i].split('=');
92 - values[item[0]] = item[1];
93 - }
94 -
95 - ret['identifiers'] = {};
96 - ret['identifiers']['bios_date'] = values['ReleaseDate'];
97 - ret['identifiers']['bios_vendor'] = values['Manufacturer'];
98 - ret['identifiers']['bios_version'] = values['SMBIOSBIOSVersion'];
99 -
100 - child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'BASEBOARD', 'get', '/VALUE']);
101 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
102 - child.waitExit();
103 -
104 - var items = child.stdout.str.split('\r\r\n');
105 - for (i in items)
106 - {
107 - item = items[i].split('=');
108 - values[item[0]] = item[1];
109 - }
110 - ret['identifiers']['board_name'] = values['Product'];
111 - ret['identifiers']['board_serial'] = values['SerialNumber'];
112 - ret['identifiers']['board_vendor'] = values['Manufacturer'];
113 - ret['identifiers']['board_version'] = values['Version'];
114 -
115 - child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'CSProduct', 'get', '/VALUE']);
116 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
117 - child.waitExit();
118 -
119 - var items = child.stdout.str.split('\r\r\n');
120 - for (i in items)
121 - {
122 - item = items[i].split('=');
123 - values[item[0]] = item[1];
124 - }
125 - ret['identifiers']['product_uuid'] = values['UUID'];
126 - trimIdentifiers(ret.identifiers);
127 -
128 - child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'MEMORYCHIP', 'LIST', '/FORMAT:CSV']);
129 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
130 - child.waitExit();
131 - ret.windows.memory = windows_wmic_results(child.stdout.str);
132 -
133 - child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'OS', 'GET', '/FORMAT:CSV']);
134 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
135 - child.waitExit();
136 - ret.windows.osinfo = windows_wmic_results(child.stdout.str)[0];
137 -
138 - child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'PARTITION', 'LIST', '/FORMAT:CSV']);
139 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
140 - child.waitExit();
141 - ret.windows.partitions = windows_wmic_results(child.stdout.str);
142 -
143 - return (ret);
144 -}
145 -function macos_identifiers()
146 -{
147 - var ret = { identifiers: {} };
148 - var child;
149 -
150 - child = require('child_process').execFile('/bin/sh', ['sh']);
151 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
152 - child.stdin.write('ioreg -d2 -c IOPlatformExpertDevice | grep board-id | awk -F= \'{ split($2, res, "\\""); print res[2]; }\'\nexit\n');
153 - child.waitExit();
154 - ret.identifiers.board_name = child.stdout.str.trim();
155 -
156 - child = require('child_process').execFile('/bin/sh', ['sh']);
157 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
158 - child.stdin.write('ioreg -d2 -c IOPlatformExpertDevice | grep IOPlatformSerialNumber | awk -F= \'{ split($2, res, "\\""); print res[2]; }\'\nexit\n');
159 - child.waitExit();
160 - ret.identifiers.board_serial = child.stdout.str.trim();
161 -
162 - child = require('child_process').execFile('/bin/sh', ['sh']);
163 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
164 - child.stdin.write('ioreg -d2 -c IOPlatformExpertDevice | grep manufacturer | awk -F= \'{ split($2, res, "\\""); print res[2]; }\'\nexit\n');
165 - child.waitExit();
166 - ret.identifiers.board_vendor = child.stdout.str.trim();
167 -
168 - child = require('child_process').execFile('/bin/sh', ['sh']);
169 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
170 - child.stdin.write('ioreg -d2 -c IOPlatformExpertDevice | grep version | awk -F= \'{ split($2, res, "\\""); print res[2]; }\'\nexit\n');
171 - child.waitExit();
172 - ret.identifiers.board_version = child.stdout.str.trim();
173 -
174 - child = require('child_process').execFile('/bin/sh', ['sh']);
175 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
176 - child.stdin.write('ioreg -d2 -c IOPlatformExpertDevice | grep IOPlatformUUID | awk -F= \'{ split($2, res, "\\""); print res[2]; }\'\nexit\n');
177 - child.waitExit();
178 - ret.identifiers.product_uuid = child.stdout.str.trim();
179 -
180 - trimIdentifiers(ret.identifiers);
181 - return (ret);
182 -}
183 -
184 -switch(process.platform)
185 -{
186 - case 'linux':
187 - module.exports = { _ObjectID: 'identifiers', get: linux_identifiers };
188 - break;
189 - case 'win32':
190 - module.exports = { _ObjectID: 'identifiers', get: windows_identifiers };
191 - break;
192 - case 'darwin':
193 - module.exports = { _ObjectID: 'identifiers', get: macos_identifiers };
194 - break;
195 - default:
196 - module.exports = { get: function () { throw ('Unsupported Platform'); } };
197 - break;
198 -}
199 -
200 -
201 -// bios_date = BIOS->ReleaseDate
202 -// bios_vendor = BIOS->Manufacturer
203 -// bios_version = BIOS->SMBIOSBIOSVersion
204 -// board_name = BASEBOARD->Product = ioreg/board-id
205 -// board_serial = BASEBOARD->SerialNumber = ioreg/serial-number | ioreg/IOPlatformSerialNumber
206 -// board_vendor = BASEBOARD->Manufacturer = ioreg/manufacturer
207 -// board_version = BASEBOARD->Version
208 -
meshdesktopmultiplex.js
+218 -9
@@ -13,8 +13,54 @@
13 /*jshint esversion: 6 */
14 "use strict";
15
16 +
17 +/*
18 +--- KVM Commands ---
19 +MNG_KVM_NOP = 0,
20 +MNG_KVM_KEY = 1,
21 +MNG_KVM_MOUSE = 2,
22 +MNG_KVM_MOUSE_CURSOR = 88,
23 +MNG_KVM_MOUSE_MOVE = 89,
24 +MNG_KVM_PICTURE = 3,
25 +MNG_KVM_COPY = 4,
26 +MNG_KVM_COMPRESSION = 5,
27 +MNG_KVM_REFRESH = 6,
28 +MNG_KVM_SCREEN = 7,
29 +MNG_KVM_PAUSE = 8,
30 +MNG_TERMTEXT = 9,
31 +MNG_CTRLALTDEL = 10,
32 +MNG_KVM_GET_DISPLAYS = 11,
33 +MNG_KVM_SET_DISPLAY = 12,
34 +MNG_KVM_FRAME_RATE_TIMER = 13,
35 +MNG_KVM_INIT_TOUCH = 14,
36 +MNG_KVM_TOUCH = 15,
37 +MNG_KVM_CONNECTCOUNT = 16,
38 +MNG_KVM_MESSAGE = 17,
39 +MNG_ECHO = 21,
40 +MNG_JUMBO = 27,
41 +MNG_GETDIR = 50,
42 +MNG_FILEMOVE = 51,
43 +MNG_FILEDELETE = 52,
44 +MNG_FILECOPY = 53,
45 +MNG_FILECREATEDIR = 54,
46 +MNG_FILETRANSFER = 55,
47 +MNG_FILEUPLOAD = 56,
48 +MNG_FILESEARCH = 57,
49 +MNG_FILETRANSFER2 = 58,
50 +MNG_KVM_DISCONNECT = 59,
51 +MNG_GETDIR2 = 60, // Same as MNG_GETDIR but with date/time.
52 +MNG_FILEUPLOAD2 = 61, // Used for slot based fast upload.
53 +MNG_FILEDELETEREC = 62, // Same as MNG_FILEDELETE but recursive
54 +MNG_USERCONSENT = 63, // Used to notify management console of user consent state
55 +MNG_DEBUG = 64, // Debug/Logging Message for ILibRemoteLogging
56 +MNG_ERROR = 65,
57 +MNG_ENCAPSULATE_AGENT_COMMAND = 70
58 +*/
59 +
60 function CreateDesktopDecoder() {
61 var obj = {};
62 + obj.agent = null;
63 + obj.viewers = [];
64 obj.width = 0;
65 obj.height = 0;
66 obj.swidth = 0;
@@ -28,9 +74,139 @@ function CreateDesktopDecoder() {
74 obj.lastScreenSizeCounter = 0;
75 obj.firstData = null;
76 obj.lastData = null;
77 + obj.lastDisplayInfoData = null;
78 + obj.desktopPaused = true;
79 + obj.imageCompression = 50;
80 + obj.imageScaling = 1024;
81 + obj.imageFrameRate = 50;
82 +
83 + obj.addPeer = function (peer) {
84 + if (peer.req.query.browser) {
85 + console.log('addPeer-viewer');
86 +
87 + // This is a viewer
88 + if (obj.viewers.indexOf(peer) >= 0) return true;
89 + obj.viewers.push(peer);
90 +
91 + // Setup the viewer
92 + peer.desktopPaused = true;
93 + peer.imageCompression = 30;
94 + peer.imageScaling = 1024;
95 + peer.imageFrameRate = 100;
96 + peer.dataPtr = obj.firstData;
97 + } else {
98 + console.log('addPeer-agent');
99 + if (obj.agent != null) return false;
100 +
101 + // This is the agent
102 + obj.agent = peer;
103 +
104 + // Setup the agent
105 +
106 + }
107 + return true;
108 + }
109 +
110 + obj.removePeer = function (peer) {
111 + if (peer == agent) {
112 + console.log('removePeer-agent');
113 + // Clean up the agent
114 +
115 + // Agent has disconnected, disconnect everyone.
116 + } else {
117 + console.log('removePeer-viewer');
118 + // Remove a viewer
119 + var i = obj.viewers.indexOf(peer);
120 + if (i == -1) return false;
121 + obj.viewers.splice(i, 1);
122 +
123 + // Clean up the viewer
124 +
125 + }
126 + return true;
127 + }
128 +
129 + // Process data coming from the agent or any viewers
130 + obj.processData = function (peer, data) {
131 + if (peer == obj.agent) { obj.processAgentData(data); } else { obj.processViewerData(peer, data); }
132 + }
133
134 + // Process incoming viewer data
135 + obj.processViewerData = function (viewer, data) {
136 + //console.log('ViewerData', data.length);
137 + if ((typeof data != 'object') || (data.length < 4)) return; // Ignore all control traffic for now (WebRTC)
138 + var command = data.readUInt16BE(0);
139 + var cmdsize = data.readUInt16BE(2);
140 + switch (command) {
141 + case 1:// Key Events, forward to agent
142 + //console.log('Viewer-Keys');
143 + break;
144 + case 2:// Mouse events, forward to agent
145 + //console.log('Viewer-Mouse');
146 + break;
147 + case 5:// Compression
148 + if (data.length < 10) return;
149 + //viewer.imageType = data[4]; // Always 1=JPEG
150 + viewer.imageCompression = data[5];
151 + viewer.imageScaling = data.readUInt16BE(6);
152 + viewer.imageFrameRate = data.readUInt16BE(8);
153 + //console.log('Viewer-Compression', viewer.imageCompression, viewer.imageScaling, viewer.imageFrameRate);
154 +
155 + // See if this changes anything
156 + var viewersimageCompression = null;
157 + var viewersimageScaling = null;
158 + var viewersimageFrameRate = null;
159 + for (var i in obj.viewers) {
160 + if ((viewersimageCompression == null) || (obj.viewers[i].imageCompression > viewersimageCompression)) { viewersimageCompression = obj.viewers[i].imageCompression; };
161 + if ((viewersimageScaling == null) || (obj.viewers[i].imageScaling > viewersimageScaling)) { viewersimageScaling = obj.viewers[i].imageScaling; };
162 + if ((viewersimageFrameRate == null) || (obj.viewers[i].imageFrameRate < viewersimageFrameRate)) { viewersimageFrameRate = obj.viewers[i].imageFrameRate; };
163 + }
164 + if ((obj.imageCompression != viewersimageCompression) || (obj.imageScaling != viewersimageScaling) || (obj.imageFrameRate != viewersimageFrameRate)) {
165 + // Update and send to agent new compression settings
166 + obj.imageCompression = viewersimageCompression;
167 + obj.imageScaling = viewersimageScaling;
168 + obj.imageFrameRate = viewersimageFrameRate
169 + console.log('Send-Agent-Compression', obj.imageCompression, obj.imageScaling, obj.imageFrameRate);
170 + // obj.send(String.fromCharCode(0x00, 0x05, 0x00, 0x0A, type, obj.CompressionLevel) + obj.shortToStr(obj.ScalingLevel) + obj.shortToStr(obj.FrameRateTimer));
171 + }
172 + break;
173 + case 6:// Refresh, handle this on the server
174 + console.log('Viewer-Refresh');
175 + viewer.dataPtr = obj.firstData; // Start over
176 + // TODO
177 + break;
178 + case 8:// Pause and unpause
179 + if (data.length != 5) break;
180 + var pause = data[4]; // 0 = Unpause, 1 = Pause
181 + if (viewer.desktopPaused == (pause == 1)) break;
182 + viewer.desktopPaused = (pause == 1);
183 + //console.log('Viewer-' + ((pause == 1)?'Pause':'UnPause'));
184 + var viewersPaused = true;
185 + for (var i in obj.viewers) { if (obj.viewers[i].desktopPaused == false) { viewersPaused = false; }; }
186 + if (viewersPaused != obj.desktopPaused) {
187 + obj.desktopPaused = viewersPaused;
188 + console.log('Send-Agent-' + ((viewersPaused == 1)?'Pause':'UnPause'));
189 + // TODO
190 + }
191 + if (viewer.desktopPaused == false) {
192 + viewer.dataPtr = obj.firstData; // Start over
193 + // TODO
194 + }
195 + break;
196 + case 10:// CTRL-ALT-DEL, forward to agent
197 + break;
198 + case 14:// Touch setup
199 + break;
200 + default:
201 + console.log('Un-handled viewer command: ' + command);
202 + break;
203 + }
204 + }
205 +
206 + // Process incoming agent data
207 obj.processAgentData = function (data) {
33 - if ((typeof data != 'object') || (data.length < 4)) return;
208 + //console.log('AgentData', data.length);
209 + if ((typeof data != 'object') || (data.length < 4)) return; // Ignore all control traffic for now (WebRTC)
210 var command = data.readUInt16BE(0);
211 var cmdsize = data.readUInt16BE(2);
212 if ((command == 27) && (cmdsize == 8)) {
@@ -89,6 +265,8 @@ function CreateDesktopDecoder() {
265 //console.log('list', xx);
266 //console.log('images', obj.imagesCount);
267
268 + break;
269 + case 4: // Tile Copy, do nothing.
270 break;
271 case 7: // Screen Size, clear the screen state and compute the tile count
272 obj.counter++;
@@ -111,13 +289,45 @@ function CreateDesktopDecoder() {
289 obj.lastData = obj.counter;
290
291 // Add viewers must be set to start at "obj.counter"
114 - // TODO
292 + for (var i in obj.viewers) {
293 + obj.viewers[i].dataPtr = obj.counter;
294 + // TODO
295 + }
296
297 //console.log("ScreenSize", obj.width, obj.height, obj.swidth, obj.sheight, obj.swidth * obj.sheight);
298 + break;
299 + case 11: // GetDisplays
300 + // Store and send this to all viewers right away
301 + obj.lastDisplayInfoData = data;
302 + // TODO
303 +
304 + break;
305 + case 14: // KVM_INIT_TOUCH
306 + break;
307 + case 15: // KVM_TOUCH
308 + break;
309 + case 16: // MNG_KVM_CONNECTCOUNT
310 + break;
311 + case 17: // MNG_KVM_MESSAGE
312 +
313 + // Send this to all viewers right away
314 + // TODO
315 +
316 + break;
317 + case 65: // Alert
318 +
319 + // Send this to all viewers right away
320 + // TODO
321 +
322 + break;
323 + case 88: // MNG_KVM_MOUSE_CURSOR
324 +
325 + // Send this to all viewers right away
326 + // TODO
327 +
328 break;
329 default:
119 - // 11, 14, 88
120 - console.log('Un-handled command: ' + command);
330 + console.log('Un-handled agent command: ' + command);
331 break;
332 }
333 }
@@ -323,10 +533,9 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
533 else if ((typeof parent.parent.args.agentpong == 'number') && (obj.pongtimer == null)) { obj.pongtimer = setInterval(sendPong, parent.parent.args.agentpong * 1000); }
534
535 // Setup the desktop decoder
326 - var agentPeer = null;
327 - if (obj.req.query.browser == null) { agentPeer = obj; }
328 - else if (obj.peer.req.query.browser == null) { agentPeer = obj.peer; }
329 - if (agentPeer != null) { agentPeer.deskDecoder = CreateDesktopDecoder(); }
536 + obj.deskDecoder = obj.peer.deskDecoder = CreateDesktopDecoder();
537 + obj.deskDecoder.addPeer(obj);
538 + obj.deskDecoder.addPeer(obj.peer);
539
540 // Setup session recording
541 var sessionUser = obj.user;
@@ -425,7 +634,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
634 // When data is received from the mesh relay web socket
635 ws.on('message', function (data) {
636 // If this data was received by the agent, decode it.
428 - if (this.me.deskDecoder != null) { this.me.deskDecoder.processAgentData(data); }
637 + if (this.me.deskDecoder != null) { this.me.deskDecoder.processData(this.me, data); }
638
639 //console.log(typeof data, data.length);
640 if (this.peer != null) {
package.json
+1 -2
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.5.13",
3 + "version": "0.5.14",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",
@@ -40,7 +40,6 @@
40 "express-handlebars": "^3.1.0",
41 "express-ws": "^4.0.0",
42 "ipcheck": "^0.1.0",
43 - "minify-js": "0.0.4",
43 "minimist": "^1.2.0",
44 "multiparty": "^4.2.1",
45 "nedb": "^1.8.0",
public/scripts/agent-desktop-0.0.2.js
+1 -1
@@ -39,7 +39,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
39 obj.oldie = false;
40 obj.CompressionLevel = 50;
41 obj.ScalingLevel = 1024;
42 - obj.FrameRateTimer = 50;
42 + obj.FrameRateTimer = 100;
43 obj.FirstDraw = false;
44
45 obj.ScreenWidth = 960;
translate/translate.json
+1 -1
@@ -29810,4 +29810,4 @@
29810 ]
29811 }
29812 ]
29813 -}
29813 +}
\ No newline at end of file
views/default.handlebars
+5 -5
@@ -1150,7 +1150,7 @@
1150 // Process server-side web state
1151 var webState = '{{{webstate}}}';
1152 if (webState != '') { webState = JSON.parse(decodeURIComponent(webState)); }
1153 - for (var i in webState) { localStorage.setItem(i, webState[i]); }
1153 + for (var i in webState) { if (i != 'desktopsettings') { localStorage.setItem(i, webState[i]); } }
1154 if (!webState.loctag) { try { delete localStorage.removeItem('loctag'); } catch (ex) { } }
1155
1156 var args, urlargs;
@@ -3404,7 +3404,7 @@
3404 QV('d7meshkvm', true);
3405 d7bitmapquality.value = multidesktopsettings.quality;
3406 d7bitmapscaling.value = multidesktopsettings.scaling;
3407 - if (multidesktopsettings.framerate) { d7framelimiter.value = multidesktopsettings.framerate; } else { d7framelimiter.value = 1000; }
3407 + if (multidesktopsettings.framerate) { d7framelimiter.value = multidesktopsettings.framerate; } else { d7framelimiter.value = 100; }
3408 setDialogMode(7, "Remote Desktop Settings", 3, showMultiDesktopSettingsChanged);
3409 }
3410
@@ -3447,7 +3447,7 @@
3447 //desk.onConsoleMessageChange = function () { console.log('CONSOLEMSG:', desk.consoleMessage); }
3448 desk.m.CompressionLevel = multidesktopsettings.quality;
3449 desk.m.ScalingLevel = multidesktopsettings.scaling;
3450 - desk.m.FrameRateTimer = multidesktopsettings.framerate;
3450 + if (multidesktopsettings.framerate) { desk.m.FrameRateTimer = multidesktopsettings.framerate; }
3451 //desk.m.onDisplayinfo = deskDisplayInfo;
3452 //desk.m.onScreenSizeChange = deskAdjust;
3453 if (debugmode > 0) { desk.m.onScreenSizeChange = mdeskAdjust; } // Multi-Desktop Adjust
@@ -5931,7 +5931,7 @@
5931 }
5932 desktop.m.CompressionLevel = desktopsettings.quality; // Number from 1 to 100. 50 or less is best.
5933 desktop.m.ScalingLevel = desktopsettings.scaling;
5934 - desktop.m.FrameRateTimer = desktopsettings.framerate;
5934 + if (desktopsettings.framerate) { desktop.m.FrameRateTimer = desktopsettings.framerate; }
5935 desktop.m.onDisplayinfo = deskDisplayInfo;
5936 desktop.m.onScreenSizeChange = deskAdjust;
5937 desktop.Start(desktopNode._id);
@@ -6077,7 +6077,7 @@
6077 d7bitmapquality.value = 40; // Default value
6078 if (ops.indexOf(parseInt(desktopsettings.quality)) >= 0) { d7bitmapquality.value = desktopsettings.quality; }
6079 d7bitmapscaling.value = desktopsettings.scaling;
6080 - if (desktopsettings.framerate) { d7framelimiter.value = desktopsettings.framerate; }
6080 + if (desktopsettings.framerate) { d7framelimiter.value = desktopsettings.framerate; } else { d7framelimiter.value = 100; }
6081 if (desktopsettings.localkeymap) { d7localKeyMap.checked = desktopsettings.localkeymap; }
6082 QV('deskFocusBtn', (desktop != null) && (desktop.contype == 2) && (desktop.state != 0) && (desktopsettings.showfocus));
6083 }