|
@@ -566,6 +566,8 @@ import NCCommunication
|
|
|
@objc func createFolder(fileName: String, serverUrl: String, account: String, user: String, userID: String, password: String, url: String, completion: @escaping (_ errorCode: Int, _ errorDescription: String)->()) {
|
|
|
|
|
|
var fileNameFolder = CCUtility.removeForbiddenCharactersServer(fileName)!
|
|
|
+ var fileNameFolderUrl = ""
|
|
|
+ var fileNameIdentifier = ""
|
|
|
var key: NSString?
|
|
|
var initializationVector: NSString?
|
|
|
let object = tableE2eEncryption()
|
|
@@ -575,12 +577,13 @@ import NCCommunication
|
|
|
self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": Int(0)], errorDescription: "", completion: completion)
|
|
|
return
|
|
|
}
|
|
|
- guard let directory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", account, serverUrl)) else {
|
|
|
- self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": Int(k_CCErrorInternalError)], errorDescription: "Database error", completion: completion)
|
|
|
- return
|
|
|
- }
|
|
|
let isDirectoryEncrypted = CCUtility.isFolderEncrypted(serverUrl, e2eEncrypted: false, account: account)
|
|
|
- let fileNameFolderUrl = serverUrl + "/" + fileNameFolder
|
|
|
+ if isDirectoryEncrypted {
|
|
|
+ fileNameIdentifier = CCUtility.generateRandomIdentifier()
|
|
|
+ fileNameFolderUrl = serverUrl + "/" + fileNameIdentifier
|
|
|
+ } else {
|
|
|
+ fileNameFolderUrl = serverUrl + "/" + fileNameFolder
|
|
|
+ }
|
|
|
|
|
|
NCCommunication.sharedInstance.createFolder(fileNameFolderUrl, account: account) { (account, ocId, date, errorCode, errorDescription) in
|
|
|
if errorCode == 0 {
|
|
@@ -588,11 +591,6 @@ import NCCommunication
|
|
|
|
|
|
DispatchQueue.global().async {
|
|
|
|
|
|
- if let error = NCNetworkingEndToEnd.sharedManager().lockFolderEncrypted(onServerUrl: directory.serverUrl, ocId: directory.ocId, user: user, userID: userID, password: password, url: url) as NSError? {
|
|
|
- self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": error.code], errorDescription: error.localizedDescription, completion: completion)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
if let error = NCNetworkingEndToEnd.sharedManager()?.markFolderEncrypted(onServerUrl: fileNameFolderUrl, ocId: ocId, user: user, userID: userID, password: password, url: url) as NSError? {
|
|
|
self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": error.code], errorDescription: error.localizedDescription, completion: completion)
|
|
|
return
|
|
@@ -602,9 +600,9 @@ import NCCommunication
|
|
|
let metadataKey = NCEndToEndEncryption.sharedManager()?.generateKey(16)?.base64EncodedString(options: []) // AES_KEY_128_LENGTH
|
|
|
|
|
|
object.account = account
|
|
|
- object.authenticationTag = ""
|
|
|
+ object.authenticationTag = nil
|
|
|
object.fileName = fileNameFolder
|
|
|
- object.fileNameIdentifier = CCUtility.generateRandomIdentifier()
|
|
|
+ object.fileNameIdentifier = fileNameIdentifier
|
|
|
object.fileNamePath = ""
|
|
|
object.key = key! as String
|
|
|
object.initializationVector = initializationVector! as String
|
|
@@ -615,8 +613,8 @@ import NCCommunication
|
|
|
object.version = Int(NCManageDatabase.sharedInstance.getEndToEndEncryptionVersion(account: account))
|
|
|
let _ = NCManageDatabase.sharedInstance.addE2eEncryption(object)
|
|
|
|
|
|
- // SEND metadata
|
|
|
- if let error = NCNetworkingEndToEnd.sharedManager().rebuildAndSendMetadata(onServerUrl: directory.serverUrl, account: self.account, user: user, userID: userID, password: password, url: url) as NSError? {
|
|
|
+ // Send Metadata
|
|
|
+ if let error = NCNetworkingEndToEnd.sharedManager()?.sendMetadata(onServerUrl: serverUrl, fileNameRename: nil, fileNameNewRename: nil, account: account, user: user, userID: userID, password: password, url: url) as NSError? {
|
|
|
self.NotificationPost(name: k_notificationCenter_createFolder, userInfo: ["fileName": fileName, "serverUrl": serverUrl, "errorCode": error.code], errorDescription: error.localizedDescription, completion: completion)
|
|
|
return
|
|
|
}
|