]> source.dussan.org Git - nextcloud-server.git/commitdiff
Cleaned up path formatting with new method stripUserFilesPath()
authorSam Tuke <samtuke@owncloud.com>
Tue, 5 Feb 2013 15:59:28 +0000 (15:59 +0000)
committerSam Tuke <samtuke@owncloud.com>
Tue, 5 Feb 2013 15:59:28 +0000 (15:59 +0000)
apps/files_encryption/lib/crypt.php
apps/files_encryption/lib/util.php

index 7f96702b768c7d551d532ad092a5f7d1b1d7539e..ff7d6dfb1fd71dcda08af78d08cd334bfa5e8a74 100755 (executable)
@@ -182,16 +182,11 @@ class Crypt {
        \r
         /**\r
          * @brief Check if a file is encrypted via legacy system\r
+         * @param string $relPath The path of the file, relative to user/data;\r
+         *        e.g. filename or /Docs/filename, NOT admin/files/filename\r
          * @return true / false\r
          */\r
-       public static function isLegacyEncryptedContent( $data, $path ) {\r
-       \r
-               $trimmed = ltrim( $path, '/' );\r
-               \r
-               // Path must not include user/files\r
-               $split = explode( '/', $trimmed );\r
-               $sliced = array_slice( $split, 2 );\r
-               $relPath = implode( '/', $sliced );\r
+       public static function isLegacyEncryptedContent( $data, $relPath ) {\r
                \r
 //             trigger_error("REL PATH = ".var_export($relPath, 1));\r
                \r
@@ -200,7 +195,7 @@ class Crypt {
                // Fetch all file metadata from DB\r
                $metadata = \OC\Files\Filesystem::getFileInfo( $relPath, '' );\r
                \r
-               trigger_error("PATH = ". var_export($trimmed, 1)."   METADATA = ".var_export($metadata['encrypted'], 1));\r
+               trigger_error("PATH = ". var_export($relPath, 1)."   METADATA = ".var_export($metadata['encrypted'], 1));\r
                \r
                // If a file is flagged with encryption in DB, but isn't a \r
                // valid content + IV combination, it's probably using the \r
index 89fe79b6ff5c36247e66050142590776c11e6c23..a16bf9416005327fe09a597cab06057025961a9b 100644 (file)
@@ -251,6 +251,7 @@ class Util {
                                ) {
                                        
                                        $filePath = $directory . '/' . $this->view->getRelativePath( '/' . $file );
+                                       $relPath = $this->stripUserFilesPath( $filePath );
                                        
                                        // If the path is a directory, search 
                                        // its contents
@@ -286,7 +287,7 @@ class Util {
                                                
                                                // If the file uses old 
                                                // encryption system
-                                               } elseif (  Crypt::isLegacyEncryptedContent( $this->view->file_get_contents( $filePath ), $filePath ) ) {
+                                               } elseif (  Crypt::isLegacyEncryptedContent( $this->view->file_get_contents( $filePath ), $relPath ) ) {
                                                        
                                                        $found['legacy'][] = array( 'name' => $file, 'path' => $filePath );
                                                        
@@ -341,6 +342,20 @@ class Util {
        
        }
        
+       /**
+        * @brief Format a path to be relative to the /user/files/ directory
+        */
+       public function stripUserFilesPath( $path ) {
+       
+               $trimmed = ltrim( $path, '/' );
+               $split = explode( '/', $trimmed );
+               $sliced = array_slice( $split, 2 );
+               $relPath = implode( '/', $sliced );
+               
+               return $relPath;
+       
+       }
+       
        /**
         * @brief Encrypt all files in a directory
         * @param string $publicKey the public key to encrypt files with
@@ -365,11 +380,7 @@ class Util {
                                // Encrypt data, generate catfile
                                $encrypted = Crypt::keyEncryptKeyfile( $plainData, $publicKey );
                                
-                               // Format path to be relative to user files dir
-                               $trimmed = ltrim( $plainFile['path'], '/' );
-                               $split = explode( '/', $trimmed );
-                               $sliced = array_slice( $split, 2 );
-                               $relPath = implode( '/', $sliced );
+                               $relPath = $this->stripUserFilesPath( $plainFile['path'] );
                                
                                // Save keyfile
                                Keymanager::setFileKey( $this->view, $relPath, $this->userId, $encrypted['key'] );
@@ -401,11 +412,7 @@ class Util {
                                        // Recrypt data, generate catfile
                                        $recrypted = Crypt::legacyKeyRecryptKeyfile( $legacyData, $legacyPassphrase, $publicKey, $newPassphrase );
                                        
-                                       // Format path to be relative to user files dir
-                                       $trimmed = ltrim( $legacyFile['path'], '/' );
-                                       $split = explode( '/', $trimmed );
-                                       $sliced = array_slice( $split, 2 );
-                                       $relPath = implode( '/', $sliced );
+                                       $relPath = $this->stripUserFilesPath( $legacyFile['path'] );
                                        
                                        // Save keyfile
                                        Keymanager::setFileKey( $this->view, $relPath, $this->userId, $recrypted['key'] );