Fixed previous login dialog.

Ylian Saint-Hilaire committed Mar 9, 2021 at 17:26 UTC bb8e6d6511125d4ca9cbdc5bc591850410c35059
3 files changed +9 -11
db.js
+4 -4
@@ -1241,7 +1241,7 @@ module.exports.CreateDB = function (parent, func) {
1241 obj.GetEventsWithLimit = function (ids, domain, limit, func) { obj.eventsfile.find({ domain: domain, ids: { $in: ids } }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit).toArray(func); };
1242 obj.GetUserEvents = function (ids, domain, username, func) { obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).toArray(func); };
1243 obj.GetUserEventsWithLimit = function (ids, domain, username, limit, func) { obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }).project({ type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit).toArray(func); };
1244 - obj.GetUserLoginEvents = function (domain, username, func) { obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, msgArgs: { $exists: true } }).project({ action: 1, time: 1, msgid: 1, msgArgs: 1 }).sort({ time: -1 }).toArray(func); };
1244 + obj.GetUserLoginEvents = function (domain, userid, func) { obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, userid: userid, msgArgs: { $exists: true } }).project({ action: 1, time: 1, msgid: 1, msgArgs: 1 }).sort({ time: -1 }).toArray(func); };
1245 obj.GetNodeEventsWithLimit = function (nodeid, domain, limit, func) { obj.eventsfile.find({ domain: domain, nodeid: nodeid }).project({ type: 0, etype: 0, _id: 0, domain: 0, ids: 0, node: 0, nodeid: 0 }).sort({ time: -1 }).limit(limit).toArray(func); };
1246 obj.GetNodeEventsSelfWithLimit = function (nodeid, domain, userid, limit, func) { obj.eventsfile.find({ domain: domain, nodeid: nodeid, userid: { $in: [userid, null] } }).project({ type: 0, etype: 0, _id: 0, domain: 0, ids: 0, node: 0, nodeid: 0 }).sort({ time: -1 }).limit(limit).toArray(func); };
1247 obj.RemoveAllEvents = function (domain) { obj.eventsfile.deleteMany({ domain: domain }, { multi: true }); };
@@ -1427,11 +1427,11 @@ module.exports.CreateDB = function (parent, func) {
1427 obj.eventsfile.find({ domain: domain, $or: [{ ids: { $in: ids } }, { username: username }] }, { type: 0, _id: 0, domain: 0, ids: 0, node: 0 }).sort({ time: -1 }).limit(limit, func);
1428 }
1429 };
1430 - obj.GetUserLoginEvents = function (domain, username, func) {
1430 + obj.GetUserLoginEvents = function (domain, userid, func) {
1431 if (obj.databaseType == 1) {
1432 - obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, msgArgs: { $exists: true } }, { action: 1, time: 1, msgid: 1, msgArgs: 1 }).sort({ time: -1 }).exec(func);
1432 + obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, userid: userid, msgArgs: { $exists: true } }, { action: 1, time: 1, msgid: 1, msgArgs: 1 }).sort({ time: -1 }).exec(func);
1433 } else {
1434 - obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, msgArgs: { $exists: true } }, { action: 1, time: 1, msgid: 1, msgArgs: 1 }).sort({ time: -1 }, func);
1434 + obj.eventsfile.find({ domain: domain, action: { $in: ['authfail', 'login'] }, userid: userid, msgArgs: { $exists: true } }, { action: 1, time: 1, msgid: 1, msgArgs: 1 }).sort({ time: -1 }, func);
1435 }
1436 };
1437 obj.GetNodeEventsWithLimit = function (nodeid, domain, limit, func) { if (obj.databaseType == 1) { obj.eventsfile.find({ domain: domain, nodeid: nodeid }, { type: 0, etype: 0, _id: 0, domain: 0, ids: 0, node: 0, nodeid: 0 }).sort({ time: -1 }).limit(limit).exec(func); } else { obj.eventsfile.find({ domain: domain, nodeid: nodeid }, { type: 0, etype: 0, _id: 0, domain: 0, ids: 0, node: 0, nodeid: 0 }).sort({ time: -1 }).limit(limit, func); } };
meshdesktopmultiplex.js
+1 -2
@@ -564,12 +564,11 @@ function CreateDesktopMultiplexor(parent, domain, nodeid, func) {
564
565 switch (command) {
566 case 3: // Tile, check dimentions and store
567 - if (data.length < 10) break;
567 + if ((data.length < 10) || (obj.lastData == null)) break;
568 var x = data.readUInt16BE(4), y = data.readUInt16BE(6);
569 var dimensions = require('image-size')(data.slice(8));
570 var sx = (x / 16), sy = (y / 16), sw = (dimensions.width / 16), sh = (dimensions.height / 16);
571 obj.counter++;
572 - //console.log("Tile", x, y, dimensions.width, dimensions.height);
572
573 // Keep a reference to this image & how many tiles it covers
574 obj.images[obj.counter] = { next: null, prev: obj.lastData, data: jumboData };
meshuser.js
+4 -5
@@ -5401,7 +5401,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5401 // Get previous logins for self
5402 if (db.GetUserLoginEvents) {
5403 // New way
5404 - db.GetUserLoginEvents(domain.id, user._id.split('/')[2], function (err, docs) {
5404 + db.GetUserLoginEvents(domain.id, user._id, function (err, docs) {
5405 if (err != null) return;
5406 var e = [];
5407 for (var i in docs) { e.push({ t: docs[i].time, m: docs[i].msgid, a: docs[i].msgArgs }); }
@@ -5410,10 +5410,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5410 } else {
5411 // Old way
5412 db.GetUserEvents([user._id], domain.id, user._id.split('/')[2], function (err, docs) {
5413 - console.log(docs);
5413 if (err != null) return;
5414 var e = [];
5416 - for (var i in docs) { if ((docs[i].msgArgs) && ((docs[i].action == 'authfail') || (docs[i].action == 'login'))) { e.push({ t: docs[i].time, m: docs[i].msgid, a: docs[i].msgArgs }); } }
5415 + for (var i in docs) { if ((docs[i].msgArgs) && (docs[i].userid == command.userid) && ((docs[i].action == 'authfail') || (docs[i].action == 'login'))) { e.push({ t: docs[i].time, m: docs[i].msgid, a: docs[i].msgArgs }); } }
5416 try { ws.send(JSON.stringify({ action: 'previousLogins', events: e })); } catch (ex) { }
5417 });
5418 }
@@ -5424,7 +5423,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5423 if ((obj.crossDomain === true) || (splitUser[1] === domain.id)) {
5424 if (db.GetUserLoginEvents) {
5425 // New way
5427 - db.GetUserLoginEvents(splitUser[1], splitUser[2], function (err, docs) {
5426 + db.GetUserLoginEvents(splitUser[1], user._id, function (err, docs) {
5427 if (err != null) return;
5428 var e = [];
5429 for (var i in docs) { e.push({ t: docs[i].time, m: docs[i].msgid, a: docs[i].msgArgs }); }
@@ -5435,7 +5434,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5434 db.GetUserEvents([command.userid], splitUser[1], splitUser[2], function (err, docs) {
5435 if (err != null) return;
5436 var e = [];
5438 - for (var i in docs) { if ((docs[i].msgArgs) && ((docs[i].action == 'authfail') || (docs[i].action == 'login'))) { e.push({ t: docs[i].time, m: docs[i].msgid, a: docs[i].msgArgs }); } }
5437 + for (var i in docs) { if ((docs[i].msgArgs) && (docs[i].userid == command.userid) && ((docs[i].action == 'authfail') || (docs[i].action == 'login'))) { e.push({ t: docs[i].time, m: docs[i].msgid, a: docs[i].msgArgs }); } }
5438 try { ws.send(JSON.stringify({ action: 'previousLogins', userid: command.userid, events: e })); } catch (ex) { }
5439 });
5440 }