mirror of
				https://github.com/owncloud/android-library.git
				synced 2025-10-28 17:07:49 +00:00 
			
		
		
		
	Filter only '/' character in user input when version of server is 8.1 or later
This commit is contained in:
		
							parent
							
								
									e48aa9c304
								
							
						
					
					
						commit
						9fc332eef9
					
				| @ -51,6 +51,7 @@ import com.owncloud.android.lib.common.OwnCloudCredentialsFactory.OwnCloudAnonym | |||||||
| import com.owncloud.android.lib.common.accounts.AccountUtils; | import com.owncloud.android.lib.common.accounts.AccountUtils; | ||||||
| import com.owncloud.android.lib.common.network.WebdavUtils; | import com.owncloud.android.lib.common.network.WebdavUtils; | ||||||
| import com.owncloud.android.lib.common.utils.Log_OC; | import com.owncloud.android.lib.common.utils.Log_OC; | ||||||
|  | import com.owncloud.android.lib.resources.status.OwnCloudVersion; | ||||||
| 
 | 
 | ||||||
| public class OwnCloudClient extends HttpClient { | public class OwnCloudClient extends HttpClient { | ||||||
| 	 | 	 | ||||||
| @ -67,6 +68,8 @@ public class OwnCloudClient extends HttpClient { | |||||||
|     private int mInstanceNumber = 0; |     private int mInstanceNumber = 0; | ||||||
|      |      | ||||||
|     private Uri mBaseUri; |     private Uri mBaseUri; | ||||||
|  | 
 | ||||||
|  |     private OwnCloudVersion mVersion = null; | ||||||
|      |      | ||||||
|     /** |     /** | ||||||
|      * Constructor |      * Constructor | ||||||
| @ -436,4 +439,12 @@ public class OwnCloudClient extends HttpClient { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |     public void setOwnCloudVersion(String version){ | ||||||
|  |         OwnCloudVersion ver = new OwnCloudVersion(version); | ||||||
|  |         mVersion = ver; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public OwnCloudVersion getOwnCloudVersion(){ | ||||||
|  |         return mVersion; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -24,7 +24,6 @@ | |||||||
| 
 | 
 | ||||||
| package com.owncloud.android.lib.resources.files; | package com.owncloud.android.lib.resources.files; | ||||||
| 
 | 
 | ||||||
| import org.apache.commons.httpclient.HttpStatus; |  | ||||||
| import org.apache.jackrabbit.webdav.client.methods.MkColMethod; | import org.apache.jackrabbit.webdav.client.methods.MkColMethod; | ||||||
| 
 | 
 | ||||||
| import com.owncloud.android.lib.common.OwnCloudClient; | import com.owncloud.android.lib.common.OwnCloudClient; | ||||||
| @ -73,7 +72,8 @@ public class CreateRemoteFolderOperation extends RemoteOperation { | |||||||
|     @Override |     @Override | ||||||
|     protected RemoteOperationResult run(OwnCloudClient client) { |     protected RemoteOperationResult run(OwnCloudClient client) { | ||||||
|         RemoteOperationResult result = null; |         RemoteOperationResult result = null; | ||||||
|         boolean noInvalidChars = FileUtils.isValidPath(mRemotePath); |         boolean noInvalidChars = FileUtils.isValidPath(mRemotePath, | ||||||
|  |                 client.getOwnCloudVersion().isVersionWithForbiddenCharacters()); | ||||||
|         if (noInvalidChars) { |         if (noInvalidChars) { | ||||||
|         	result = createFolder(client); |         	result = createFolder(client); | ||||||
|     		if (!result.isSuccess() && mCreateFullPath &&  |     		if (!result.isSuccess() && mCreateFullPath &&  | ||||||
|  | |||||||
| @ -27,9 +27,12 @@ package com.owncloud.android.lib.resources.files; | |||||||
| import java.io.File; | import java.io.File; | ||||||
| 
 | 
 | ||||||
| import com.owncloud.android.lib.common.utils.Log_OC; | import com.owncloud.android.lib.common.utils.Log_OC; | ||||||
|  | import com.owncloud.android.lib.resources.status.OwnCloudVersion; | ||||||
| 
 | 
 | ||||||
| public class FileUtils { | public class FileUtils { | ||||||
| 
 | 
 | ||||||
|  | 	private static final  String TAG = FileUtils.class.getSimpleName(); | ||||||
|  | 
 | ||||||
| 	public static final String PATH_SEPARATOR = "/"; | 	public static final String PATH_SEPARATOR = "/"; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -40,39 +43,44 @@ public class FileUtils { | |||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	/** | 	/** | ||||||
| 	 * Validate the fileName to detect if contains any forbidden character: / , \ , < , > , : , " , | , ? , * | 	 * Validate the fileName to detect if contains any forbidden character: / , \ , < , > , | ||||||
|  | 	 * : , " , | , ? , * | ||||||
| 	 * @param fileName | 	 * @param fileName | ||||||
|  | 	 * @param versionSupportsForbiddenChars | ||||||
| 	 * @return | 	 * @return | ||||||
| 	 */ | 	 */ | ||||||
| 	public static boolean isValidName(String fileName) { | 	public static boolean isValidName(String fileName, boolean versionSupportsForbiddenChars) { | ||||||
| 		boolean result = true; | 		boolean result = true; | ||||||
| 		 | 		 | ||||||
| 		Log_OC.d("FileUtils", "fileName =======" + fileName); | 		Log_OC.d(TAG, "fileName =======" + fileName); | ||||||
| 		if (fileName.contains(PATH_SEPARATOR) || | 		if ( (versionSupportsForbiddenChars && fileName.contains(PATH_SEPARATOR)) || | ||||||
|  | 				(!versionSupportsForbiddenChars && ( fileName.contains(PATH_SEPARATOR) || | ||||||
| 				fileName.contains("\\") || fileName.contains("<") || fileName.contains(">") || | 				fileName.contains("\\") || fileName.contains("<") || fileName.contains(">") || | ||||||
| 				fileName.contains(":") || fileName.contains("\"") || fileName.contains("|") ||  | 				fileName.contains(":") || fileName.contains("\"") || fileName.contains("|") || | ||||||
| 				fileName.contains("?") || fileName.contains("*")) { | 				fileName.contains("?") || fileName.contains("*") ) ) ) { | ||||||
|  | 
 | ||||||
| 			result = false; | 			result = false; | ||||||
| 		} | 		} | ||||||
| 		return result; | 		return result; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	/** | 	/** | ||||||
| 	 * Validate the path to detect if contains any forbidden character: \ , < , > , : , " , | , ? , * | 	 * Validate the path to detect if contains any forbidden character: \ , < , > , : , " , | , | ||||||
|  | 	 * ? , * | ||||||
| 	 * @param path | 	 * @param path | ||||||
| 	 * @return | 	 * @return | ||||||
| 	 */ | 	 */ | ||||||
| 	public static boolean isValidPath(String path) { | 	public static boolean isValidPath(String path, boolean versionSupportsForbidenChars) { | ||||||
| 		boolean result = true; | 		boolean result = true; | ||||||
| 		 | 		 | ||||||
| 		Log_OC.d("FileUtils", "path ....... " + path); | 		Log_OC.d(TAG, "path ....... " + path); | ||||||
| 		if (path.contains("\\") || path.contains("<") || path.contains(">") || | 		if (!versionSupportsForbidenChars && | ||||||
|  | 				(path.contains("\\") || path.contains("<") || path.contains(">") || | ||||||
| 				path.contains(":") || path.contains("\"") || path.contains("|") ||  | 				path.contains(":") || path.contains("\"") || path.contains("|") ||  | ||||||
| 				path.contains("?") || path.contains("*")) { | 				path.contains("?") || path.contains("*") ) ){ | ||||||
| 			result = false; | 			result = false; | ||||||
| 		} | 		} | ||||||
| 		return result; | 		return result; | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	 | 	 | ||||||
| } | } | ||||||
|  | |||||||
| @ -89,7 +89,8 @@ public class MoveRemoteFileOperation extends RemoteOperation { | |||||||
| 	protected RemoteOperationResult run(OwnCloudClient client) { | 	protected RemoteOperationResult run(OwnCloudClient client) { | ||||||
| 		 | 		 | ||||||
|     	/// check parameters |     	/// check parameters | ||||||
|         if (!FileUtils.isValidPath(mTargetRemotePath)) { |         if (!FileUtils.isValidPath(mTargetRemotePath, | ||||||
|  |                 client.getOwnCloudVersion().isVersionWithForbiddenCharacters())) { | ||||||
|         	return new RemoteOperationResult(ResultCode.INVALID_CHARACTER_IN_NAME); |         	return new RemoteOperationResult(ResultCode.INVALID_CHARACTER_IN_NAME); | ||||||
|         } |         } | ||||||
|          |          | ||||||
|  | |||||||
| @ -89,7 +89,8 @@ public class RenameRemoteFileOperation extends RemoteOperation { | |||||||
| 		 | 		 | ||||||
| 		LocalMoveMethod move = null; | 		LocalMoveMethod move = null; | ||||||
|          |          | ||||||
|         boolean noInvalidChars = FileUtils.isValidPath(mNewRemotePath); |         boolean noInvalidChars = FileUtils.isValidPath(mNewRemotePath, | ||||||
|  |                 client.getOwnCloudVersion().isVersionWithForbiddenCharacters()); | ||||||
|          |          | ||||||
|         if (noInvalidChars) { |         if (noInvalidChars) { | ||||||
|         try { |         try { | ||||||
|  | |||||||
| @ -38,6 +38,8 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> { | |||||||
|             0x04050000); |             0x04050000); | ||||||
|      |      | ||||||
|     public static final int MINIMUM_VERSION_FOR_SHARING_API = 0x05001B00; // 5.0.27 |     public static final int MINIMUM_VERSION_FOR_SHARING_API = 0x05001B00; // 5.0.27 | ||||||
|  | 
 | ||||||
|  |     public static final int MINIMUM_VERSION_WITH_FORBIDDEN_CHARS = 0x08010000; // 8.1 | ||||||
|      |      | ||||||
|     private static final int MAX_DOTS = 3; |     private static final int MAX_DOTS = 3; | ||||||
|      |      | ||||||
| @ -120,6 +122,10 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> { | |||||||
|     public boolean isSharedSupported() { |     public boolean isSharedSupported() { | ||||||
|     	return (mVersion >= MINIMUM_VERSION_FOR_SHARING_API); |     	return (mVersion >= MINIMUM_VERSION_FOR_SHARING_API); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     public boolean isVersionWithForbiddenCharacters() { | ||||||
|  |         return (mVersion >= MINIMUM_VERSION_WITH_FORBIDDEN_CHARS); | ||||||
|  |     } | ||||||
|      |      | ||||||
|      |      | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user