mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-12-23 05:42:13 +03:00
Fixed TCP/UDP server relay problem.
This commit is contained in:
parent
762347ed5e
commit
d4ee38842b
20
meshrelay.js
20
meshrelay.js
@ -80,44 +80,36 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
|
|||||||
var agent = parent.wsagents[command.nodeid];
|
var agent = parent.wsagents[command.nodeid];
|
||||||
if (agent != null) {
|
if (agent != null) {
|
||||||
// Check if we have permission to send a message to that node
|
// Check if we have permission to send a message to that node
|
||||||
parent.GetNodeWithRights(domain, user, agent.dbNodeKey, function (node, rights, visible) {
|
rights = parent.GetNodeRights(user, agent.dbMeshKey, agent.dbNodeKey);
|
||||||
mesh = parent.meshes[agent.dbMeshKey];
|
mesh = parent.meshes[agent.dbMeshKey];
|
||||||
if ((node != null) && (rights != null) && (mesh != null) || ((rights & 16) != 0)) { // TODO: 16 is console permission, may need more gradular permission checking
|
if ((rights != null) && (mesh != null) || ((rights & 16) != 0)) { // TODO: 16 is console permission, may need more gradular permission checking
|
||||||
if (ws.sessionId) { command.sessionid = ws.sessionId; } // Set the session id, required for responses.
|
if (ws.sessionId) { command.sessionid = ws.sessionId; } // Set the session id, required for responses.
|
||||||
command.rights = rights.rights; // Add user rights flags to the message
|
command.rights = rights.rights; // Add user rights flags to the message
|
||||||
command.consent = 0;
|
command.consent = mesh.consent; // Add user consent
|
||||||
if (typeof domain.userconsentflags == 'number') { command.consent |= domain.userconsentflags; } // Add server required consent flags
|
if (typeof domain.userconsentflags == 'number') { command.consent |= domain.userconsentflags; } // Add server required consent flags
|
||||||
if (typeof mesh.consent == 'number') { command.consent |= mesh.consent; } // Add device group user consent
|
|
||||||
if (typeof node.consent == 'number') { command.consent |= node.consent; } // Add node user consent
|
|
||||||
if (typeof user.consent == 'number') { command.consent |= user.consent; } // Add user consent
|
|
||||||
command.username = user.name; // Add user name
|
command.username = user.name; // Add user name
|
||||||
if (typeof domain.desktopprivacybartext == 'string') { command.privacybartext = domain.desktopprivacybartext; } // Privacy bar text
|
if (typeof domain.desktopprivacybartext == 'string') { command.privacybartext = domain.desktopprivacybartext; } // Privacy bar text
|
||||||
delete command.nodeid; // Remove the nodeid since it's implyed.
|
delete command.nodeid; // Remove the nodeid since it's implyed.
|
||||||
agent.send(JSON.stringify(command));
|
agent.send(JSON.stringify(command));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
// Check if a peer server is connected to this agent
|
// Check if a peer server is connected to this agent
|
||||||
var routing = parent.parent.GetRoutingServerId(command.nodeid, 1); // 1 = MeshAgent routing type
|
var routing = parent.parent.GetRoutingServerId(command.nodeid, 1); // 1 = MeshAgent routing type
|
||||||
if (routing != null) {
|
if (routing != null) {
|
||||||
// Check if we have permission to send a message to that node
|
// Check if we have permission to send a message to that node
|
||||||
parent.GetNodeWithRights(domain, user, agent.dbNodeKey, function (node, rights, visible) {
|
rights = parent.GetNodeRights(user, routing.meshid, command.nodeid);
|
||||||
mesh = parent.meshes[routing.meshid];
|
mesh = parent.meshes[routing.meshid];
|
||||||
if ((node != null) && (rights != null) && (mesh != null) || ((rights & 16) != 0)) { // TODO: 16 is console permission, may need more gradular permission checking
|
if (rights != null || ((rights & 16) != 0)) { // TODO: 16 is console permission, may need more gradular permission checking
|
||||||
if (ws.sessionId) { command.fromSessionid = ws.sessionId; } // Set the session id, required for responses.
|
if (ws.sessionId) { command.fromSessionid = ws.sessionId; } // Set the session id, required for responses.
|
||||||
command.rights = rights.rights; // Add user rights flags to the message
|
command.rights = rights.rights; // Add user rights flags to the message
|
||||||
command.consent = 0;
|
command.consent = mesh.consent; // Add user consent
|
||||||
if (typeof domain.userconsentflags == 'number') { command.consent |= domain.userconsentflags; } // Add server required consent flags
|
if (typeof domain.userconsentflags == 'number') { command.consent |= domain.userconsentflags; } // Add server required consent flags
|
||||||
if (typeof mesh.consent == 'number') { command.consent |= mesh.consent; } // Add device group user consent
|
|
||||||
if (typeof node.consent == 'number') { command.consent |= node.consent; } // Add node user consent
|
|
||||||
if (typeof user.consent == 'number') { command.consent |= user.consent; } // Add user consent
|
|
||||||
command.username = user.name; // Add user name
|
command.username = user.name; // Add user name
|
||||||
if (typeof domain.desktopprivacybartext == 'string') { command.privacybartext = domain.desktopprivacybartext; } // Privacy bar text
|
if (typeof domain.desktopprivacybartext == 'string') { command.privacybartext = domain.desktopprivacybartext; } // Privacy bar text
|
||||||
parent.parent.multiServer.DispatchMessageSingleServer(command, routing.serverid);
|
parent.parent.multiServer.DispatchMessageSingleServer(command, routing.serverid);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "meshcentral",
|
"name": "meshcentral",
|
||||||
"version": "0.5.1-q",
|
"version": "0.5.1-r",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"Remote Management",
|
"Remote Management",
|
||||||
"Intel AMT",
|
"Intel AMT",
|
||||||
|
@ -2715,7 +2715,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go tot he correct starting view page
|
// Go to the correct starting view page
|
||||||
function gotoStartViewPage() {
|
function gotoStartViewPage() {
|
||||||
if (xxcurrentView != -1) return;
|
if (xxcurrentView != -1) return;
|
||||||
if ('{{currentNode}}' != '') {
|
if ('{{currentNode}}' != '') {
|
||||||
@ -2736,7 +2736,7 @@
|
|||||||
go(parseInt('{{viewmode}}'));
|
go(parseInt('{{viewmode}}'));
|
||||||
goBackStack.push(4);
|
goBackStack.push(4);
|
||||||
} else if (args.gotougrp != null) {
|
} else if (args.gotougrp != null) {
|
||||||
if (usergroups['ugrp/' + domain + '/' + args.gotougrp] == null) return; // This user group is not loaded yet
|
if ((usergroups == null) || usergroups['ugrp/' + domain + '/' + args.gotougrp] == null) return; // This user group is not loaded yet
|
||||||
gotoUserGroup('ugrp/' + domain + '/' + args.gotougrp);
|
gotoUserGroup('ugrp/' + domain + '/' + args.gotougrp);
|
||||||
go(parseInt('{{viewmode}}'));
|
go(parseInt('{{viewmode}}'));
|
||||||
goBackStack.push(50);
|
goBackStack.push(50);
|
||||||
@ -4812,15 +4812,7 @@
|
|||||||
|
|
||||||
// Attribute: Host
|
// Attribute: Host
|
||||||
if ((features & 1) == 0) { // If not WAN-only, local hostname is in use
|
if ((features & 1) == 0) { // If not WAN-only, local hostname is in use
|
||||||
if ((meshrights & 4) != 0) {
|
x += addDeviceAttribute("Hostname", addLinkConditional('<span onclick=showEditNodeValueDialog(1) style=cursor:pointer>' + (node.host?EscapeHtml(node.host):('<i>' + "None" + '</i>')) + '</span>', 'showEditNodeValueDialog(1)', meshrights & 4));
|
||||||
if (node.host) {
|
|
||||||
x += addDeviceAttribute("Hostname", '<span onclick=showEditNodeValueDialog(1) style=cursor:pointer>' + EscapeHtml(node.host) + '</span>');
|
|
||||||
} else {
|
|
||||||
x += addDeviceAttribute("Hostname", '<span onclick=showEditNodeValueDialog(1) style=cursor:pointer><i>' + "None" + '</i></span>');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
x += addDeviceAttribute("Hostname", EscapeHtml(node.host));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attribute: Description
|
// Attribute: Description
|
||||||
@ -8583,7 +8575,7 @@
|
|||||||
var y = '';
|
var y = '';
|
||||||
for (var i in meshes) { if ((currentUserGroup.links == null) || (currentUserGroup.links[i] == null)) { y += '<option value=' + encodeURIComponent(i) + '>' + EscapeHtml(meshes[i].name) + '</option>'; } }
|
for (var i in meshes) { if ((currentUserGroup.links == null) || (currentUserGroup.links[i] == null)) { y += '<option value=' + encodeURIComponent(i) + '>' + EscapeHtml(meshes[i].name) + '</option>'; } }
|
||||||
x += addHtmlValue("Device Group", '<div style=width:230px;margin:0;padding:0><select onchange=p20validateAddMeshUserDialog() id=dp2groupid style=width:100%>' + y + '</select></div>');
|
x += addHtmlValue("Device Group", '<div style=width:230px;margin:0;padding:0><select onchange=p20validateAddMeshUserDialog() id=dp2groupid style=width:100%>' + y + '</select></div>');
|
||||||
} else if (userid === 4) {
|
} else if ((userid === 4) || (userid == 7)) {
|
||||||
var y = '', selectedMeshId = null, selectedNode = null;
|
var y = '', selectedMeshId = null, selectedNode = null;
|
||||||
if (selected != null) { selectedNode = getNodeFromId(decodeURIComponent(selected)); if (selectedNode != null) { selectedMeshId = selectedNode.meshid; } }
|
if (selected != null) { selectedNode = getNodeFromId(decodeURIComponent(selected)); if (selectedNode != null) { selectedMeshId = selectedNode.meshid; } }
|
||||||
for (var i in meshes) {
|
for (var i in meshes) {
|
||||||
@ -8591,10 +8583,10 @@
|
|||||||
if (selectedMeshId == null) { selectedMeshId = meshes[i]._id; } y += '<option value=' + encodeURIComponent(meshes[i]._id) + ((selectedMeshId == meshes[i]._id)?' selected':' ') + '>' + EscapeHtml(meshes[i].name) + '</option>';
|
if (selectedMeshId == null) { selectedMeshId = meshes[i]._id; } y += '<option value=' + encodeURIComponent(meshes[i]._id) + ((selectedMeshId == meshes[i]._id)?' selected':' ') + '>' + EscapeHtml(meshes[i].name) + '</option>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
x += addHtmlValue("Device Group", '<div style=width:230px;margin:0;padding:0><select onchange=p20changeMeshAddMeshUserDialog(4) id=dp2meshid style=width:100%>' + y + '</select></div>');
|
x += addHtmlValue("Device Group", '<div style=width:230px;margin:0;padding:0><select onchange=p20changeMeshAddMeshUserDialog(' + userid + ') id=dp2meshid style=width:100%>' + y + '</select></div>');
|
||||||
y = '';
|
y = '';
|
||||||
for (var i in nodes) { if (nodes[i].meshid == selectedMeshId) { y += '<option value=' + encodeURIComponent(nodes[i]._id) + ((selectedNode == nodes[i])?' selected':' ') + '>' + EscapeHtml(nodes[i].name) + '</option>'; } }
|
for (var i in nodes) { if (nodes[i].meshid == selectedMeshId) { y += '<option value=' + encodeURIComponent(nodes[i]._id) + ((selectedNode == nodes[i])?' selected':' ') + '>' + EscapeHtml(nodes[i].name) + '</option>'; } }
|
||||||
x += addHtmlValue("Device", '<div style=width:230px;margin:0;padding:0><select onchange=p20validateAddMeshUserDialog(4) id=dp2nodeid style=width:100%>' + y + '</select></div>');
|
x += addHtmlValue("Device", '<div style=width:230px;margin:0;padding:0><select onchange=p20validateAddMeshUserDialog(' + userid + ') id=dp2nodeid style=width:100%>' + y + '</select></div>');
|
||||||
} else {
|
} else {
|
||||||
userid = decodeURIComponent(userid);
|
userid = decodeURIComponent(userid);
|
||||||
var uname = userid.split('/')[2];
|
var uname = userid.split('/')[2];
|
||||||
@ -8608,7 +8600,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
x += '<div style="height:120px;overflow-y:scroll;border:1px solid gray">';
|
x += '<div style="height:120px;overflow-y:scroll;border:1px solid gray">';
|
||||||
if ((userid != 4) && (userid != 5) && (userid != 6)) {
|
if ((userid != 4) && (userid != 5) && (userid != 6) && (userid != 7)) {
|
||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20fulladmin>' + "Full Administrator" + '</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20fulladmin>' + "Full Administrator" + '</label><br>';
|
||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editmesh>' + "Edit Device Group" + '</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editmesh>' + "Edit Device Group" + '</label><br>';
|
||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20manageusers>' + "Manage Device Group Users" + '</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20manageusers>' + "Manage Device Group Users" + '</label><br>';
|
||||||
@ -8642,6 +8634,11 @@
|
|||||||
setDialogMode(2, (selected == null)?"Add Device Permissions":"Edit Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
|
setDialogMode(2, (selected == null)?"Add Device Permissions":"Edit Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
|
||||||
QE('dp2meshid', selected == null);
|
QE('dp2meshid', selected == null);
|
||||||
QE('dp2nodeid', selected == null);
|
QE('dp2nodeid', selected == null);
|
||||||
|
} else if (userid === 7) {
|
||||||
|
console.log('a1');
|
||||||
|
setDialogMode(2, (selected == null)?"Add Device Permissions":"Edit Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
|
||||||
|
QE('dp2meshid', selected == null);
|
||||||
|
QE('dp2nodeid', selected == null);
|
||||||
} else if (userid === 5) {
|
} else if (userid === 5) {
|
||||||
setDialogMode(2, selected?"Edit User Device Permissions":"Add User Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
|
setDialogMode(2, selected?"Edit User Device Permissions":"Add User Device Permissions", 3, p20showAddMeshUserDialogEx, x, userid);
|
||||||
if (selected != null) {
|
if (selected != null) {
|
||||||
@ -8742,6 +8739,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function p20validateAddMeshUserDialog(updateId) {
|
function p20validateAddMeshUserDialog(updateId) {
|
||||||
|
console.log('p20validateAddMeshUserDialog', updateId);
|
||||||
var ok = true;
|
var ok = true;
|
||||||
|
|
||||||
if (updateId === 4) {
|
if (updateId === 4) {
|
||||||
@ -8871,6 +8869,9 @@
|
|||||||
} else if (t === 6) {
|
} else if (t === 6) {
|
||||||
var ugrpid = decodeURIComponent(Q('dp2groupid').value);
|
var ugrpid = decodeURIComponent(Q('dp2groupid').value);
|
||||||
if (currentNode != null) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [ ugrpid ], rights: meshadmin }); }
|
if (currentNode != null) { meshserver.send({ action: 'adddeviceuser', nodeid: currentNode._id, nodename: currentNode.name, userids: [ ugrpid ], rights: meshadmin }); }
|
||||||
|
} else if (t === 7) {
|
||||||
|
var nodeid = decodeURIComponent(Q('dp2nodeid').value), node = getNodeFromId(nodeid);
|
||||||
|
if (node != null) { meshserver.send({ action: 'adddeviceuser', nodeid: nodeid, nodename: node.name, userids: [ currentGroup._id ], rights: meshadmin }); }
|
||||||
} else {
|
} else {
|
||||||
if (t == null) {
|
if (t == null) {
|
||||||
var users = Q('dp20username').value.split(','), users2 = [];
|
var users = Q('dp20username').value.split(','), users2 = [];
|
||||||
@ -10180,10 +10181,8 @@
|
|||||||
x += '</tbody></table>';
|
x += '</tbody></table>';
|
||||||
|
|
||||||
count = 1;
|
count = 1;
|
||||||
//var deviceGroupCount = 0, newDeviceGroup = false;
|
x += '<br /><a href=# onclick="return p20showAddMeshUserDialog(7)" style=cursor:pointer;margin-right:10px><img src=images/icon-addnew.png border=0 height=12 width=12> ' + "Add Device" + '</a>';
|
||||||
//for (var i in meshes) { deviceGroupCount++; if ((currentUserGroup.links == null) || (currentUserGroup.links[i] == null)) { newDeviceGroup = true; } }
|
x += '<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>' + "Common Devices" + '</th><th scope=col style=text-align:left></th></tr>';
|
||||||
//if ((deviceGroupCount > 0) && (newDeviceGroup)) { x += '<a href=# onclick="return p20showAddMeshUserDialog(3)" style=cursor:pointer;margin-right:10px><img src=images/icon-addnew.png border=0 height=12 width=12> ' + "Add Device Group" + '</a>'; }
|
|
||||||
x += '<br /><table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>' + "Common Devices" + '</th><th scope=col style=text-align:left></th></tr>';
|
|
||||||
if (currentUserGroup.links) {
|
if (currentUserGroup.links) {
|
||||||
for (var i in currentUserGroup.links) {
|
for (var i in currentUserGroup.links) {
|
||||||
if (i.startsWith('node/')) {
|
if (i.startsWith('node/')) {
|
||||||
|
Loading…
Reference in New Issue
Block a user