فهرست منبع

coding e2ee

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 سال پیش
والد
کامیت
4ea72f08b9

+ 1 - 2
Share/NCShareExtension.swift

@@ -316,7 +316,7 @@ extension NCShareExtension {
             metadata.sessionSelector = NCGlobal.shared.selectorUploadFileShareExtension
             metadata.size = NCUtilityFileSystem.shared.getFileSize(filePath: toPath)
             metadata.status = NCGlobal.shared.metadataStatusWaitUpload
-            if NCManageDatabase.shared.getMetadataConflict(account: activeAccount.account, serverUrl: serverUrl, fileName: fileName) != nil {
+            if NCManageDatabase.shared.getMetadataConflict(account: activeAccount.account, serverUrl: serverUrl, fileNameView: fileName) != nil {
                 conflicts.append(metadata)
             } else {
                 uploadMetadata.append(metadata)
@@ -329,7 +329,6 @@ extension NCShareExtension {
             conflict.serverUrl = self.serverUrl
             conflict.metadatasUploadInConflict = conflicts
             conflict.delegate = self
-            conflict.isE2EE = NCUtility.shared.isFolderEncrypted(serverUrl:self.serverUrl, account: activeAccount.account, urlBase: activeAccount.urlBase, userId: activeAccount.userId)
             self.present(conflict, animated: true, completion: nil)
         } else {
             upload()

+ 4 - 4
iOSClient/Data/NCManageDatabase+Metadata.swift

@@ -817,12 +817,12 @@ extension NCManageDatabase {
         return false
     }
 
-    func getMetadataConflict(account: String, serverUrl: String, fileName: String) -> tableMetadata? {
+    func getMetadataConflict(account: String, serverUrl: String, fileNameView: String) -> tableMetadata? {
 
         // verify exists conflict
-        let fileNameExtension = (fileName as NSString).pathExtension.lowercased()
-        let fileNameWithoutExtension = (fileName as NSString).deletingPathExtension
-        var fileNameConflict = fileName
+        let fileNameExtension = (fileNameView as NSString).pathExtension.lowercased()
+        let fileNameWithoutExtension = (fileNameView as NSString).deletingPathExtension
+        var fileNameConflict = fileNameView
 
         if fileNameExtension == "heic" && CCUtility.getFormatCompatibility() {
             fileNameConflict = fileNameWithoutExtension + ".jpg"

+ 2 - 2
iOSClient/Main/Create cloud/NCCreateFormUploadAssets.swift

@@ -377,7 +377,8 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
                 metadataForUpload.sessionSelector = NCGlobal.shared.selectorUploadFile
                 metadataForUpload.status = NCGlobal.shared.metadataStatusWaitUpload
 
-                if NCManageDatabase.shared.getMetadataConflict(account: self.appDelegate.account, serverUrl: serverUrl, fileName: fileName) != nil {
+                if let result = NCManageDatabase.shared.getMetadataConflict(account: self.appDelegate.account, serverUrl: serverUrl, fileNameView: fileName) {
+                    metadataForUpload.fileName = result.fileName
                     metadatasUploadInConflict.append(metadataForUpload)
                 } else {
                     metadatasNOConflict.append(metadataForUpload)
@@ -394,7 +395,6 @@ class NCCreateFormUploadAssets: XLFormViewController, NCSelectDelegate {
                         conflict.metadatasNOConflict = metadatasNOConflict
                         conflict.metadatasUploadInConflict = metadatasUploadInConflict
                         conflict.delegate = self.appDelegate
-                        conflict.isE2EE = NCUtility.shared.isFolderEncrypted(serverUrl: self.serverUrl, userBase: self.appDelegate)
 
                         self.appDelegate.window?.rootViewController?.present(conflict, animated: true, completion: nil)
                     }

+ 11 - 18
iOSClient/Main/Create cloud/NCCreateFormUploadConflict.swift

@@ -58,7 +58,6 @@ extension NCCreateFormUploadConflictDelegate {
     @objc weak var delegate: NCCreateFormUploadConflictDelegate?
     @objc var alwaysNewFileNameNumber: Bool = false
     @objc var textLabelDetailNewFile: String?
-    @objc var isE2EE: Bool = false
 
     var metadatasConflictNewFiles: [String] = []
     var metadatasConflictAlreadyExistingFiles: [String] = []
@@ -150,17 +149,13 @@ extension NCCreateFormUploadConflictDelegate {
         let conflictAlert = UIAlertController(title: tile, message: "", preferredStyle: .alert)
 
         // REPLACE
-        if !isE2EE {
-            conflictAlert.addAction(UIAlertAction(title: titleReplace, style: .default, handler: { action in
-
-                for metadata in self.metadatasUploadInConflict {
-                    self.metadatasNOConflict.append(metadata)
-                }
+        conflictAlert.addAction(UIAlertAction(title: titleReplace, style: .default, handler: { action in
+            for metadata in self.metadatasUploadInConflict {
+                self.metadatasNOConflict.append(metadata)
+            }
+            self.buttonContinueTouch(action)
+        }))
 
-                self.buttonContinueTouch(action)
-            }))
-        }
-        
         // KEEP BOTH
         conflictAlert.addAction(UIAlertAction(title: titleKeep, style: .default, handler: { action in
 
@@ -178,12 +173,10 @@ extension NCCreateFormUploadConflictDelegate {
             }
         }))
 
-        if !isE2EE {
-            conflictAlert.addAction(UIAlertAction(title: NSLocalizedString("_more_action_title_", comment: ""), style: .default, handler: { _ in
-                self.blurView.removeFromSuperview()
-            }))
-        }
-        
+        conflictAlert.addAction(UIAlertAction(title: NSLocalizedString("_more_action_title_", comment: ""), style: .default, handler: { _ in
+            self.blurView.removeFromSuperview()
+        }))
+
         self.present(conflictAlert, animated: true, completion: nil)
     }
 
@@ -326,7 +319,7 @@ extension NCCreateFormUploadConflict: UITableViewDataSource {
 
             // -----> Already Existing File
 
-            guard let metadataAlreadyExists = NCManageDatabase.shared.getMetadataConflict(account: metadataNewFile.account, serverUrl: metadataNewFile.serverUrl, fileName: metadataNewFile.fileNameView) else { return UITableViewCell() }
+            guard let metadataAlreadyExists = NCManageDatabase.shared.getMetadataConflict(account: metadataNewFile.account, serverUrl: metadataNewFile.serverUrl, fileNameView: metadataNewFile.fileNameView) else { return UITableViewCell() }
             if FileManager().fileExists(atPath: CCUtility.getDirectoryProviderStorageIconOcId(metadataAlreadyExists.ocId, etag: metadataAlreadyExists.etag)) {
                 cell.imageAlreadyExistingFile.image =  UIImage(contentsOfFile: CCUtility.getDirectoryProviderStorageIconOcId(metadataAlreadyExists.ocId, etag: metadataAlreadyExists.etag))
             } else if FileManager().fileExists(atPath: CCUtility.getDirectoryProviderStorageOcId(metadataAlreadyExists.ocId, fileNameView: metadataAlreadyExists.fileNameView)) && metadataAlreadyExists.contentType == "application/pdf" {

+ 1 - 2
iOSClient/Main/Create cloud/NCCreateFormUploadDocuments.swift

@@ -268,7 +268,7 @@ import XLForm
                 fileNameForm = (fileNameForm as! NSString).deletingPathExtension + "." + fileNameExtension
             }
 
-            if NCManageDatabase.shared.getMetadataConflict(account: appDelegate.account, serverUrl: serverUrl, fileName: String(describing: fileNameForm)) != nil {
+            if NCManageDatabase.shared.getMetadataConflict(account: appDelegate.account, serverUrl: serverUrl, fileNameView: String(describing: fileNameForm)) != nil {
 
                 let metadataForUpload = NCManageDatabase.shared.createMetadata(account: appDelegate.account, user: appDelegate.user, userId: appDelegate.userId, fileName: String(describing: fileNameForm), fileNameView: String(describing: fileNameForm), ocId: "", serverUrl: serverUrl, urlBase: appDelegate.urlBase, url: "", contentType: "")
 
@@ -279,7 +279,6 @@ import XLForm
                 conflict.serverUrl = serverUrl
                 conflict.metadatasUploadInConflict = [metadataForUpload]
                 conflict.delegate = self
-                conflict.isE2EE = NCUtility.shared.isFolderEncrypted(serverUrl: serverUrl, userBase: appDelegate)
 
                 self.present(conflict, animated: true, completion: nil)
 

+ 1 - 2
iOSClient/Main/Create cloud/NCCreateFormUploadScanDocument.swift

@@ -404,7 +404,7 @@ class NCCreateFormUploadScanDocument: XLFormViewController, NCSelectDelegate, NC
         metadataForUpload.sessionSelector = NCGlobal.shared.selectorUploadFile
         metadataForUpload.status = NCGlobal.shared.metadataStatusWaitUpload
 
-        if NCManageDatabase.shared.getMetadataConflict(account: appDelegate.account, serverUrl: serverUrl, fileName: fileNameSave) != nil {
+        if NCManageDatabase.shared.getMetadataConflict(account: appDelegate.account, serverUrl: serverUrl, fileNameView: fileNameSave) != nil {
 
             guard let conflict = UIStoryboard(name: "NCCreateFormUploadConflict", bundle: nil).instantiateInitialViewController() as? NCCreateFormUploadConflict else { return }
 
@@ -412,7 +412,6 @@ class NCCreateFormUploadScanDocument: XLFormViewController, NCSelectDelegate, NC
             conflict.serverUrl = serverUrl
             conflict.metadatasUploadInConflict = [metadataForUpload]
             conflict.delegate = self
-            conflict.isE2EE = NCUtility.shared.isFolderEncrypted(serverUrl: serverUrl, userBase: appDelegate)
 
             self.present(conflict, animated: true, completion: nil)
 

+ 1 - 2
iOSClient/Main/Create cloud/NCCreateFormUploadVoiceNote.swift

@@ -231,7 +231,7 @@ class NCCreateFormUploadVoiceNote: XLFormViewController, NCSelectDelegate, AVAud
         metadataForUpload.status = NCGlobal.shared.metadataStatusWaitUpload
         metadataForUpload.size = NCUtilityFileSystem.shared.getFileSize(filePath: fileNamePath)
 
-        if NCManageDatabase.shared.getMetadataConflict(account: appDelegate.account, serverUrl: serverUrl, fileName: fileNameSave) != nil {
+        if NCManageDatabase.shared.getMetadataConflict(account: appDelegate.account, serverUrl: serverUrl, fileNameView: fileNameSave) != nil {
 
             guard let conflict = UIStoryboard(name: "NCCreateFormUploadConflict", bundle: nil).instantiateInitialViewController() as? NCCreateFormUploadConflict else { return }
             
@@ -239,7 +239,6 @@ class NCCreateFormUploadVoiceNote: XLFormViewController, NCSelectDelegate, AVAud
             conflict.serverUrl = serverUrl
             conflict.metadatasUploadInConflict = [metadataForUpload]
             conflict.delegate = self
-            conflict.isE2EE = NCUtility.shared.isFolderEncrypted(serverUrl: serverUrl, userBase: appDelegate)
 
             self.present(conflict, animated: true, completion: nil)
 

+ 1 - 2
iOSClient/Main/NCPickerViewController.swift

@@ -162,14 +162,13 @@ class NCDocumentPickerViewController: NSObject, UIDocumentPickerDelegate {
                 metadataForUpload.size = NCUtilityFileSystem.shared.getFileSize(filePath: toPath)
                 metadataForUpload.status = NCGlobal.shared.metadataStatusWaitUpload
 
-                if NCManageDatabase.shared.getMetadataConflict(account: appDelegate.account, serverUrl: serverUrl, fileName: fileName) != nil {
+                if NCManageDatabase.shared.getMetadataConflict(account: appDelegate.account, serverUrl: serverUrl, fileNameView: fileName) != nil {
 
                     if let conflict = UIStoryboard(name: "NCCreateFormUploadConflict", bundle: nil).instantiateInitialViewController() as? NCCreateFormUploadConflict {
 
                         conflict.delegate = appDelegate
                         conflict.serverUrl = serverUrl
                         conflict.metadatasUploadInConflict = [metadataForUpload]
-                        conflict.isE2EE = NCUtility.shared.isFolderEncrypted(serverUrl: serverUrl, userBase: appDelegate)
 
                         appDelegate.window?.rootViewController?.present(conflict, animated: true, completion: nil)
                     }

+ 1 - 1
iOSClient/Networking/E2EE/NCNetworkingE2EE.swift

@@ -34,7 +34,7 @@ class NCNetworkingE2EE: NSObject {
     func generateRandomIdentifier() -> String {
 
         var UUID = NSUUID().uuidString
-        UUID = "E2EE" + UUID.replacingOccurrences(of: "-", with: "").lowercased()
+        UUID = "E2EE|" + UUID.replacingOccurrences(of: "-", with: "").uppercased() + "|E2EE"
         return UUID
     }
 

+ 4 - 2
iOSClient/Networking/E2EE/NCNetworkingE2EEUpload.swift

@@ -32,7 +32,7 @@ class NCNetworkingE2EEUpload: NSObject {
         return instance
     }()
 
-    func upload(metadata: tableMetadata, filename: String) async -> (NKError) {
+    func upload(metadata: tableMetadata) async -> (NKError) {
 
         var metadata = tableMetadata.init(value: metadata)
         let ocIdTemp = metadata.ocId
@@ -46,7 +46,9 @@ class NCNetworkingE2EEUpload: NSObject {
         }
 
         // Create metadata for upload
-        metadata.fileName = filename
+        if !(metadata.fileName.hasPrefix("E2EE|") && metadata.fileName.hasSuffix("|E2EE")) {
+            metadata.fileName = NCNetworkingE2EE.shared.generateRandomIdentifier()
+        }
         metadata.e2eEncrypted = true
         metadata.session = NKCommon.shared.sessionIdentifierUpload
         metadata.sessionError = ""

+ 1 - 2
iOSClient/Networking/NCNetworking.swift

@@ -392,9 +392,8 @@ import Photos
         if metadata.e2eEncrypted {
             #if !EXTENSION_FILE_PROVIDER_EXTENSION && !EXTENSION_WIDGET
             Task {
-                let fineName = NCNetworkingE2EE.shared.generateRandomIdentifier()
                 start()
-                let error = await NCNetworkingE2EEUpload.shared.upload(metadata: metadata, filename: fineName)
+                let error = await NCNetworkingE2EEUpload.shared.upload(metadata: metadata)
                 completion(error)
             }
             #endif