Repository: karaf Updated Branches: refs/heads/karaf-3.0.x 9626f7d39 -> 7c6b1ed06
[KARAF-3022]RBAC - support the JMX operation match starts with a wildcard (cherry picked from commit 33674bd395334366db889ed6e1af37eb0e0078fd) Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/7c6b1ed0 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/7c6b1ed0 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/7c6b1ed0 Branch: refs/heads/karaf-3.0.x Commit: 7c6b1ed068131e9201809dd864d56e5277d7b77c Parents: 9626f7d Author: Freeman Fang <[email protected]> Authored: Fri Jun 6 16:01:56 2014 +0800 Committer: Freeman Fang <[email protected]> Committed: Fri Jun 6 16:02:53 2014 +0800 ---------------------------------------------------------------------- .../guard/tools/ACLConfigurationParser.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/7c6b1ed0/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java ---------------------------------------------------------------------- diff --git a/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java b/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java index 1449c7b..b389a90 100644 --- a/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java +++ b/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java @@ -274,15 +274,25 @@ public class ACLConfigurationParser { return s2.length() - s1.length(); } }); + for (Enumeration<String> e = properties.keys(); e.hasMoreElements(); ) { String key = e.nextElement(); if (key.endsWith("*")) { - String str = key.substring(0, key.length() - 1); - if (str.startsWith("*")) { - str = str.substring(1); + String prefix = key.substring(0, key.length() - 1); + if (methodName.startsWith(prefix)) { + wildcardRules.put(prefix, properties.get(key).toString()); } - if (methodName.contains(str)) { - wildcardRules.put(str, properties.get(key).toString()); + } + if (key.startsWith("*")) { + String suffix = key.substring(1); + if (methodName.endsWith(suffix)) { + wildcardRules.put(suffix, properties.get(key).toString()); + } + } + if (key.startsWith("*") && key.endsWith("*") && key.length() > 1) { + String middle = key.substring(1, key.length() - 1); + if (methodName.contains(middle)) { + wildcardRules.put(middle, properties.get(key).toString()); } } }
