marinofaggiana 4 years ago
parent
commit
c49adfdf3c

+ 1 - 1
Share/ShareViewController.m

@@ -205,7 +205,7 @@
 - (void)moveServerUrlTo:(NSString *)serverUrlTo title:(NSString *)title type:(NSString *)type
 {
     // DENIED e2e
-    if ([CCUtility isFolderEncrypted:serverUrlTo account:self.activeAccount]) {
+    if ([CCUtility isFolderEncrypted:serverUrlTo e2eEncrypted:false account:self.activeAccount]) {
         return;
     }
     

+ 1 - 1
iOSClient/AutoUpload/NCAutoUpload.m

@@ -511,7 +511,7 @@
     NSString *ocId;
     NSError *error;
     NSString *autoUploadPath = [[NCManageDatabase sharedInstance] getAccountAutoUploadPath:appDelegate.activeUrl];
-    BOOL encrypted = [CCUtility isFolderEncrypted:autoUploadPath account:appDelegate.activeAccount];
+    BOOL encrypted = [CCUtility isFolderEncrypted:autoUploadPath e2eEncrypted:false account:appDelegate.activeAccount];
   
     [[NCNetworkingEndToEnd sharedManager] createEndToEndFolder:autoUploadPath account:appDelegate.activeAccount user:appDelegate.activeUser userID:appDelegate.activeUserID password:appDelegate.activePassword url:appDelegate.activeUrl encrypted:encrypted ocId:&ocId error:&error];
     

+ 1 - 1
iOSClient/Main/CCMain.m

@@ -1567,7 +1567,7 @@
     } else {
         
         // E2EE DENIED
-        if ([CCUtility isFolderEncrypted:serverUrl account:appDelegate.activeAccount]) {
+        if ([CCUtility isFolderEncrypted:serverUrl e2eEncrypted:metadata.e2eEncrypted account:appDelegate.activeAccount]) {
             
             [[NCContentPresenter shared] messageNotification:@"_move_" description:@"Not possible move files to encrypted directory" delay:k_dismissAfterSecond type:messageTypeInfo errorCode:0];
             return;

+ 1 - 1
iOSClient/Main/Menu/CCMain+Menu.swift

@@ -200,7 +200,7 @@ extension CCMain {
             
             var isDirectoryLock = false
             var isOffline = false
-            let isFolderEncrypted = CCUtility.isFolderEncrypted(metadata.serverUrl+"/"+metadata.fileName, account: metadata.account)
+            let isFolderEncrypted = CCUtility.isFolderEncrypted(metadata.serverUrl+"/"+metadata.fileName, e2eEncrypted: metadata.e2eEncrypted, account: metadata.account)
 
             if let directory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", appDelegate.activeAccount, CCUtility.stringAppendServerUrl(metadata.serverUrl, addFileName: metadata.fileName)!)) {
                 if (directory.lock && CCUtility.getBlockCode() != nil && appDelegate.sessionePasscodeLock == nil) {

+ 5 - 5
iOSClient/Networking/CCNetworking.m

@@ -695,7 +695,7 @@
                 } else {
                     
                     // OOOOOK
-                    if ([CCUtility isFolderEncrypted:metadataForUpload.serverUrl account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
+                    if ([CCUtility isFolderEncrypted:metadataForUpload.serverUrl e2eEncrypted:metadataForUpload.e2eEncrypted account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
                         [self e2eEncryptedFile:metadataForUpload tableAccount:tableAccount taskStatus:taskStatus];
                     } else {
                         [self uploadURLSessionMetadata:metadataForUpload tableAccount:tableAccount taskStatus:taskStatus];
@@ -748,7 +748,7 @@
                             tableMetadata *metadataForUpload = [[NCManageDatabase sharedInstance] addMetadata:[CCUtility insertFileSystemInMetadata:metadata]];
                             
                             // OOOOOK
-                            if ([CCUtility isFolderEncrypted:metadataForUpload.serverUrl account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
+                            if ([CCUtility isFolderEncrypted:metadataForUpload.serverUrl e2eEncrypted:metadataForUpload.e2eEncrypted account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
                                 [self e2eEncryptedFile:metadataForUpload tableAccount:tableAccount taskStatus:taskStatus];
                             } else {
                                 [self uploadURLSessionMetadata:metadataForUpload tableAccount:tableAccount taskStatus:taskStatus];
@@ -765,7 +765,7 @@
         tableMetadata *metadataForUpload = [[NCManageDatabase sharedInstance] addMetadata:[CCUtility insertFileSystemInMetadata:metadata]];
         
         // OOOOOK
-        if ([CCUtility isFolderEncrypted:metadataForUpload.serverUrl account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
+        if ([CCUtility isFolderEncrypted:metadataForUpload.serverUrl e2eEncrypted:metadataForUpload.e2eEncrypted account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
             [self e2eEncryptedFile:metadataForUpload tableAccount:tableAccount taskStatus:taskStatus];
         } else {
             [self uploadURLSessionMetadata:metadataForUpload tableAccount:tableAccount taskStatus:taskStatus];
@@ -945,7 +945,7 @@
     } else {
         
         // E2EE : CREATE AND SEND METADATA
-        if ([CCUtility isFolderEncrypted:metadata.serverUrl account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
+        if ([CCUtility isFolderEncrypted:metadata.serverUrl e2eEncrypted:metadata.e2eEncrypted account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
             
             NSString *serverUrl = metadata.serverUrl;
             
@@ -1060,7 +1060,7 @@
     }
     
     // is this a E2EE Directory ?
-    if ([CCUtility isFolderEncrypted:serverUrl account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
+    if ([CCUtility isFolderEncrypted:serverUrl e2eEncrypted:false account:tableAccount.account] && [CCUtility isEndToEndEnabled:tableAccount.account]) {
         isE2EEDirectory = true;
     }
     

+ 9 - 8
iOSClient/Networking/NCNetworking.swift

@@ -155,7 +155,7 @@ import NCCommunication
     
     //MARK: - File <> Metadata
     
-    @objc func convertFileToMetadata(_ file: NCFile, isFolderEncrypted: Bool) -> tableMetadata {
+    @objc func convertFileToMetadata(_ file: NCFile, isEncrypted: Bool) -> tableMetadata {
         
         let metadata = tableMetadata()
         
@@ -187,8 +187,8 @@ import NCCommunication
         metadata.typeFile = file.typeFile
         
         // E2EE find the fileName for fileNameView
-        if isFolderEncrypted {
-            if let tableE2eEncryption = NCManageDatabase.sharedInstance.getE2eEncryption(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileNameIdentifier == %d", account, file.serverUrl, file.fileName)) {
+        if isEncrypted || metadata.e2eEncrypted {
+            if let tableE2eEncryption = NCManageDatabase.sharedInstance.getE2eEncryption(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND fileNameIdentifier == %@", account, file.serverUrl, file.fileName)) {
                 metadata.fileNameView = tableE2eEncryption.fileName
             }
         }
@@ -201,16 +201,16 @@ import NCCommunication
         var metadatas = [tableMetadata]()
         var counter: Int = 0
         var serverUrl: String = ""
-        var isFolderEncrypted: Bool = false
+        var isEncrypted: Bool = false
 
         for file in files {
                         
             if serverUrl != file.serverUrl {
                 serverUrl = file.serverUrl
-                isFolderEncrypted = CCUtility.isFolderEncrypted(serverUrl, account: account)
+                isEncrypted = CCUtility.isFolderEncrypted(serverUrl, e2eEncrypted: file.e2eEncrypted, account: account)
             }
             
-            let metadata = self.convertFileToMetadata(file, isFolderEncrypted: isFolderEncrypted)
+            let metadata = self.convertFileToMetadata(file, isEncrypted: isEncrypted)
             
             if metadataFolder != nil && counter == 0 {
                 metadataFolder!.initialize(to: metadata)
@@ -279,8 +279,9 @@ import NCCommunication
 
             if errorCode == 0 && files != nil {
              
-                let isFolderEncrypted = CCUtility.isFolderEncrypted(files![0].serverUrl, account: account)
-                let metadata = self.convertFileToMetadata(files![0], isFolderEncrypted: isFolderEncrypted)
+                let file = files![0]
+                let isEncrypted = CCUtility.isFolderEncrypted(file.serverUrl, e2eEncrypted:file.e2eEncrypted, account: account)
+                let metadata = self.convertFileToMetadata(file, isEncrypted: isEncrypted)
                 completion(account, metadata, errorCode, "")
                 
             } else {

+ 1 - 1
iOSClient/Utility/CCUtility.h

@@ -252,7 +252,7 @@
 // ===== E2E Encrypted =====
 
 + (NSString *)generateRandomIdentifier;
-+ (BOOL)isFolderEncrypted:(NSString *)serverUrl account:(NSString *)account;
++ (BOOL)isFolderEncrypted:(NSString *)serverUrl e2eEncrypted:(BOOL)e2eEncrypted account:(NSString *)account;
 
 // ===== CCMetadata =====
 

+ 13 - 12
iOSClient/Utility/CCUtility.m

@@ -1428,26 +1428,27 @@
     return [[UUID stringByReplacingOccurrencesOfString:@"-" withString:@""] lowercaseString];
 }
 
-+ (BOOL)isFolderEncrypted:(NSString *)serverUrl account:(NSString *)account
++ (BOOL)isFolderEncrypted:(NSString *)serverUrl e2eEncrypted:(BOOL)e2eEncrypted account:(NSString *)account
 {
-    BOOL depth = NO;
     
-    if (depth) {
+    /*
+    NSArray *directories = [[NCManageDatabase sharedInstance] getTablesDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND e2eEncrypted == 1 AND serverUrl BEGINSWITH %@", account, serverUrl] sorted:@"serverUrl" ascending:false];
+    for (tableDirectory *directory in directories) {
+        if ([serverUrl containsString:directory.serverUrl])
+            return true;
+
+    */
+    
+    if (e2eEncrypted) {
         
-        NSArray *directories = [[NCManageDatabase sharedInstance] getTablesDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND e2eEncrypted == 1 AND serverUrl BEGINSWITH %@", account, serverUrl] sorted:@"serverUrl" ascending:false];
-        for (tableDirectory *directory in directories) {
-            if ([serverUrl containsString:directory.serverUrl])
-                return true;
-        }
+        return true;
         
     } else {
         
         tableDirectory *directory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND e2eEncrypted == 1 AND serverUrl == %@", account, serverUrl]];
-        if (directory != nil)
-            return true;
+        if (directory != nil) return true;
+        else return false;
     }
-    
-    return false;
 }
 
 #pragma --------------------------------------------------------------------------------------------