Working on support for deleting directories (removing all keyfiles)
This commit is contained in:
parent
c1f20fe37a
commit
61b23ce6cc
|
@ -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 );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue