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>