Merge staging/1.2.0 changes back to master.
diff --git a/guacamole/src/main/webapp/app/list/types/FilterPattern.js b/guacamole/src/main/webapp/app/list/types/FilterPattern.js
index 9737749..f67b299 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 @@
             // 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 @@
             // 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;
+                }
 
             }