mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-12-26 23:25:53 -05:00
Added chat & notify permission
This commit is contained in:
parent
b0f44862ff
commit
1836ce0ab2
@ -28,7 +28,7 @@ module.exports.CreateMeshRelay = function (parent, ws, req, domain, user, cookie
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check connection id
|
// Check connection id
|
||||||
if (obj.id == null) { try { ws.close(); parent.parent.debug('relay', 'Relay: Connection with no id (' + cleanRemoteAddr(req.ip) + ')'); } catch (e) { console.log(e); } return; }
|
if ((obj.id == null) || (obj.id.length < 8)) { try { ws.close(); parent.parent.debug('relay', 'Relay: Connection with no id (' + cleanRemoteAddr(req.ip) + ')'); } catch (e) { console.log(e); } return; }
|
||||||
|
|
||||||
// If there is no authentication, drop this connection
|
// If there is no authentication, drop this connection
|
||||||
if ((obj.id.startsWith('meshmessenger/') == false) && (obj.user == null) && (obj.ruserid == null)) { try { ws.close(); parent.parent.debug('relay', 'Relay: Connection with no authentication (' + cleanRemoteAddr(req.ip) + ')'); } catch (e) { console.log(e); } return; }
|
if ((obj.id.startsWith('meshmessenger/') == false) && (obj.user == null) && (obj.ruserid == null)) { try { ws.close(); parent.parent.debug('relay', 'Relay: Connection with no authentication (' + cleanRemoteAddr(req.ip) + ')'); } catch (e) { console.log(e); } return; }
|
||||||
|
@ -33,6 +33,8 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||||||
const MESHRIGHT_NOFILES = 1024;
|
const MESHRIGHT_NOFILES = 1024;
|
||||||
const MESHRIGHT_NOAMT = 2048;
|
const MESHRIGHT_NOAMT = 2048;
|
||||||
const MESHRIGHT_DESKLIMITEDINPUT = 4096;
|
const MESHRIGHT_DESKLIMITEDINPUT = 4096;
|
||||||
|
const MESHRIGHT_LIMITEVENTS = 8192;
|
||||||
|
const MESHRIGHT_CHATNOTIFY = 16384;
|
||||||
|
|
||||||
// Site rights
|
// Site rights
|
||||||
const SITERIGHT_SERVERBACKUP = 1;
|
const SITERIGHT_SERVERBACKUP = 1;
|
||||||
@ -362,7 +364,6 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||||||
{
|
{
|
||||||
// Renew the authentication cookie
|
// Renew the authentication cookie
|
||||||
try {
|
try {
|
||||||
console.log(req.ip);
|
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
action: 'authcookie',
|
action: 'authcookie',
|
||||||
cookie: parent.parent.encodeCookie({ userid: user._id, domainid: domain.id, ip: cleanRemoteAddr(req.ip) }, parent.parent.loginCookieEncryptionKey),
|
cookie: parent.parent.encodeCookie({ userid: user._id, domainid: domain.id, ip: cleanRemoteAddr(req.ip) }, parent.parent.loginCookieEncryptionKey),
|
||||||
@ -1604,7 +1605,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||||||
mesh = parent.meshes[node.meshid];
|
mesh = parent.meshes[node.meshid];
|
||||||
if (mesh) {
|
if (mesh) {
|
||||||
// Check if this user has rights to do this
|
// Check if this user has rights to do this
|
||||||
if (mesh.links[user._id] == null || ((mesh.links[user._id].rights & MESHRIGHT_REMOTECONTROL) == 0)) return;
|
if (mesh.links[user._id] == null || ((mesh.links[user._id].rights & MESHRIGHT_CHATNOTIFY) == 0)) return;
|
||||||
|
|
||||||
// Create the server url
|
// Create the server url
|
||||||
var httpsPort = ((args.aliasport == null) ? args.port : args.aliasport); // Use HTTPS alias port is specified
|
var httpsPort = ((args.aliasport == null) ? args.port : args.aliasport); // Use HTTPS alias port is specified
|
||||||
@ -2223,8 +2224,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
|||||||
mesh = parent.meshes[node.meshid];
|
mesh = parent.meshes[node.meshid];
|
||||||
if (mesh) {
|
if (mesh) {
|
||||||
// Check if this user has rights to do this
|
// Check if this user has rights to do this
|
||||||
if (mesh.links[user._id] != null && ((mesh.links[user._id].rights & 8) != 0)) { // "Remote Control permission"
|
if (mesh.links[user._id] != null && ((mesh.links[user._id].rights & MESHRIGHT_CHATNOTIFY) != 0)) {
|
||||||
|
|
||||||
// Get this device
|
// Get this device
|
||||||
var agent = parent.wsagents[node._id];
|
var agent = parent.wsagents[node._id];
|
||||||
if (agent != null) {
|
if (agent != null) {
|
||||||
|
@ -9314,7 +9314,7 @@ var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this
|
|||||||
if (node.conn) {
|
if (node.conn) {
|
||||||
if ((node.conn & 1) != 0) { states.push('<span title="Mesh agent is connected and ready for use.">Agent</span>'); }
|
if ((node.conn & 1) != 0) { states.push('<span title="Mesh agent is connected and ready for use.">Agent</span>'); }
|
||||||
if ((node.conn & 2) != 0) { states.push('<span title="Intel® AMT CIRA is connected and ready for use.">CIRA</span>'); }
|
if ((node.conn & 2) != 0) { states.push('<span title="Intel® AMT CIRA is connected and ready for use.">CIRA</span>'); }
|
||||||
else if ((node.conn & 4) != 0) { states.push('<span title="Intel® AMT is routable.">Intel® AMT</span>'); }
|
else if ((node.conn & 4) != 0) { states.push('<span title="Intel® AMT is routable.">AMT</span>'); }
|
||||||
if ((node.conn & 8) != 0) { states.push('<span title="Mesh agent is reachable using another agent as relay.">Relay</span>'); }
|
if ((node.conn & 8) != 0) { states.push('<span title="Mesh agent is reachable using another agent as relay.">Relay</span>'); }
|
||||||
if ((node.conn & 16) != 0) { states.push('<span title="MQTT connection to the device is active.">MQTT</span>'); }
|
if ((node.conn & 16) != 0) { states.push('<span title="MQTT connection to the device is active.">MQTT</span>'); }
|
||||||
}
|
}
|
||||||
@ -10970,11 +10970,12 @@ var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this
|
|||||||
QV('deskkeys', inputAllowed);
|
QV('deskkeys', inputAllowed);
|
||||||
QE('deskkeys', deskState == 3);
|
QE('deskkeys', deskState == 3);
|
||||||
|
|
||||||
QV('DeskToolsButton', (inputAllowed) && (mesh.mtype == 2) && online);
|
// Display this only if we have Chat & Notify permissions
|
||||||
QV('DeskChatButton', (browserfullscreen == false) && (inputAllowed) && (mesh.mtype == 2) && online);
|
QV('DeskChatButton', ((meshrights & 16384) != 0) && (browserfullscreen == false) && (inputAllowed) && (mesh.mtype == 2) && online);
|
||||||
QV('DeskNotifyButton', (browserfullscreen == false) && (currentNode.agent) && (currentNode.agent.id < 5) && (inputAllowed) && (mesh.mtype == 2) && online);
|
QV('DeskNotifyButton', ((meshrights & 16384) != 0) && (browserfullscreen == false) && (currentNode.agent) && (currentNode.agent.id < 5) && (inputAllowed) && (mesh.mtype == 2) && online);
|
||||||
QV('DeskOpenWebButton', (browserfullscreen == false) && (inputAllowed) && (mesh.mtype == 2) && online);
|
|
||||||
|
|
||||||
|
QV('DeskToolsButton', (inputAllowed) && (mesh.mtype == 2) && online);
|
||||||
|
QV('DeskOpenWebButton', (browserfullscreen == false) && (inputAllowed) && (mesh.mtype == 2) && online);
|
||||||
QV('DeskControlSpan', inputAllowed)
|
QV('DeskControlSpan', inputAllowed)
|
||||||
QV('deskActionsBtn', (browserfullscreen == false));
|
QV('deskActionsBtn', (browserfullscreen == false));
|
||||||
QV('deskActionsSettings', (browserfullscreen == false));
|
QV('deskActionsSettings', (browserfullscreen == false));
|
||||||
@ -13377,6 +13378,7 @@ var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this
|
|||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>Wake Devices</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>Wake Devices</label><br>';
|
||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>Edit Device Notes</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>Edit Device Notes</label><br>';
|
||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20limitevents>Show Only Own Events</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20limitevents>Show Only Own Events</label><br>';
|
||||||
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20chatnotify>Chat & Notify</label><br>';
|
||||||
x += '</div>';
|
x += '</div>';
|
||||||
if (userid == null) {
|
if (userid == null) {
|
||||||
setDialogMode(2, "Add Users to Device Group", 3, p20showAddMeshUserDialogEx, x);
|
setDialogMode(2, "Add Users to Device Group", 3, p20showAddMeshUserDialogEx, x);
|
||||||
@ -13403,6 +13405,8 @@ var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this
|
|||||||
if (meshrights & 64) { Q('p20wakedevices').checked = true; }
|
if (meshrights & 64) { Q('p20wakedevices').checked = true; }
|
||||||
if (meshrights & 128) { Q('p20editnotes').checked = true; }
|
if (meshrights & 128) { Q('p20editnotes').checked = true; }
|
||||||
if (meshrights & 8192) { Q('p20limitevents').checked = true; }
|
if (meshrights & 8192) { Q('p20limitevents').checked = true; }
|
||||||
|
if (meshrights & 16384) { Q('p20chatnotify').checked = true; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
p20validateAddMeshUserDialog();
|
p20validateAddMeshUserDialog();
|
||||||
@ -13487,6 +13491,7 @@ var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this
|
|||||||
if (Q('p20noamt').checked == true) meshadmin += 2048;
|
if (Q('p20noamt').checked == true) meshadmin += 2048;
|
||||||
if (Q('p20remotelimitedinput').checked == true) meshadmin += 4096;
|
if (Q('p20remotelimitedinput').checked == true) meshadmin += 4096;
|
||||||
if (Q('p20limitevents').checked == true) meshadmin += 8192;
|
if (Q('p20limitevents').checked == true) meshadmin += 8192;
|
||||||
|
if (Q('p20chatnotify').checked == true) meshadmin += 16384;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t == null) {
|
if (t == null) {
|
||||||
@ -13522,6 +13527,7 @@ var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this
|
|||||||
if (((meshrights & 8) != 0) && (meshrights & 2048) != 0) r += ', No Intel® AMT';
|
if (((meshrights & 8) != 0) && (meshrights & 2048) != 0) r += ', No Intel® AMT';
|
||||||
if (((meshrights & 8) != 0) && ((meshrights & 4096) != 0) && ((meshrights & 256) == 0)) r += ', Limited Input';
|
if (((meshrights & 8) != 0) && ((meshrights & 4096) != 0) && ((meshrights & 256) == 0)) r += ', Limited Input';
|
||||||
if ((meshrights & 8192) != 0) r += ', Self Events Only';
|
if ((meshrights & 8192) != 0) r += ', Self Events Only';
|
||||||
|
if ((meshrights & 16384) != 0) r += ', Chat & Notify';
|
||||||
}
|
}
|
||||||
r = r.substring(2);
|
r = r.substring(2);
|
||||||
if (r == '') { r = 'No Rights'; }
|
if (r == '') { r = 'No Rights'; }
|
||||||
|
File diff suppressed because one or more lines are too long
@ -2299,7 +2299,7 @@
|
|||||||
//QV('deskkeys', (currentNode.agent) && (currentNode.agent.id < 5));
|
//QV('deskkeys', (currentNode.agent) && (currentNode.agent.id < 5));
|
||||||
//QE('deskkeys', deskState == 3);
|
//QE('deskkeys', deskState == 3);
|
||||||
//QE('DeskToolsButton', online);
|
//QE('DeskToolsButton', online);
|
||||||
QV('DeskToastButton', (currentNode.agent) && (currentNode.agent.id < 5) && (meshrights & 8));
|
QV('DeskToastButton', ((meshrights & 16384) != 0) && (currentNode.agent) && (currentNode.agent.id < 5) && (meshrights & 8));
|
||||||
//QE('DeskToastButton', online);
|
//QE('DeskToastButton', online);
|
||||||
QV('deskActionsBtn', meshrights & 8);
|
QV('deskActionsBtn', meshrights & 8);
|
||||||
Q('DeskControl').checked = ((meshrights & 8) != 0);
|
Q('DeskControl').checked = ((meshrights & 8) != 0);
|
||||||
|
@ -3285,7 +3285,7 @@
|
|||||||
if (node.conn) {
|
if (node.conn) {
|
||||||
if ((node.conn & 1) != 0) { states.push('<span title="Mesh agent is connected and ready for use.">Agent</span>'); }
|
if ((node.conn & 1) != 0) { states.push('<span title="Mesh agent is connected and ready for use.">Agent</span>'); }
|
||||||
if ((node.conn & 2) != 0) { states.push('<span title="Intel® AMT CIRA is connected and ready for use.">CIRA</span>'); }
|
if ((node.conn & 2) != 0) { states.push('<span title="Intel® AMT CIRA is connected and ready for use.">CIRA</span>'); }
|
||||||
else if ((node.conn & 4) != 0) { states.push('<span title="Intel® AMT is routable.">Intel® AMT</span>'); }
|
else if ((node.conn & 4) != 0) { states.push('<span title="Intel® AMT is routable.">AMT</span>'); }
|
||||||
if ((node.conn & 8) != 0) { states.push('<span title="Mesh agent is reachable using another agent as relay.">Relay</span>'); }
|
if ((node.conn & 8) != 0) { states.push('<span title="Mesh agent is reachable using another agent as relay.">Relay</span>'); }
|
||||||
if ((node.conn & 16) != 0) { states.push('<span title="MQTT connection to the device is active.">MQTT</span>'); }
|
if ((node.conn & 16) != 0) { states.push('<span title="MQTT connection to the device is active.">MQTT</span>'); }
|
||||||
}
|
}
|
||||||
@ -4941,11 +4941,12 @@
|
|||||||
QV('deskkeys', inputAllowed);
|
QV('deskkeys', inputAllowed);
|
||||||
QE('deskkeys', deskState == 3);
|
QE('deskkeys', deskState == 3);
|
||||||
|
|
||||||
QV('DeskToolsButton', (inputAllowed) && (mesh.mtype == 2) && online);
|
// Display this only if we have Chat & Notify permissions
|
||||||
QV('DeskChatButton', (browserfullscreen == false) && (inputAllowed) && (mesh.mtype == 2) && online);
|
QV('DeskChatButton', ((meshrights & 16384) != 0) && (browserfullscreen == false) && (inputAllowed) && (mesh.mtype == 2) && online);
|
||||||
QV('DeskNotifyButton', (browserfullscreen == false) && (currentNode.agent) && (currentNode.agent.id < 5) && (inputAllowed) && (mesh.mtype == 2) && online);
|
QV('DeskNotifyButton', ((meshrights & 16384) != 0) && (browserfullscreen == false) && (currentNode.agent) && (currentNode.agent.id < 5) && (inputAllowed) && (mesh.mtype == 2) && online);
|
||||||
QV('DeskOpenWebButton', (browserfullscreen == false) && (inputAllowed) && (mesh.mtype == 2) && online);
|
|
||||||
|
|
||||||
|
QV('DeskToolsButton', (inputAllowed) && (mesh.mtype == 2) && online);
|
||||||
|
QV('DeskOpenWebButton', (browserfullscreen == false) && (inputAllowed) && (mesh.mtype == 2) && online);
|
||||||
QV('DeskControlSpan', inputAllowed)
|
QV('DeskControlSpan', inputAllowed)
|
||||||
QV('deskActionsBtn', (browserfullscreen == false));
|
QV('deskActionsBtn', (browserfullscreen == false));
|
||||||
QV('deskActionsSettings', (browserfullscreen == false));
|
QV('deskActionsSettings', (browserfullscreen == false));
|
||||||
@ -7348,6 +7349,7 @@
|
|||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>Wake Devices</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>Wake Devices</label><br>';
|
||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>Edit Device Notes</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>Edit Device Notes</label><br>';
|
||||||
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20limitevents>Show Only Own Events</label><br>';
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20limitevents>Show Only Own Events</label><br>';
|
||||||
|
x += '<label><input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20chatnotify>Chat & Notify</label><br>';
|
||||||
x += '</div>';
|
x += '</div>';
|
||||||
if (userid == null) {
|
if (userid == null) {
|
||||||
setDialogMode(2, "Add Users to Device Group", 3, p20showAddMeshUserDialogEx, x);
|
setDialogMode(2, "Add Users to Device Group", 3, p20showAddMeshUserDialogEx, x);
|
||||||
@ -7374,6 +7376,8 @@
|
|||||||
if (meshrights & 64) { Q('p20wakedevices').checked = true; }
|
if (meshrights & 64) { Q('p20wakedevices').checked = true; }
|
||||||
if (meshrights & 128) { Q('p20editnotes').checked = true; }
|
if (meshrights & 128) { Q('p20editnotes').checked = true; }
|
||||||
if (meshrights & 8192) { Q('p20limitevents').checked = true; }
|
if (meshrights & 8192) { Q('p20limitevents').checked = true; }
|
||||||
|
if (meshrights & 16384) { Q('p20chatnotify').checked = true; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
p20validateAddMeshUserDialog();
|
p20validateAddMeshUserDialog();
|
||||||
@ -7458,6 +7462,7 @@
|
|||||||
if (Q('p20noamt').checked == true) meshadmin += 2048;
|
if (Q('p20noamt').checked == true) meshadmin += 2048;
|
||||||
if (Q('p20remotelimitedinput').checked == true) meshadmin += 4096;
|
if (Q('p20remotelimitedinput').checked == true) meshadmin += 4096;
|
||||||
if (Q('p20limitevents').checked == true) meshadmin += 8192;
|
if (Q('p20limitevents').checked == true) meshadmin += 8192;
|
||||||
|
if (Q('p20chatnotify').checked == true) meshadmin += 16384;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (t == null) {
|
if (t == null) {
|
||||||
@ -7493,6 +7498,7 @@
|
|||||||
if (((meshrights & 8) != 0) && (meshrights & 2048) != 0) r += ', No Intel® AMT';
|
if (((meshrights & 8) != 0) && (meshrights & 2048) != 0) r += ', No Intel® AMT';
|
||||||
if (((meshrights & 8) != 0) && ((meshrights & 4096) != 0) && ((meshrights & 256) == 0)) r += ', Limited Input';
|
if (((meshrights & 8) != 0) && ((meshrights & 4096) != 0) && ((meshrights & 256) == 0)) r += ', Limited Input';
|
||||||
if ((meshrights & 8192) != 0) r += ', Self Events Only';
|
if ((meshrights & 8192) != 0) r += ', Self Events Only';
|
||||||
|
if ((meshrights & 16384) != 0) r += ', Chat & Notify';
|
||||||
}
|
}
|
||||||
r = r.substring(2);
|
r = r.substring(2);
|
||||||
if (r == '') { r = 'No Rights'; }
|
if (r == '') { r = 'No Rights'; }
|
||||||
|
Loading…
Reference in New Issue
Block a user