Example #1
0
 /**
  * @param $path
  * @param $size
  * @return bool
  */
 public function postFileSize($path, $size, $fileInfo = null)
 {
     $view = new \OC_FilesystemView('/');
     $userId = Helper::getUser($path);
     $util = new Util($view, $userId);
     // if encryption is no longer enabled or if the files aren't migrated yet
     // we return the default file size
     if (!\OCP\App::isEnabled('files_encryption') || $util->getMigrationStatus() !== Util::MIGRATION_COMPLETED) {
         return $size;
     }
     // if path is a folder do nothing
     if ($view->is_dir($path)) {
         $proxyState = \OC_FileProxy::$enabled;
         \OC_FileProxy::$enabled = false;
         $fileInfo = $view->getFileInfo($path);
         \OC_FileProxy::$enabled = $proxyState;
         if (isset($fileInfo['unencrypted_size']) && $fileInfo['unencrypted_size'] > 0) {
             return $fileInfo['unencrypted_size'];
         }
         return $size;
     }
     // get relative path
     $relativePath = \OCA\Encryption\Helper::stripUserFilesPath($path);
     // if path is empty we cannot resolve anything
     if (empty($relativePath)) {
         return $size;
     }
     // get file info from database/cache if not .part file
     if (empty($fileInfo) && !Helper::isPartialFilePath($path)) {
         $proxyState = \OC_FileProxy::$enabled;
         \OC_FileProxy::$enabled = false;
         $fileInfo = $view->getFileInfo($path);
         \OC_FileProxy::$enabled = $proxyState;
     }
     // if file is encrypted return real file size
     if (isset($fileInfo['encrypted']) && $fileInfo['encrypted'] === true) {
         // try to fix unencrypted file size if it doesn't look plausible
         if ((int) $fileInfo['size'] > 0 && (int) $fileInfo['unencrypted_size'] === 0) {
             $fixSize = $util->getFileSize($path);
             $fileInfo['unencrypted_size'] = $fixSize;
             // put file info if not .part file
             if (!Helper::isPartialFilePath($relativePath)) {
                 $view->putFileInfo($path, $fileInfo);
             }
         }
         $size = $fileInfo['unencrypted_size'];
     } else {
         // self healing if file was removed from file cache
         if (!is_array($fileInfo)) {
             $fileInfo = array();
         }
         $fixSize = $util->getFileSize($path);
         if ($fixSize > 0) {
             $size = $fixSize;
             $fileInfo['encrypted'] = true;
             $fileInfo['unencrypted_size'] = $size;
             // put file info if not .part file
             if (!Helper::isPartialFilePath($relativePath)) {
                 $view->putFileInfo($path, $fileInfo);
             }
         }
     }
     return $size;
 }
Example #2
0
 /**
  * @param $path
  * @param $size
  * @return bool
  */
 public function postFileSize($path, $size)
 {
     $view = new \OC_FilesystemView('/');
     // if path is a folder do nothing
     if ($view->is_dir($path)) {
         return $size;
     }
     // get relative path
     $relativePath = \OCA\Encryption\Helper::stripUserFilesPath($path);
     // if path is empty we cannot resolve anything
     if (empty($relativePath)) {
         return $size;
     }
     $fileInfo = false;
     // get file info from database/cache if not .part file
     if (!Keymanager::isPartialFilePath($path)) {
         $fileInfo = $view->getFileInfo($path);
     }
     // if file is encrypted return real file size
     if (is_array($fileInfo) && $fileInfo['encrypted'] === true) {
         $size = $fileInfo['unencrypted_size'];
     } else {
         // self healing if file was removed from file cache
         if (!is_array($fileInfo)) {
             $fileInfo = array();
         }
         $userId = \OCP\User::getUser();
         $util = new Util($view, $userId);
         $fixSize = $util->getFileSize($path);
         if ($fixSize > 0) {
             $size = $fixSize;
             $fileInfo['encrypted'] = true;
             $fileInfo['unencrypted_size'] = $size;
             // put file info if not .part file
             if (!Keymanager::isPartialFilePath($relativePath)) {
                 $view->putFileInfo($path, $fileInfo);
             }
         }
     }
     return $size;
 }