mirror of
				https://github.com/Ylianst/MeshCentral.git
				synced 2025-10-29 23:35:02 -04:00 
			
		
		
		
	Added support for agent with improved key input.
This commit is contained in:
		
							parent
							
								
									0e99551459
								
							
						
					
					
						commit
						0790376119
					
				
							
								
								
									
										
											BIN
										
									
								
								agents/agents-new/MeshService-signed.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								agents/agents-new/MeshService-signed.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								agents/agents-new/MeshService.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								agents/agents-new/MeshService.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								agents/agents-new/MeshService64-signed.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								agents/agents-new/MeshService64-signed.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								agents/agents-new/MeshService64.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								agents/agents-new/MeshService64.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								agents/agents-old/MeshService-signed.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								agents/agents-old/MeshService-signed.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								agents/agents-old/MeshService.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								agents/agents-old/MeshService.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								agents/agents-old/MeshService64-signed.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								agents/agents-old/MeshService64-signed.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								agents/agents-old/MeshService64.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								agents/agents-old/MeshService64.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -171,10 +171,9 @@ module.exports.CreateLetsEncrypt = function (parent) { | ||||
| 
 | ||||
|             // Create Certificate Request (CSR)
 | ||||
|             obj.log("Creating certificate request..."); | ||||
|             acme.forge.createCsr({ | ||||
|                 commonName: obj.leDomains[0], | ||||
|                 altNames: obj.leDomains | ||||
|             }).then(function (r) { | ||||
|             var certRequest = { commonName: obj.leDomains[0] }; | ||||
|             if (obj.leDomains.length > 1) { certRequest.altNames = obj.leDomains; } | ||||
|             acme.forge.createCsr(certRequest).then(function (r) { | ||||
|                 var csr = r[1]; | ||||
|                 obj.tempPrivateKey = r[0]; | ||||
|                 obj.log("Requesting certificate from Let's Encrypt..."); | ||||
|  | ||||
							
								
								
									
										2
									
								
								public/scripts/agent-desktop-0.0.2-min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								public/scripts/agent-desktop-0.0.2-min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -35,7 +35,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) { | ||||
|     obj.firstUpKeys = []; | ||||
|     obj.stopInput = false; | ||||
|     obj.localKeyMap = true; | ||||
|     obj.remoteKeyMap = null; // 'fr-CA'
 | ||||
|     obj.remoteKeyMap = true; // If false, the remote keyboard mapping is not used, only works on Windows.
 | ||||
|     obj.pressedKeys = []; | ||||
| 
 | ||||
|     obj.sessionid = 0; | ||||
| @ -282,7 +282,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) { | ||||
|     // Keyboard and Mouse I/O.
 | ||||
|     obj.MouseButton = { "NONE": 0x00, "LEFT": 0x02, "RIGHT": 0x08, "MIDDLE": 0x20 }; | ||||
|     obj.KeyAction = { "NONE": 0, "DOWN": 1, "UP": 2, "SCROLL": 3, "EXUP": 4, "EXDOWN": 5, "DBLCLICK": 6 }; | ||||
|     obj.InputType = { "KEY": 1, "MOUSE": 2, "CTRLALTDEL": 10, "TOUCH": 15, "KEYWITHLAYOUT": 85 }; | ||||
|     obj.InputType = { "KEY": 1, "MOUSE": 2, "CTRLALTDEL": 10, "TOUCH": 15, "KEYUNICODE": 85 }; | ||||
|     obj.Alternate = 0; | ||||
| 
 | ||||
|     var convertKeyCodeTable = { | ||||
| @ -399,16 +399,15 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) { | ||||
|                 if (i != -1) { obj.pressedKeys.splice(i, 1); } // Remove the key press from the pressed array
 | ||||
|             } | ||||
| 
 | ||||
|             if ((obj.remoteKeyMap == null) || (obj.remoteKeyMap == '')) { | ||||
|                 // No remote keyboard mapping
 | ||||
|                 obj.send(String.fromCharCode(0x00, obj.InputType.KEY, 0x00, 0x06, (action - 1), kc)); | ||||
|             } else { | ||||
|                 // With remote keyboard mapping
 | ||||
|                 obj.send(String.fromCharCode(0x00, obj.InputType.KEYWITHLAYOUT, 0x00, 0x16, (action - 1), kc) + obj.remoteKeyMap + ('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'.substring(0, 16 - obj.remoteKeyMap.length))); | ||||
|             } | ||||
|             obj.send(String.fromCharCode(0x00, obj.InputType.KEY, 0x00, 0x06, (action - 1), kc)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     obj.SendKeyUnicode = function (action, val) { | ||||
|         if (obj.State != 3) return; | ||||
|         obj.send(String.fromCharCode(0x00, obj.InputType.KEYUNICODE, 0x00, 0x07, (action - 1)) + ShortToStr(val)); | ||||
|     } | ||||
| 
 | ||||
|     obj.sendcad = function() { obj.SendCtrlAltDelMsg(); } | ||||
| 
 | ||||
|     obj.SendCtrlAltDelMsg = function () { | ||||
| @ -528,13 +527,30 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) { | ||||
|     obj.xxMouseDblClick = function (e) { if (obj.State == 3) obj.SendMouseMsg(obj.KeyAction.DBLCLICK, e); if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; } | ||||
|     obj.xxDOMMouseScroll = function (e) { if (obj.State == 3) { obj.SendMouseMsg(obj.KeyAction.SCROLL, e); return false; } return true; } | ||||
|     obj.xxMouseWheel = function (e) { if (obj.State == 3) { obj.SendMouseMsg(obj.KeyAction.SCROLL, e); return false; } return true; } | ||||
|     obj.xxKeyUp = function (e) { if (obj.State == 3) { obj.SendKeyMsg(obj.KeyAction.UP, e); } if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; } | ||||
|     obj.xxKeyDown = function (e) { if (obj.State == 3) { obj.SendKeyMsg(obj.KeyAction.DOWN, e); } if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; } | ||||
|     obj.xxKeyPress = function (e) { if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; } | ||||
|     obj.xxKeyUp = function (e) { | ||||
|         if ((e.key != 'Dead') && (obj.State == 3)) { | ||||
|             if ((e.key.length == 1) && (obj.remoteKeyMap == false)) { obj.SendKeyUnicode(obj.KeyAction.UP, e.key.charCodeAt(0)); } else { obj.SendKeyMsg(obj.KeyAction.UP, e); } | ||||
|         } | ||||
|         if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; | ||||
|     } | ||||
|     obj.xxKeyDown = function (e) { | ||||
|         if ((e.key != 'Dead') && (obj.State == 3)) { | ||||
|             if ((e.key.length == 1) && (obj.remoteKeyMap == false)) { obj.SendKeyUnicode(obj.KeyAction.DOWN, e.key.charCodeAt(0)); } else { obj.SendKeyMsg(obj.KeyAction.DOWN, e); } | ||||
|         } | ||||
|         if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; | ||||
|     } | ||||
|     obj.xxKeyPress = function (e) { | ||||
|         if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; | ||||
|     } | ||||
| 
 | ||||
|     // Key handlers
 | ||||
|     obj.handleKeys = function (e) { if (obj.stopInput == true || desktop.State != 3) return false; return obj.xxKeyPress(e); } | ||||
|     obj.handleKeys = function (e) { | ||||
|         //console.log('keypress', e.code, e.key, e.keyCode, (e.key.length == 1) ? e.key.charCodeAt(0) : 0);
 | ||||
|         if (obj.stopInput == true || desktop.State != 3) return false; | ||||
|         return obj.xxKeyPress(e); | ||||
|     } | ||||
|     obj.handleKeyUp = function (e) { | ||||
|         //console.log('keyup', e.code, e.key, e.keyCode, (e.key.length == 1)?e.key.charCodeAt(0):0);
 | ||||
|         if (obj.stopInput == true || desktop.State != 3) return false; | ||||
|         if (obj.firstUpKeys.length < 5) { | ||||
|             obj.firstUpKeys.push(e.keyCode); | ||||
| @ -543,6 +559,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) { | ||||
|         return obj.xxKeyUp(e); | ||||
|     } | ||||
|     obj.handleKeyDown = function (e) { | ||||
|         //console.log('keydown', e.code, e.key, e.keyCode, (e.key.length == 1) ? e.key.charCodeAt(0) : 0);
 | ||||
|         if (obj.stopInput == true || desktop.State != 3) return false; | ||||
|         return obj.xxKeyDown(e); | ||||
|     } | ||||
|  | ||||
							
								
								
									
										2
									
								
								public/scripts/amt-wsman-0.2.0-min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								public/scripts/amt-wsman-0.2.0-min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										25
									
								
								webserver.js
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								webserver.js
									
									
									
									
									
								
							| @ -3198,6 +3198,13 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) { | ||||
|             if ((fields.overwriteFiles != null) && (fields.overwriteFiles.length == 1) && (fields.overwriteFiles[0] == 'on')) { cmd.overwrite = true; } | ||||
|             if ((fields.createFolder != null) && (fields.createFolder.length == 1) && (fields.createFolder[0] == 'on')) { cmd.createFolder = true; } | ||||
| 
 | ||||
|             // Check if we have al least one target path
 | ||||
|             if ((cmd.windowsPath == null) && (cmd.linuxPath == null)) { | ||||
|                 parent.debug('web', 'Batch upload error, invalid fields: ' + JSON.stringify(fields)); | ||||
|                 res.send(''); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             // Get server temporary path
 | ||||
|             var serverpath = obj.path.join(obj.filespath, 'tmp') | ||||
|             try { obj.fs.mkdirSync(obj.parent.filespath); } catch (ex) { } | ||||
| @ -3226,6 +3233,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) { | ||||
|                 obj.GetNodeWithRights(cmd.domain, cmd.user, cmd.nodeids[i], function (node, rights, visible) { | ||||
|                     if ((node == null) || ((rights & 8) == 0) || (visible == false)) return; // We don't have remote control rights to this device
 | ||||
|                     var agentPath = ((node.agent.id > 0) && (node.agent.id < 5)) ? cmd.windowsPath : cmd.linuxPath; | ||||
|                     if (agentPath == null) return; | ||||
| 
 | ||||
|                     // Event that this operation is being performed.
 | ||||
|                     var targets = obj.CreateNodeDispatchTargets(node.meshid, node._id, ['server-users', cmd.user._id]); | ||||
| @ -3235,18 +3243,11 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) { | ||||
| 
 | ||||
|                     // Send the agent commands to perform the batch upload operation
 | ||||
|                     for (var f in cmd.files) { | ||||
|                         try { | ||||
|                             //if ((agentPath != null) && (cmd.files[f].name != null)) {
 | ||||
|                                 const acmd = { action: 'wget', overwrite: cmd.overwrite, createFolder: cmd.createFolder, urlpath: '/agentdownload.ashx?c=' + obj.parent.encodeCookie({ a: 'tmpdl', d: cmd.domain.id, nid: node._id, f: cmd.files[f].target }, obj.parent.loginCookieEncryptionKey), path: obj.path.join(agentPath, cmd.files[f].name), folder: agentPath, servertlshash: tlsCertHash }; | ||||
|                                 var agent = obj.wsagents[node._id]; | ||||
|                                 if (agent != null) { try { agent.send(JSON.stringify(acmd)); } catch (ex) { } } | ||||
|                                 // TODO: Add support for peer servers.
 | ||||
|                             //}
 | ||||
|                         } catch (ex) { | ||||
|                             parent.debug('web', 'Exception: ' + ex); | ||||
|                             parent.debug('web', 'AgentPath: ' + agentPath); | ||||
|                             parent.debug('web', 'Command: ' + JSON.stringify(cmd)); | ||||
|                             parent.debug('web', 'AgentId: ' + node.agent.id); | ||||
|                         if (cmd.files[f].name != null) { | ||||
|                             const acmd = { action: 'wget', overwrite: cmd.overwrite, createFolder: cmd.createFolder, urlpath: '/agentdownload.ashx?c=' + obj.parent.encodeCookie({ a: 'tmpdl', d: cmd.domain.id, nid: node._id, f: cmd.files[f].target }, obj.parent.loginCookieEncryptionKey), path: obj.path.join(agentPath, cmd.files[f].name), folder: agentPath, servertlshash: tlsCertHash }; | ||||
|                             var agent = obj.wsagents[node._id]; | ||||
|                             if (agent != null) { try { agent.send(JSON.stringify(acmd)); } catch (ex) { } } | ||||
|                             // TODO: Add support for peer servers.
 | ||||
|                         } | ||||
|                     } | ||||
|                 }); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user