diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json index f60f90c7..f4a54eec 100644 --- a/meshcentral-config-schema.json +++ b/meshcentral-config-schema.json @@ -306,6 +306,7 @@ "loginfooter": { "type": "string", "default": null, "description": "This is a HTML string displayed at the bottom of the web page when a user is not logged in." }, "guestDeviceSharing": { "type": "boolean", "default": true, "description": "When set to false, the desktop/terminal sharing link feature is not available." }, "autoRemoveInactiveDevices": { "type": "integer", "default": 0, "minimum": 0, "maximum": 2000, "description": "Number of days a device can be inactive before it's removed. 0 disables this feature. Device group setting will override this value." }, + "DeviceSearchBarServerAndClientName": { "type": "boolean", "default": false, "description": "When set to true, the devices search box will match on both the server name and client name of a device." }, "altMessenging": { "type": "object", "properties": { diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars index cd373a5c..735c4ed6 100644 --- a/views/default-mobile.handlebars +++ b/views/default-mobile.handlebars @@ -2055,6 +2055,7 @@ updateNaggleFlags |= flags; if (updateNaggleTimer == null) { updateNaggleTimer = setTimeout(function () { + if (updateNaggleFlags & 1) { onSearchInputChanged(); } if (updateNaggleFlags & 4) { updateDevices(); updateDeviceDetails(); } if (updateNaggleFlags & 128) { updateMeshes(); } updateNaggleTimer = null; @@ -2674,7 +2675,7 @@ function onRealNameCheckBox() { showRealNames = Q('RealNameCheckBox').checked; putstore('showRealNames', showRealNames ? 1 : 0); - mainUpdate(4); + mainUpdate(5); } function onOnlineCheckBox(e) { @@ -2763,15 +2764,13 @@ try { var rs = x.split(/\s+/).join('|'), rx = new RegExp(rs); // In some cases (like +), this can throw an exception. for (var d in nodes) { - nodes[d].v = (rx.test(nodes[d].name.toLowerCase())) || (nodes[d].rnamel != null && rx.test(nodes[d].rnamel.toLowerCase())); - if ((nodes[d].v == false) && nodes[d].tags) { - for (var s in nodes[d].tags) { - if (rx.test(nodes[d].tags[s].toLowerCase())) { - nodes[d].v = true; - break; - } else { - nodes[d].v = false; - } + if (features2 & 0x00008000) { + nodes[d].v = (rx.test(nodes[d].name.toLowerCase())) || ((nodes[d].rnamel != null) && rx.test(nodes[d].rnamel.toLowerCase())); + } else { + if (showRealNames) { + nodes[d].v = (nodes[d].rnamel != null) && rx.test(nodes[d].rnamel.toLowerCase()); + } else { + nodes[d].v = rx.test(nodes[d].name.toLowerCase()); } } } diff --git a/views/default.handlebars b/views/default.handlebars index ffaf4639..ed10bd6b 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -5577,10 +5577,14 @@ try { var rs = x.split(/\s+/).join('|'), rx = new RegExp(rs); // In some cases (like +), this can throw an exception. for (var d in nodes) { - if (showRealNames) { - if (nodes[d].rnamel != null && rx.test(nodes[d].rnamel.toLowerCase())) { r.push(d); } + if (features2 & 0x00008000) { // Both server and client names must match + if (rx.test(nodes[d].name.toLowerCase()) || ((nodes[d].rnamel != null) && rx.test(nodes[d].rnamel.toLowerCase()))) { r.push(d); } } else { - if (rx.test(nodes[d].name.toLowerCase())) { r.push(d); } + if (showRealNames) { + if (nodes[d].rnamel != null && rx.test(nodes[d].rnamel.toLowerCase())) { r.push(d); } + } else { + if (rx.test(nodes[d].name.toLowerCase())) { r.push(d); } + } } } } catch (ex) { for (var d in nodes) { r.push(d); } } diff --git a/webserver.js b/webserver.js index 6926474a..de22d5a3 100644 --- a/webserver.js +++ b/webserver.js @@ -2846,6 +2846,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) { if (domain.clipboardset == false) { features2 += 0x00001000; } // Disable clipboard set if ((typeof domain.desktop == 'object') && (domain.desktop.viewonly == true)) { features2 += 0x00002000; } // Indicates remote desktop is viewonly if (domain.mailserver != null) { features2 += 0x00004000; } // Indicates email server is active + if (domain.devicesearchbarserverandclientname) { features2 += 0x00008000; } // Search bar will find both server name and client name return { features: features, features2: features2 }; }