From 85a7a58bd320d2e1e129d10c17952da8e826db84 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Thu, 18 Jun 2020 14:01:31 -0700 Subject: [PATCH] GUACAMOLE-820: Match IP address filters against IP addresses anywhere in object properties. --- .../webapp/app/list/types/FilterPattern.js | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/guacamole/src/main/webapp/app/list/types/FilterPattern.js b/guacamole/src/main/webapp/app/list/types/FilterPattern.js index 973774971..f67b29902 100644 --- a/guacamole/src/main/webapp/app/list/types/FilterPattern.js +++ b/guacamole/src/main/webapp/app/list/types/FilterPattern.js @@ -124,10 +124,14 @@ angular.module('list').factory('FilterPattern', ['$injector', // For each defined getter for (var i=0; i < getters.length; i++) { - // Test value against IPv4 network - var value = IPv4Network.parse(String(getters[i](object))); - if (value && network.contains(value)) - return true; + // Test each possible IPv4 address within the string against + // the given IPv4 network + var addresses = String(getters[i](object)).split(/[^0-9.]+/); + for (var j=0; j < addresses.length; j++) { + var value = IPv4Network.parse(addresses[j]); + if (value && network.contains(value)) + return true; + } } @@ -154,10 +158,14 @@ angular.module('list').factory('FilterPattern', ['$injector', // For each defined getter for (var i=0; i < getters.length; i++) { - // Test value against IPv6 network - var value = IPv6Network.parse(String(getters[i](object))); - if (value && network.contains(value)) - return true; + // Test each possible IPv6 address within the string against + // the given IPv6 network + var addresses = String(getters[i](object)).split(/[^0-9A-Fa-f:]+/); + for (var j=0; j < addresses.length; j++) { + var value = IPv6Network.parse(addresses[j]); + if (value && network.contains(value)) + return true; + } }