浏览代码

fix view video e2ee

Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
Marino Faggiana 2 年之前
父节点
当前提交
32e288452e

+ 1 - 0
iOSClient/Supporting Files/en.lproj/Localizable.strings

@@ -875,6 +875,7 @@
 "_privacy_screen_"          = "Splash screen when app inactive";
 "_saving_"                  = "Saving …";
 "_video_not_streamed_"      = "The server does not allow video streaming, do you want to download it?";
+"_video_not_streamed_e2ee_" = "The server does not allow video streaming because is encrypted, do you want to download it?";
 "_scan_"                    = "Scan";
 "_in_"                      = "in";
 "_enter_passphrase_"        = "Enter passphrase (12 words)";

+ 14 - 2
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayer.swift

@@ -203,6 +203,13 @@ class NCPlayer: NSObject {
                         }))
                         alertController.addAction(UIAlertAction(title: NSLocalizedString("_no_", value: "No", comment: ""), style: .default, handler: { _ in }))
                         self.viewController?.present(alertController, animated: true)
+                    } else if NCUtility.shared.isFolderEncrypted(metadata: self.metadata) {
+                        let alertController = UIAlertController(title: NSLocalizedString("_info_", value: "Info", comment: ""), message: NSLocalizedString("_video_not_streamed_", comment: ""), preferredStyle: .alert)
+                        alertController.addAction(UIAlertAction(title: NSLocalizedString("_yes_", value: "Yes", comment: ""), style: .default, handler: { _ in
+                            self.downloadVideo(isEncrypted: true)
+                        }))
+                        alertController.addAction(UIAlertAction(title: NSLocalizedString("_no_", value: "No", comment: ""), style: .default, handler: { _ in }))
+                        self.viewController?.present(alertController, animated: true)
                     } else {
 #if MFFFLIB
                         if error?.code == AVError.Code.fileFormatNotRecognized.rawValue {
@@ -416,11 +423,11 @@ class NCPlayer: NSObject {
         }
     }
 
-    internal func downloadVideo(requiredConvert: Bool = false) {
+    internal func downloadVideo(isEncrypted: Bool = false, requiredConvert: Bool = false) {
 
         guard let view = appDelegate.window?.rootViewController?.view else { return }
         let serverUrlFileName = metadata.serverUrl + "/" + metadata.fileName
-        let fileNameLocalPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)!
+        let fileNameLocalPath = CCUtility.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileName)!
         let hud = JGProgressHUD()
         var downloadRequest: DownloadRequest?
 
@@ -444,6 +451,11 @@ class NCPlayer: NSObject {
         } completionHandler: { _, _, _, _, _, afError, error in
             if afError == nil {
                 NCManageDatabase.shared.addLocalFile(metadata: self.metadata)
+                if isEncrypted {
+                    if let result = NCManageDatabase.shared.getE2eEncryption(predicate: NSPredicate(format: "fileNameIdentifier == %@ AND serverUrl == %@", self.metadata.fileName, self.metadata.serverUrl)) {
+                        NCEndToEndEncryption.sharedManager()?.decryptFileName(self.metadata.fileName, fileNameView: self.metadata.fileNameView, ocId: self.metadata.ocId, key: result.key, initializationVector: result.initializationVector, authenticationTag: result.authenticationTag)
+                    }
+                }
                 let urlVideo = NCKTVHTTPCache.shared.getVideoURL(metadata: self.metadata)
                 if let url = urlVideo.url {
                     self.url = url