marinofaggiana 5 gadi atpakaļ
vecāks
revīzija
7ab6ee98f4

+ 2 - 1
iOSClient/CCGlobal.h

@@ -84,7 +84,7 @@
 
 // Database Realm
 #define k_databaseDefault                               @"nextcloud.realm"
-#define k_databaseSchemaVersion                         91
+#define k_databaseSchemaVersion                         92
 
 // Intro selector
 #define k_intro_login                                   0
@@ -319,6 +319,7 @@
 #define k_nextcloud_version_16_0                        16
 #define k_nextcloud_version_17_0                        17
 #define k_nextcloud_version_18_0                        18
+#define k_nextcloud_version_19_0                        19
 
 // Notification Center
 

+ 1 - 1
iOSClient/Database/NCDatabase.swift

@@ -267,7 +267,7 @@ class tableDirectory: Object {
 class tableE2eEncryption: Object {
     
     @objc dynamic var account = ""
-    @objc dynamic var authenticationTag = ""
+    @objc dynamic var authenticationTag: String? = nil
     @objc dynamic var fileName = ""
     @objc dynamic var fileNameIdentifier = ""
     @objc dynamic var fileNamePath = ""

+ 12 - 14
iOSClient/Networking/NCNetworking.swift

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

+ 1 - 1
iOSClient/Security/NCEndToEndMetadata.swift

@@ -142,7 +142,7 @@ class NCEndToEndMetadata : NSObject  {
         
         let jsonDecoder = JSONDecoder.init()
         let data = e2eMetaDataJSON.data(using: .utf8)
-        //let dataQuickLook = (data as! NSData)
+        let dataQuickLook = (data as! NSData)
                 
         do {