Working on support for deleting directories (removing all keyfiles)

This commit is contained in:
Sam Tuke 2013-01-30 17:25:17 +00:00
parent c1f20fe37a
commit 61b23ce6cc
1 changed files with 19 additions and 13 deletions

View File

@ -195,27 +195,37 @@ class Proxy extends \OC_FileProxy {
/** /**
* @brief When a file is deleted, remove its keyfile also * @brief When a file is deleted, remove its keyfile also
*/ */
public function postUnlink( $path ) { public function preUnlink( $path ) {
// Disable encryption proxy to prevent recursive calls // Disable encryption proxy to prevent recursive calls
\OC_FileProxy::$enabled = false; \OC_FileProxy::$enabled = false;
$view = new \OC_FilesystemView( '/' ); $view = new \OC_FilesystemView( '/' );
$userId = \OCP\USER::getUser();
// Format path to be relative to user files dir // Format path to be relative to user files dir
$trimmed = ltrim( $path, '/' ); $trimmed = ltrim( $path, '/' );
$split = explode( '/', $trimmed ); $split = explode( '/', $trimmed );
$sliced = array_slice( $split, 2 ); $sliced = array_slice( $split, 2 );
$relPath = implode( '/', $sliced ); $relPath = implode( '/', $sliced );
// Delete keyfile so it isn't orphaned
$result = Keymanager::deleteFileKey( $view, $userId, $relPath );
\OC_FileProxy::$enabled = true;
return $result; if ( $view->is_dir( $path ) ) {
// Dirs must be handled separately as deleteFileKey
// doesn't handle them
$view->unlink( 'files_encryption/keyfiles/'. $relPath );
} else {
$userId = \OCP\USER::getUser();
// Delete keyfile so it isn't orphaned
$result = Keymanager::deleteFileKey( $view, $userId, $relPath );
\OC_FileProxy::$enabled = true;
return $result;
}
} }
@ -225,8 +235,6 @@ class Proxy extends \OC_FileProxy {
* @note This is pre rather than post because using post didn't work * @note This is pre rather than post because using post didn't work
*/ */
public function preRename( $oldPath, $newPath ) { public function preRename( $oldPath, $newPath ) {
// trigger_error( "PATHS = ".var_export($oldPath, 1).' '.var_export($newPath, 1));
// Disable encryption proxy to prevent recursive calls // Disable encryption proxy to prevent recursive calls
\OC_FileProxy::$enabled = false; \OC_FileProxy::$enabled = false;
@ -248,8 +256,6 @@ class Proxy extends \OC_FileProxy {
$newRelPath = implode( '/', $newSliced ); $newRelPath = implode( '/', $newSliced );
$newKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $newRelPath . '.key'; $newKeyfilePath = $userId . '/' . 'files_encryption' . '/' . 'keyfiles' . '/' . $newRelPath . '.key';
// trigger_error("RENAMING = ".var_export($oldKeyfilePath, 1).' -> '.var_export($newKeyfilePath, 1));
// Rename keyfile so it isn't orphaned // Rename keyfile so it isn't orphaned
$result = $view->rename( $oldKeyfilePath, $newKeyfilePath ); $result = $view->rename( $oldKeyfilePath, $newKeyfilePath );