mirror of
https://github.com/owncloud/android-library.git
synced 2025-06-07 16:06:08 +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