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 + ' '; + } } } }