mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-07-15 03:41:50 -04:00
add connectivity filtering #7009
Signed-off-by: si458 <simonsmith5521@gmail.com>
This commit is contained in:
parent
d98f41ad31
commit
3d57a25e49
10222
translate/translate.json
10222
translate/translate.json
File diff suppressed because it is too large
Load Diff
@ -326,7 +326,7 @@
|
|||||||
<input type=button id=SelectAllButton onclick="selectallButtonFunction();" value="Select All" />
|
<input type=button id=SelectAllButton onclick="selectallButtonFunction();" value="Select All" />
|
||||||
<input type=button id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />
|
<input type=button id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />
|
||||||
<input type=button id=ScrollToTopButton onclick="onDevicesScroll(true);" style="display:none;margin-right:4px" value="Scroll To Top" />
|
<input type=button id=ScrollToTopButton onclick="onDevicesScroll(true);" style="display:none;margin-right:4px" value="Scroll To Top" />
|
||||||
<input id=SearchInput type=input autocomplete=off placeholder=Filter onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any"/>
|
<input id=SearchInput type=input autocomplete=off placeholder=Filter onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any connectivity:xxx c:xxx"/>
|
||||||
<span id=SearchInputClearButton style="display:none;position:relative"><img src="images/x16.png" type="button" onclick="clearDeviceSearch()" style="position:absolute;cursor:pointer;left:-18px;top:-8px" srcset="images/x32.png 2x"/></span>
|
<span id=SearchInputClearButton style="display:none;position:relative"><img src="images/x16.png" type="button" onclick="clearDeviceSearch()" style="position:absolute;cursor:pointer;left:-18px;top:-8px" srcset="images/x32.png 2x"/></span>
|
||||||
<select id=DevFilterSelect onchange=onOnlineCheckBox(event) title="Device Filter">
|
<select id=DevFilterSelect onchange=onOnlineCheckBox(event) title="Device Filter">
|
||||||
<option value=0>All</option>
|
<option value=0>All</option>
|
||||||
@ -6326,7 +6326,7 @@
|
|||||||
|
|
||||||
function getDevicesThatMatchFilter(x) {
|
function getDevicesThatMatchFilter(x) {
|
||||||
var r = [];
|
var r = [];
|
||||||
var userSearch = null, ipSearch = null, groupSearch = null, tagSearch = null, agentTagSearch = null, wscSearch = null, osSearch = null, amtSearch = null, descSearch = null;
|
var userSearch = null, ipSearch = null, groupSearch = null, tagSearch = null, agentTagSearch = null, wscSearch = null, osSearch = null, amtSearch = null, descSearch = null, connectivitySearch = null;
|
||||||
if (x.startsWith("user:".toLowerCase())) { userSearch = x.substring("user:".length); }
|
if (x.startsWith("user:".toLowerCase())) { userSearch = x.substring("user:".length); }
|
||||||
else if (x.startsWith("u:".toLowerCase())) { userSearch = x.substring("u:".length); }
|
else if (x.startsWith("u:".toLowerCase())) { userSearch = x.substring("u:".length); }
|
||||||
else if (x.startsWith("ip:".toLowerCase())) { ipSearch = x.substring("ip:".length); }
|
else if (x.startsWith("ip:".toLowerCase())) { ipSearch = x.substring("ip:".length); }
|
||||||
@ -6339,6 +6339,8 @@
|
|||||||
else if (x.startsWith("os:".toLowerCase())) { osSearch = x.substring("os:".length); }
|
else if (x.startsWith("os:".toLowerCase())) { osSearch = x.substring("os:".length); }
|
||||||
else if (x.startsWith("amt:".toLowerCase())) { amtSearch = x.substring("amt:".length); }
|
else if (x.startsWith("amt:".toLowerCase())) { amtSearch = x.substring("amt:".length); }
|
||||||
else if (x.startsWith("desc:".toLowerCase())) { descSearch = x.substring("desc:".length); }
|
else if (x.startsWith("desc:".toLowerCase())) { descSearch = x.substring("desc:".length); }
|
||||||
|
else if (x.startsWith("connectivity:".toLowerCase())) { connectivitySearch = x.substring("connectivity:".length); }
|
||||||
|
else if (x.startsWith("c:".toLowerCase())) { connectivitySearch = x.substring("c:".length); }
|
||||||
else if (x == 'wsc:ok') { wscSearch = 1; }
|
else if (x == 'wsc:ok') { wscSearch = 1; }
|
||||||
else if (x == 'wsc:noav') { wscSearch = 2; }
|
else if (x == 'wsc:noav') { wscSearch = 2; }
|
||||||
else if (x == 'wsc:noupdate') { wscSearch = 3; }
|
else if (x == 'wsc:noupdate') { wscSearch = 3; }
|
||||||
@ -6389,6 +6391,35 @@
|
|||||||
else if (((wscSearch == 4) || (wscSearch == 5)) && (nodes[d].wsc.firewall != 'OK')) { r.push(d); }
|
else if (((wscSearch == 4) || (wscSearch == 5)) && (nodes[d].wsc.firewall != 'OK')) { r.push(d); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (connectivitySearch != null) {
|
||||||
|
// Connectivity search
|
||||||
|
for (var d in nodes) {
|
||||||
|
if (nodes[d].conn) {
|
||||||
|
if ((nodes[d].conn & 1) != 0) {
|
||||||
|
if (nodes[d].mtype == 4) {
|
||||||
|
if ((nodes[d].porttype == 'PDU') && (connectivitySearch.toLowerCase() == 'switch')) {
|
||||||
|
r.push(d);
|
||||||
|
} else if (connectivitySearch.toLowerCase() == 'ipkvm') {
|
||||||
|
r.push(d);
|
||||||
|
}
|
||||||
|
} else if (connectivitySearch.toLowerCase() == 'agent') {
|
||||||
|
r.push(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (((nodes[d].conn & 2) != 0) && (connectivitySearch.toLowerCase() == 'cira')) { r.push(d); }
|
||||||
|
else if (((nodes[d].conn & 4) != 0) && (connectivitySearch.toLowerCase() == 'amt')) { r.push(d); }
|
||||||
|
if (((nodes[d].conn & 8) != 0) && (connectivitySearch.toLowerCase() == 'relay')) { r.push(d); }
|
||||||
|
if (((nodes[d].conn & 16) != 0) && (connectivitySearch.toLowerCase() == 'mqtt')) { r.push(d); }
|
||||||
|
}
|
||||||
|
if (nodes[d].mtype == 3) {
|
||||||
|
var mesh = meshes[nodes[d].meshid];
|
||||||
|
if (mesh && mesh.relayid && (connectivitySearch.toLowerCase() == 'relay')) {
|
||||||
|
r.push(d);
|
||||||
|
} else if (mesh && (typeof mesh.relayid == 'undefined') && connectivitySearch.toLowerCase() == 'local') {
|
||||||
|
r.push(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (x == '*') {
|
} else if (x == '*') {
|
||||||
// Star filter
|
// Star filter
|
||||||
for (var d in nodes) { if (stars[nodes[d]._id] == 1) { r.push(d); } }
|
for (var d in nodes) { if (stars[nodes[d]._id] == 1) { r.push(d); } }
|
||||||
|
@ -413,7 +413,7 @@
|
|||||||
<input type=button class="btn btn-primary me-1 btn-sm" id=SelectAllButton onclick="selectallButtonFunction();" value="Select All" />
|
<input type=button class="btn btn-primary me-1 btn-sm" id=SelectAllButton onclick="selectallButtonFunction();" value="Select All" />
|
||||||
<input type=button class="btn btn-primary me-1 btn-sm" id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />
|
<input type=button class="btn btn-primary me-1 btn-sm" id=GroupActionButton disabled="disabled" value="Group Action" onclick=groupActionFunction() />
|
||||||
<input type=button class="btn btn-primary me-1 btn-sm" id=ScrollToTopButton onclick="onDevicesScroll(true);" value="Scroll To Top" />
|
<input type=button class="btn btn-primary me-1 btn-sm" id=ScrollToTopButton onclick="onDevicesScroll(true);" value="Scroll To Top" />
|
||||||
<input type="text" id=SearchInput class="form-control-sm me-1 btn-sm" placeholder="Filter" onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any">
|
<input type="text" id=SearchInput class="form-control-sm me-1 btn-sm" placeholder="Filter" onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any connectivity:xxx c:xxx">
|
||||||
<span id=SearchInputClearButton style="display:none;position:relative">
|
<span id=SearchInputClearButton style="display:none;position:relative">
|
||||||
<span class="fa-layers fa-fw" role="button" onclick="clearDeviceSearch()" style="position:absolute;left:-25px;top:-15px">
|
<span class="fa-layers fa-fw" role="button" onclick="clearDeviceSearch()" style="position:absolute;left:-25px;top:-15px">
|
||||||
<i class="fa-solid fa-circle" style="color:var(--bs-secondary-bg)"></i>
|
<i class="fa-solid fa-circle" style="color:var(--bs-secondary-bg)"></i>
|
||||||
@ -449,7 +449,7 @@
|
|||||||
<input type="button" class="btn btn-primary me-1 btn-sm" onclick="onDevicesScroll(true);" value="Scroll To Top" />
|
<input type="button" class="btn btn-primary me-1 btn-sm" onclick="onDevicesScroll(true);" value="Scroll To Top" />
|
||||||
<div class="form-check me-1" title="Automatic connect"><input class="form-check-input me-1" type=checkbox id="autoConnectDesktopCheckbox" onclick="autoConnectDesktops(event)" /><label class="form-check-label" for="autoConnectDesktopCheckbox">Auto</label></div>
|
<div class="form-check me-1" title="Automatic connect"><input class="form-check-input me-1" type=checkbox id="autoConnectDesktopCheckbox" onclick="autoConnectDesktops(event)" /><label class="form-check-label" for="autoConnectDesktopCheckbox">Auto</label></div>
|
||||||
<input type="button" class="btn btn-primary me-1 btn-sm" onclick="showMultiDesktopSettings()" value="Settings" />
|
<input type="button" class="btn btn-primary me-1 btn-sm" onclick="showMultiDesktopSettings()" value="Settings" />
|
||||||
<input type="text" id=KvmSearchInput class="form-control-sm me-1" placeholder="Filter" onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any">
|
<input type="text" id=KvmSearchInput class="form-control-sm me-1" placeholder="Filter" onchange=onDeviceSearchChanged(event) onclick=onDeviceSearchChanged(event) onkeyup=onDeviceSearchChanged(event) onfocus=onSearchFocus(1) onblur=onSearchFocus(0) title="Filter: user:xxx or u:xxx ip:xxx group:xxx or g:xxx tag:xxx or t: xxx atag:xxx or a:xxx os:xxx amt:xxx desc:xxx wsc:ok wsc:noav wsc:noupdate wsc:nofirewall wsc:any connectivity:xxx c:xxx">
|
||||||
<span id=KvmSearchInputClearButton style="display:none;position:relative">
|
<span id=KvmSearchInputClearButton style="display:none;position:relative">
|
||||||
<span class="fa-layers fa-fw" role="button" onclick="clearDeviceSearch()" style="position:absolute;left:-25px;top:-15px">
|
<span class="fa-layers fa-fw" role="button" onclick="clearDeviceSearch()" style="position:absolute;left:-25px;top:-15px">
|
||||||
<i class="fa-solid fa-circle" style="color:var(--bs-secondary-bg)"></i>
|
<i class="fa-solid fa-circle" style="color:var(--bs-secondary-bg)"></i>
|
||||||
@ -7008,7 +7008,7 @@
|
|||||||
|
|
||||||
function getDevicesThatMatchFilter(x) {
|
function getDevicesThatMatchFilter(x) {
|
||||||
var r = [];
|
var r = [];
|
||||||
var userSearch = null, ipSearch = null, groupSearch = null, tagSearch = null, agentTagSearch = null, wscSearch = null, osSearch = null, amtSearch = null, descSearch = null;
|
var userSearch = null, ipSearch = null, groupSearch = null, tagSearch = null, agentTagSearch = null, wscSearch = null, osSearch = null, amtSearch = null, descSearch = null, connectivitySearch = null;
|
||||||
if (x.startsWith("user:".toLowerCase())) { userSearch = x.substring("user:".length); }
|
if (x.startsWith("user:".toLowerCase())) { userSearch = x.substring("user:".length); }
|
||||||
else if (x.startsWith("u:".toLowerCase())) { userSearch = x.substring("u:".length); }
|
else if (x.startsWith("u:".toLowerCase())) { userSearch = x.substring("u:".length); }
|
||||||
else if (x.startsWith("ip:".toLowerCase())) { ipSearch = x.substring("ip:".length); }
|
else if (x.startsWith("ip:".toLowerCase())) { ipSearch = x.substring("ip:".length); }
|
||||||
@ -7021,6 +7021,8 @@
|
|||||||
else if (x.startsWith("os:".toLowerCase())) { osSearch = x.substring("os:".length); }
|
else if (x.startsWith("os:".toLowerCase())) { osSearch = x.substring("os:".length); }
|
||||||
else if (x.startsWith("amt:".toLowerCase())) { amtSearch = x.substring("amt:".length); }
|
else if (x.startsWith("amt:".toLowerCase())) { amtSearch = x.substring("amt:".length); }
|
||||||
else if (x.startsWith("desc:".toLowerCase())) { descSearch = x.substring("desc:".length); }
|
else if (x.startsWith("desc:".toLowerCase())) { descSearch = x.substring("desc:".length); }
|
||||||
|
else if (x.startsWith("connectivity:".toLowerCase())) { connectivitySearch = x.substring("connectivity:".length); }
|
||||||
|
else if (x.startsWith("c:".toLowerCase())) { connectivitySearch = x.substring("c:".length); }
|
||||||
else if (x == 'wsc:ok') { wscSearch = 1; }
|
else if (x == 'wsc:ok') { wscSearch = 1; }
|
||||||
else if (x == 'wsc:noav') { wscSearch = 2; }
|
else if (x == 'wsc:noav') { wscSearch = 2; }
|
||||||
else if (x == 'wsc:noupdate') { wscSearch = 3; }
|
else if (x == 'wsc:noupdate') { wscSearch = 3; }
|
||||||
@ -7071,6 +7073,35 @@
|
|||||||
else if (((wscSearch == 4) || (wscSearch == 5)) && (nodes[d].wsc.firewall != 'OK')) { r.push(d); }
|
else if (((wscSearch == 4) || (wscSearch == 5)) && (nodes[d].wsc.firewall != 'OK')) { r.push(d); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (connectivitySearch != null) {
|
||||||
|
// Connectivity search
|
||||||
|
for (var d in nodes) {
|
||||||
|
if (nodes[d].conn) {
|
||||||
|
if ((nodes[d].conn & 1) != 0) {
|
||||||
|
if (nodes[d].mtype == 4) {
|
||||||
|
if ((nodes[d].porttype == 'PDU') && (connectivitySearch.toLowerCase() == 'switch')) {
|
||||||
|
r.push(d);
|
||||||
|
} else if (connectivitySearch.toLowerCase() == 'ipkvm') {
|
||||||
|
r.push(d);
|
||||||
|
}
|
||||||
|
} else if (connectivitySearch.toLowerCase() == 'agent') {
|
||||||
|
r.push(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (((nodes[d].conn & 2) != 0) && (connectivitySearch.toLowerCase() == 'cira')) { r.push(d); }
|
||||||
|
else if (((nodes[d].conn & 4) != 0) && (connectivitySearch.toLowerCase() == 'amt')) { r.push(d); }
|
||||||
|
if (((nodes[d].conn & 8) != 0) && (connectivitySearch.toLowerCase() == 'relay')) { r.push(d); }
|
||||||
|
if (((nodes[d].conn & 16) != 0) && (connectivitySearch.toLowerCase() == 'mqtt')) { r.push(d); }
|
||||||
|
}
|
||||||
|
if (nodes[d].mtype == 3) {
|
||||||
|
var mesh = meshes[nodes[d].meshid];
|
||||||
|
if (mesh && mesh.relayid && (connectivitySearch.toLowerCase() == 'relay')) {
|
||||||
|
r.push(d);
|
||||||
|
} else if (mesh && (typeof mesh.relayid == 'undefined') && connectivitySearch.toLowerCase() == 'local') {
|
||||||
|
r.push(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (x == '*') {
|
} else if (x == '*') {
|
||||||
// Star filter
|
// Star filter
|
||||||
for (var d in nodes) { if (stars[nodes[d]._id] == 1) { r.push(d); } }
|
for (var d in nodes) { if (stars[nodes[d]._id] == 1) { r.push(d); } }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user