Fixed user session counts
This commit is contained in:
parent
863bdeda1b
commit
046bc1e963
10
meshuser.js
10
meshuser.js
|
@ -81,9 +81,8 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
||||||
if (user == null) { try { obj.ws.close(); } catch (e) { } return; }
|
if (user == null) { try { obj.ws.close(); } catch (e) { } return; }
|
||||||
|
|
||||||
// Associate this websocket session with the web session
|
// Associate this websocket session with the web session
|
||||||
//req.session.ws = obj.ws;
|
obj.ws.userid = req.session.userid;
|
||||||
//req.session.ws.userid = req.session.userid;
|
obj.ws.domainid = domain.id;
|
||||||
//req.session.ws.domainid = domain.id;
|
|
||||||
|
|
||||||
// Add this web socket session to session list
|
// Add this web socket session to session list
|
||||||
obj.ws.sessionId = user._id + '/' + ('' + Math.random()).substring(2);
|
obj.ws.sessionId = user._id + '/' + ('' + Math.random()).substring(2);
|
||||||
|
@ -102,7 +101,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
||||||
obj.ws.HandleEvent = function (source, event) {
|
obj.ws.HandleEvent = function (source, event) {
|
||||||
if (!event.domain || event.domain == obj.domain.id) {
|
if (!event.domain || event.domain == obj.domain.id) {
|
||||||
try {
|
try {
|
||||||
if (event == 'close') { req.session.destroy(); obj.close(); }
|
if (event == 'close') { try { delete req.session; } catch (ex) { } obj.close(); }
|
||||||
else if (event == 'resubscribe') { user.subscriptions = obj.parent.subscribe(user._id, ws); }
|
else if (event == 'resubscribe') { user.subscriptions = obj.parent.subscribe(user._id, ws); }
|
||||||
else if (event == 'updatefiles') { updateUserFiles(user, ws, domain); }
|
else if (event == 'updatefiles') { updateUserFiles(user, ws, domain); }
|
||||||
else { ws.send(JSON.stringify({ action: 'event', event: event })); }
|
else { ws.send(JSON.stringify({ action: 'event', event: event })); }
|
||||||
|
@ -1137,7 +1136,8 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
||||||
case 'close':
|
case 'close':
|
||||||
{
|
{
|
||||||
// Close the web socket session
|
// Close the web socket session
|
||||||
if (obj.req.session && obj.req.session.ws && obj.req.session.ws == ws) delete obj.req.session.ws;
|
console.log('CLOSING1');
|
||||||
|
if (obj.req.session && obj.req.session.ws && obj.req.session.ws == ws) { console.log('CLOSING2'); delete obj.req.session.ws; }
|
||||||
try { ws.close(); } catch (e) { }
|
try { ws.close(); } catch (e) { }
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) {
|
||||||
const tls = require("tls");
|
const tls = require("tls");
|
||||||
const MAX_IDLE = 90000; // 90 seconds max idle time, higher than the typical KEEP-ALIVE periode of 60 seconds
|
const MAX_IDLE = 90000; // 90 seconds max idle time, higher than the typical KEEP-ALIVE periode of 60 seconds
|
||||||
|
|
||||||
if (obj.args.tlsoffload) {
|
if (obj.args.mpstlsoffload) {
|
||||||
obj.server = net.createServer(onConnection);
|
obj.server = net.createServer(onConnection);
|
||||||
} else {
|
} else {
|
||||||
obj.server = tls.createServer({ key: certificates.mps.key, cert: certificates.mps.cert, requestCert: true, rejectUnauthorized: false }, onConnection);
|
obj.server = tls.createServer({ key: certificates.mps.key, cert: certificates.mps.cert, requestCert: true, rejectUnauthorized: false }, onConnection);
|
||||||
|
@ -99,7 +99,7 @@ module.exports.CreateMpsServer = function (parent, db, args, certificates) {
|
||||||
};
|
};
|
||||||
|
|
||||||
function onConnection(socket) {
|
function onConnection(socket) {
|
||||||
if (obj.args.tlsoffload) {
|
if (obj.args.mpstlsoffload) {
|
||||||
socket.tag = { first: true, clientCert: null, accumulator: "", activetunnels: 0, boundPorts: [], socket: socket, host: null, nextchannelid: 4, channels: {}, nextsourceport: 0 };
|
socket.tag = { first: true, clientCert: null, accumulator: "", activetunnels: 0, boundPorts: [], socket: socket, host: null, nextchannelid: 4, channels: {}, nextsourceport: 0 };
|
||||||
} else {
|
} else {
|
||||||
socket.tag = { first: true, clientCert: socket.getPeerCertificate(true), accumulator: "", activetunnels: 0, boundPorts: [], socket: socket, host: null, nextchannelid: 4, channels: {}, nextsourceport: 0 };
|
socket.tag = { first: true, clientCert: socket.getPeerCertificate(true), accumulator: "", activetunnels: 0, boundPorts: [], socket: socket, host: null, nextchannelid: 4, channels: {}, nextsourceport: 0 };
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "meshcentral",
|
"name": "meshcentral",
|
||||||
"version": "0.2.2-s",
|
"version": "0.2.2-t",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"Remote Management",
|
"Remote Management",
|
||||||
"Intel AMT",
|
"Intel AMT",
|
||||||
|
|
|
@ -16,7 +16,9 @@
|
||||||
"_ClickOnce": false,
|
"_ClickOnce": false,
|
||||||
"_SelfUpdate": true,
|
"_SelfUpdate": true,
|
||||||
"_UserAllowedIP": "127.0.0.1,::1,192.168.0.100",
|
"_UserAllowedIP": "127.0.0.1,::1,192.168.0.100",
|
||||||
"_LocalDiscovery": { "name": "Local server name", "info": "Information about this server" }
|
"_LocalDiscovery": { "name": "Local server name", "info": "Information about this server" },
|
||||||
|
"_TlsOffload": true,
|
||||||
|
"_MpsTlsOffload": true
|
||||||
},
|
},
|
||||||
"_domains": {
|
"_domains": {
|
||||||
"": {
|
"": {
|
||||||
|
|
|
@ -2101,7 +2101,7 @@
|
||||||
if (serverinfo != null) { x += addHtmlValue('MPS Server', '<input style=width:230px readonly value="' + EscapeHtml(serverinfo.mpsname) + ':' + serverinfo.mpsport + '" />'); }
|
if (serverinfo != null) { x += addHtmlValue('MPS Server', '<input style=width:230px readonly value="' + EscapeHtml(serverinfo.mpsname) + ':' + serverinfo.mpsport + '" />'); }
|
||||||
x += "</div>";
|
x += "</div>";
|
||||||
|
|
||||||
// Setup CIRA with certificate authentication (Really difficult, only is allowed)
|
// Setup CIRA with certificate authentication (Really difficult, only if TLS offload is not used)
|
||||||
if ((features & 16) == 0) {
|
if ((features & 16) == 0) {
|
||||||
x += "<div id=dlgAddCira2 style=display:none>To add a new Intel® AMT device to device group \"" + EscapeHtml(mesh.name) + "\" with CIRA, load the following certificate as trusted root within Intel AMT, authenticate using a client certificate with the following common name and connect to the following server.<br /><br />";
|
x += "<div id=dlgAddCira2 style=display:none>To add a new Intel® AMT device to device group \"" + EscapeHtml(mesh.name) + "\" with CIRA, load the following certificate as trusted root within Intel AMT, authenticate using a client certificate with the following common name and connect to the following server.<br /><br />";
|
||||||
x += addHtmlValue('Root Certificate', '<a href="MeshServerRootCert.cer" target="_blank">Root Certificate File</a>');
|
x += addHtmlValue('Root Certificate', '<a href="MeshServerRootCert.cer" target="_blank">Root Certificate File</a>');
|
||||||
|
|
10
webserver.js
10
webserver.js
|
@ -709,8 +709,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If a user is logged in, serve the default app, otherwise server the login app.
|
// If a user exists and is logged in, serve the default app, otherwise server the login app.
|
||||||
if (req.session && req.session.userid) {
|
if (req.session && req.session.userid && obj.users[req.session.userid]) {
|
||||||
|
var user = obj.users[req.session.userid];
|
||||||
if (req.session.domainid != domain.id) { req.session = null; res.redirect(domain.url); return; } // Check is the session is for the correct domain
|
if (req.session.domainid != domain.id) { req.session = null; res.redirect(domain.url); return; } // Check is the session is for the correct domain
|
||||||
var viewmode = 1;
|
var viewmode = 1;
|
||||||
if (req.session.viewmode) {
|
if (req.session.viewmode) {
|
||||||
|
@ -727,16 +728,15 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
|
||||||
currentNode = 'node/' + domain.id + '/' + req.query.node;
|
currentNode = 'node/' + domain.id + '/' + req.query.node;
|
||||||
}
|
}
|
||||||
var logoutcontrol = '';
|
var logoutcontrol = '';
|
||||||
if (obj.args.nousers != true) { logoutcontrol = 'Welcome ' + obj.users[req.session.userid].name + '.'; }
|
if (obj.args.nousers != true) { logoutcontrol = 'Welcome ' + user.name + '.'; }
|
||||||
|
|
||||||
// Give the web page a list of supported server features
|
// Give the web page a list of supported server features
|
||||||
features = 0;
|
features = 0;
|
||||||
user = obj.users[req.session.userid];
|
|
||||||
if (obj.args.wanonly == true) { features += 1; } // WAN-only mode
|
if (obj.args.wanonly == true) { features += 1; } // WAN-only mode
|
||||||
if (obj.args.lanonly == true) { features += 2; } // LAN-only mode
|
if (obj.args.lanonly == true) { features += 2; } // LAN-only mode
|
||||||
if (obj.args.nousers == true) { features += 4; } // Single user mode
|
if (obj.args.nousers == true) { features += 4; } // Single user mode
|
||||||
if (domain.userQuota == -1) { features += 8; } // No server files mode
|
if (domain.userQuota == -1) { features += 8; } // No server files mode
|
||||||
if (obj.args.tlsoffload) { features += 16; } // No mutual-auth CIRA
|
if (obj.args.mpstlsoffload) { features += 16; } // No mutual-auth CIRA
|
||||||
if ((parent.config != null) && (parent.config.settings != null) && (parent.config.settings.allowframing == true)) { features += 32; } // Allow site within iframe
|
if ((parent.config != null) && (parent.config.settings != null) && (parent.config.settings.allowframing == true)) { features += 32; } // Allow site within iframe
|
||||||
if ((obj.parent.mailserver != null) && (obj.parent.certificates.CommonName != null) && (obj.parent.certificates.CommonName != 'un-configured') && (obj.args.lanonly != true)) { features += 64; } // Email invites
|
if ((obj.parent.mailserver != null) && (obj.parent.certificates.CommonName != null) && (obj.parent.certificates.CommonName != 'un-configured') && (obj.args.lanonly != true)) { features += 64; } // Email invites
|
||||||
if (obj.args.webrtc == true) { features += 128; } // Enable WebRTC (Default false for now)
|
if (obj.args.webrtc == true) { features += 128; } // Enable WebRTC (Default false for now)
|
||||||
|
|
Loading…
Reference in New Issue