You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by an...@apache.org on 2017/02/14 11:58:38 UTC
ranger git commit: RANGER-1379 : Good coding practice for concurrent
modification
Repository: ranger
Updated Branches:
refs/heads/master 3802c841a -> 2d406044f
RANGER-1379 : Good coding practice for concurrent modification
Project: http://git-wip-us.apache.org/repos/asf/ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/2d406044
Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/2d406044
Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/2d406044
Branch: refs/heads/master
Commit: 2d406044fafb574400bc66d06ee679f6dda5ed23
Parents: 3802c84
Author: Ankita Sinha <an...@apache.org>
Authored: Tue Feb 14 17:13:42 2017 +0530
Committer: Ankita Sinha <an...@apache.org>
Committed: Tue Feb 14 17:13:42 2017 +0530
----------------------------------------------------------------------
.../org/apache/ranger/rest/ServiceREST.java | 14 ++++-----
.../web/filter/RangerCSRFPreventionFilter.java | 30 +++++++-------------
.../security/web/filter/RangerKrbFilter.java | 28 +++++++-----------
.../conf.dist/ranger-admin-default-site.xml | 4 +--
4 files changed, 30 insertions(+), 46 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ranger/blob/2d406044/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index daf3c8e..9ec81b3 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -1810,8 +1810,8 @@ public class ServiceREST {
List<String> dataFileSourceServices = new ArrayList<String>();
if (fileName.endsWith("json")) {
try {
- RangerExportPolicyList rangerExportPolicyList = new RangerExportPolicyList();
- List<RangerPolicy> policies = new ArrayList<RangerPolicy>();
+ RangerExportPolicyList rangerExportPolicyList = null;
+ List<RangerPolicy> policies = null;
Gson gson = new Gson();
String policiesString = IOUtils.toString(uploadedInputStream);
@@ -1823,19 +1823,19 @@ public class ServiceREST {
LOG.error("Provided json file is empty!!");
throw restErrorUtil.createRESTException("Provided json file is empty!!");
}
- if (!CollectionUtils.sizeIsEmpty(rangerExportPolicyList.getMetaDataInfo())){
+ if (rangerExportPolicyList != null && !CollectionUtils.sizeIsEmpty(rangerExportPolicyList.getMetaDataInfo())){
metaDataInfo = new ObjectMapper().writeValueAsString(rangerExportPolicyList.getMetaDataInfo());
} else {
LOG.info("metadata info is not provided!!");
}
- if (!CollectionUtils.sizeIsEmpty(rangerExportPolicyList.getPolicies())){
+ if (rangerExportPolicyList != null && !CollectionUtils.sizeIsEmpty(rangerExportPolicyList.getPolicies())){
policies = rangerExportPolicyList.getPolicies();
} else {
LOG.error("Provided json file does not contain any policy!!");
throw restErrorUtil.createRESTException("Provided json file does not contain any policy!!");
}
if (CollectionUtils.sizeIsEmpty(servicesMappingMap) && isOverride){
- if(!CollectionUtils.sizeIsEmpty(policies)){
+ if(policies != null && !CollectionUtils.sizeIsEmpty(policies)){
for (RangerPolicy policyInJson: policies){
if (policyInJson != null) {
if (StringUtils.isNotEmpty(policyInJson.getService().trim())) {
@@ -1855,7 +1855,7 @@ public class ServiceREST {
}
}
}else if (!CollectionUtils.sizeIsEmpty(servicesMappingMap)) {
- if (!CollectionUtils.sizeIsEmpty(policies)){
+ if (policies != null && !CollectionUtils.sizeIsEmpty(policies)){
for (RangerPolicy policyInJson: policies){
if (policyInJson != null){
if (StringUtils.isNotEmpty(policyInJson.getService().trim())) {
@@ -1881,7 +1881,7 @@ public class ServiceREST {
destinationServices, null);
}
}
- if (!CollectionUtils.sizeIsEmpty(policies)){
+ if (policies != null && !CollectionUtils.sizeIsEmpty(policies)){
for (RangerPolicy policyInJson: policies){
if (policyInJson != null){
policiesMap = svcStore.createPolicyMap(servicesMappingMap, sourceServices, destinationServices, policyInJson, policiesMap);
http://git-wip-us.apache.org/repos/asf/ranger/blob/2d406044/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerCSRFPreventionFilter.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerCSRFPreventionFilter.java b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerCSRFPreventionFilter.java
index 36a0fa3..6eabbb9 100644
--- a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerCSRFPreventionFilter.java
+++ b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerCSRFPreventionFilter.java
@@ -22,16 +22,12 @@ package org.apache.ranger.security.web.filter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
-
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -43,7 +39,7 @@ public class RangerCSRFPreventionFilter implements Filter {
private static final Logger LOG = Logger.getLogger(RangerCSRFPreventionFilter.class);
public static final String BROWSER_USER_AGENT_PARAM = "ranger.rest-csrf.browser-useragents-regex";
- public static final String BROWSER_USER_AGENTS_DEFAULT = "^Mozilla.*,^Opera.*,^Chrome.*";
+ public static final String BROWSER_USER_AGENTS_DEFAULT = "Mozilla,Opera,Chrome";
public static final String CUSTOM_METHODS_TO_IGNORE_PARAM = "ranger.rest-csrf.methods-to-ignore";
public static final String METHODS_TO_IGNORE_DEFAULT = "GET,OPTIONS,HEAD,TRACE";
public static final String CUSTOM_HEADER_PARAM = "ranger.rest-csrf.custom-header";
@@ -53,7 +49,7 @@ public class RangerCSRFPreventionFilter implements Filter {
private String headerName = HEADER_DEFAULT;
private Set<String> methodsToIgnore = null;
- private Set<Pattern> browserUserAgents;
+ private String[] browserUserAgents;
public RangerCSRFPreventionFilter() {
try {
@@ -94,26 +90,20 @@ public class RangerCSRFPreventionFilter implements Filter {
}
void parseBrowserUserAgents(String userAgents) {
- String[] agentsArray = userAgents.split(",");
- browserUserAgents = new HashSet<Pattern>();
- for (String patternString : agentsArray) {
- browserUserAgents.add(Pattern.compile(patternString));
- }
+ browserUserAgents = userAgents.split(",");
}
protected boolean isBrowser(String userAgent) {
- if (userAgent == null) {
- return false;
- }
- if (browserUserAgents != null){
- for (Pattern pattern : browserUserAgents) {
- Matcher matcher = pattern.matcher(userAgent);
- if (matcher.matches()) {
- return true;
+ boolean isWeb = false;
+ if (browserUserAgents != null && browserUserAgents.length > 0 && userAgent != null) {
+ for (String ua : browserUserAgents) {
+ if (userAgent.toLowerCase().startsWith(ua.toLowerCase())) {
+ isWeb = true;
+ break;
}
}
}
- return false;
+ return isWeb;
}
public interface HttpInteraction {
http://git-wip-us.apache.org/repos/asf/ranger/blob/2d406044/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerKrbFilter.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerKrbFilter.java b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerKrbFilter.java
index d10fc46..dbf6248 100644
--- a/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerKrbFilter.java
+++ b/security-admin/src/main/java/org/apache/ranger/security/web/filter/RangerKrbFilter.java
@@ -107,7 +107,7 @@ public class RangerKrbFilter implements Filter {
private static final String BROWSER_USER_AGENT_PARAM = "ranger.krb.browser-useragents-regex";
- private Set<Pattern> browserUserAgents;
+ private String[] browserUserAgents;
private Properties config;
private Signer signer;
@@ -590,27 +590,21 @@ public class RangerKrbFilter implements Filter {
resp.addHeader("Set-Cookie", sb.toString());
}
- void parseBrowserUserAgents(String userAgents) {
- String[] agentsArray = userAgents.split(",");
- browserUserAgents = new HashSet<Pattern>();
- for (String patternString : agentsArray) {
- browserUserAgents.add(Pattern.compile(patternString));
- }
+ void parseBrowserUserAgents(String userAgents) {
+ browserUserAgents = userAgents.split(",");
}
-
+
protected boolean isBrowser(String userAgent) {
- if (userAgent == null) {
- return false;
- }
- if (browserUserAgents != null){
- for (Pattern pattern : browserUserAgents) {
- Matcher matcher = pattern.matcher(userAgent);
- if (matcher.matches()) {
- return true;
+ boolean isWeb = false;
+ if (browserUserAgents != null && browserUserAgents.length > 0 && userAgent != null) {
+ for (String ua : browserUserAgents) {
+ if (userAgent.toLowerCase().startsWith(ua.toLowerCase())) {
+ isWeb = true;
+ break;
}
}
}
- return false;
+ return isWeb;
}
}
http://git-wip-us.apache.org/repos/asf/ranger/blob/2d406044/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
----------------------------------------------------------------------
diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
index 8cd26a6..08ed436 100644
--- a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
+++ b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
@@ -481,11 +481,11 @@
</property>
<property>
<name>ranger.rest-csrf.browser-useragents-regex</name>
- <value>^Mozilla.*,^Opera.*,^Chrome.*</value>
+ <value>Mozilla,Opera,Chrome</value>
</property>
<property>
<name>ranger.krb.browser-useragents-regex</name>
- <value>^Mozilla.*,^Opera.*,^Chrome.*</value>
+ <value>Mozilla,Opera,Chrome</value>
</property>
<property>
<name>ranger.db.ssl.enabled</name>