mirror of
				https://github.com/Ylianst/MeshCentral.git
				synced 2025-03-09 15:40:18 +00:00 
			
		
		
		
	Added AgentKey support, #3468
This commit is contained in:
		
							parent
							
								
									c029a82ae6
								
							
						
					
					
						commit
						b352cc8409
					
				
					 4 changed files with 5 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -303,6 +303,7 @@
 | 
			
		|||
          "userQuota": { "type": "integer" },
 | 
			
		||||
          "meshQuota": { "type": "integer" },
 | 
			
		||||
          "loginKey": { "type": [ "string", "array" ], "items": { "type": "string" }, "default": null, "description": "Requires that users add the value ?key=xxx in the URL in order to see the web site." },
 | 
			
		||||
          "agentKey": { "type": [ "string", "array" ], "items": { "type": "string" }, "default": null, "description": "Requires that agents add the value ?key=xxx in the URL in order to connect. This is not automatic and needs to be manually added in the meshagent.msh file." },
 | 
			
		||||
          "ipkvm": { "type": "boolean", "default": false, "description": "Set to true to enable IP KVM device support in this domain." },
 | 
			
		||||
          "minify": { "type": "boolean", "default": false, "description": "When enabled, the server will send reduced sided web pages." },
 | 
			
		||||
          "newAccounts": { "type": "boolean", "default": false, "description": "When set to true, allow new user accounts to be created from the login page." },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1242,6 +1242,8 @@ function CreateMeshCentralServer(config, args) {
 | 
			
		|||
            obj.config.domains[i].id = i;
 | 
			
		||||
            if (typeof obj.config.domains[i].loginkey == 'string') { obj.config.domains[i].loginkey = [obj.config.domains[i].loginkey]; }
 | 
			
		||||
            if ((obj.config.domains[i].loginkey != null) && (obj.common.validateAlphaNumericArray(obj.config.domains[i].loginkey, 1, 128) == false)) { console.log("ERROR: Invalid login key, must be alpha-numeric string with no spaces."); process.exit(); return; }
 | 
			
		||||
            if (typeof obj.config.domains[i].agentkey == 'string') { obj.config.domains[i].agentkey = [obj.config.domains[i].agentkey]; }
 | 
			
		||||
            if ((obj.config.domains[i].agentkey != null) && (obj.common.validateAlphaNumericArray(obj.config.domains[i].agentkey, 1, 128) == false)) { console.log("ERROR: Invalid agent key, must be alpha-numeric string with no spaces."); process.exit(); return; }
 | 
			
		||||
            if (typeof obj.config.domains[i].userallowedip == 'string') { if (obj.config.domains[i].userallowedip == '') { delete obj.config.domains[i].userallowedip; } else { obj.config.domains[i].userallowedip = obj.config.domains[i].userallowedip.split(','); } }
 | 
			
		||||
            if (typeof obj.config.domains[i].userblockedip == 'string') { if (obj.config.domains[i].userblockedip == '') { delete obj.config.domains[i].userblockedip; } else { obj.config.domains[i].userblockedip = obj.config.domains[i].userblockedip.split(','); } }
 | 
			
		||||
            if (typeof obj.config.domains[i].agentallowedip == 'string') { if (obj.config.domains[i].agentallowedip == '') { delete obj.config.domains[i].agentallowedip; } else { obj.config.domains[i].agentallowedip = obj.config.domains[i].agentallowedip.split(','); } }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -149,6 +149,7 @@
 | 
			
		|||
      "_AutoRemoveInactiveDevices": 37,
 | 
			
		||||
      "_DeviceSearchBarServerAndClientName": false,
 | 
			
		||||
      "_loginKey": [ "abc", "123" ],
 | 
			
		||||
      "_agentKey": [ "abc", "123" ],
 | 
			
		||||
      "_newAccounts": true,
 | 
			
		||||
      "_newAccountsUserGroups": [ "ugrp//xxxxxxxxxxxxxxxxx" ],
 | 
			
		||||
      "_userNameIsEmail": true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6282,6 +6282,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
 | 
			
		|||
            obj.app.ws(url + 'agent.ashx', function (ws, req) {
 | 
			
		||||
                var domain = checkAgentIpAddress(ws, req);
 | 
			
		||||
                if (domain == null) { parent.debug('web', 'Got agent connection with bad domain or blocked IP address ' + req.clientIp + ', holding.'); return; }
 | 
			
		||||
                if (domain.agentkey && ((req.query.key == null) || (domain.agentkey.indexOf(req.query.key) == -1))) { return; } // If agent key is required and not provided or not valid, just hold the websocket and do nothing.
 | 
			
		||||
                //console.log('Agent connect: ' + req.clientIp);
 | 
			
		||||
                try { obj.meshAgentHandler.CreateMeshAgent(obj, obj.db, ws, req, obj.args, domain); } catch (e) { console.log(e); }
 | 
			
		||||
            });
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue