diff --git a/meshcentral-config-schema.json b/meshcentral-config-schema.json
index 482bf01c..ffb4431c 100644
--- a/meshcentral-config-schema.json
+++ b/meshcentral-config-schema.json
@@ -246,6 +246,11 @@
"port": {
"description": "The port on the remote device.",
"type": "number"
+ },
+ "filter": {
+ "description": "Array of node/domain/id or mesh/domain/id strings. When set, the link will only show up for the specified devices or device groups.",
+ "type": "array",
+ "items": { "type": "string" }
}
}
}
diff --git a/sample-config-advanced.json b/sample-config-advanced.json
index e0001dcd..29999e2f 100644
--- a/sample-config-advanced.json
+++ b/sample-config-advanced.json
@@ -157,7 +157,8 @@
{
"name": "HTTP",
"protocol": "http",
- "port": 80
+ "port": 80,
+ "_filter": [ "mesh//xxxx", "node//xxxx" ]
},
{
"name": "HTTPS",
diff --git a/views/default.handlebars b/views/default.handlebars
index e1b76ed4..74299cd6 100644
--- a/views/default.handlebars
+++ b/views/default.handlebars
@@ -6115,8 +6115,10 @@
if ((serverinfo.devicemeshrouterlinks != null) && (Array.isArray(serverinfo.devicemeshrouterlinks.extralinks))) {
for (var i in serverinfo.devicemeshrouterlinks.extralinks) {
var r = serverinfo.devicemeshrouterlinks.extralinks[i], p = 0;
- if (typeof r.protocol == 'number') { p = r.protocol; } else if (r.protocol == 'http') { p = 1; } else if (r.protocol == 'https') { p = 2; } else if (r.protocol == 'rdp') { p = 3; } else if (r.protocol == 'ssh') { p = 4; } else if (r.protocol == 'scp') { p = 5; }
- x += '' + r.name + ' ';
+ if ((r.filter == null) || (Array.isArray(r.filter) && ((r.filter.indexOf(mesh._id) >= 0) || (r.filter.indexOf(node._id) >= 0)))) {
+ if (typeof r.protocol == 'number') { p = r.protocol; } else if (r.protocol == 'http') { p = 1; } else if (r.protocol == 'https') { p = 2; } else if (r.protocol == 'rdp') { p = 3; } else if (r.protocol == 'ssh') { p = 4; } else if (r.protocol == 'scp') { p = 5; }
+ x += '' + r.name + ' ';
+ }
}
}
}