1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-08 00:16:09 +00:00

Filter only '/' character in user input when version of server is 8.1 or later

This commit is contained in:
masensio 2015-06-02 09:37:46 +02:00
parent e48aa9c304
commit 9fc332eef9
6 changed files with 43 additions and 16 deletions

View File

@ -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 {
@ -68,6 +69,8 @@ public class OwnCloudClient extends HttpClient {
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;
}
} }

View File

@ -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 &&

View File

@ -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;
} }
} }

View File

@ -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);
} }

View File

@ -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 {

View File

@ -39,6 +39,8 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
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;
// format is in version // format is in version
@ -121,5 +123,9 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
return (mVersion >= MINIMUM_VERSION_FOR_SHARING_API); return (mVersion >= MINIMUM_VERSION_FOR_SHARING_API);
} }
public boolean isVersionWithForbiddenCharacters() {
return (mVersion >= MINIMUM_VERSION_WITH_FORBIDDEN_CHARS);
}
} }