|
|
|
@ -40,6 +40,7 @@ use OC\Files\Storage\Common;
|
|
|
|
|
use OC\Files\Storage\FailedStorage;
|
|
|
|
|
use OC\Files\Storage\Home;
|
|
|
|
|
use OC\Files\Storage\Wrapper\PermissionsMask;
|
|
|
|
|
use OC\Files\Storage\Wrapper\Wrapper;
|
|
|
|
|
use OC\User\DisplayNameCache;
|
|
|
|
|
use OC\User\NoUserException;
|
|
|
|
|
use OCA\Files_External\Config\ExternalMountPoint;
|
|
|
|
@ -96,6 +97,8 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto
|
|
|
|
|
|
|
|
|
|
private string $sourcePath = '';
|
|
|
|
|
|
|
|
|
|
private static int $initDepth = 0;
|
|
|
|
|
|
|
|
|
|
public function __construct($arguments) {
|
|
|
|
|
$this->ownerView = $arguments['ownerView'];
|
|
|
|
|
$this->logger = \OC::$server->get(LoggerInterface::class);
|
|
|
|
@ -135,8 +138,15 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto
|
|
|
|
|
if ($this->initialized) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->initialized = true;
|
|
|
|
|
self::$initDepth++;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (self::$initDepth > 10) {
|
|
|
|
|
throw new \Exception("Maximum share depth reached");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/** @var IRootFolder $rootFolder */
|
|
|
|
|
$rootFolder = \OC::$server->get(IRootFolder::class);
|
|
|
|
|
$this->ownerUserFolder = $rootFolder->getUserFolder($this->superShare->getShareOwner());
|
|
|
|
@ -149,6 +159,9 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto
|
|
|
|
|
$this->cache = new FailedCache();
|
|
|
|
|
$this->rootPath = '';
|
|
|
|
|
} else {
|
|
|
|
|
if ($this->nonMaskedStorage instanceof Wrapper && $this->nonMaskedStorage->isWrapperOf($this)) {
|
|
|
|
|
throw new \Exception('recursive share detected');
|
|
|
|
|
}
|
|
|
|
|
$this->nonMaskedStorage = $ownerNode->getStorage();
|
|
|
|
|
$this->sourcePath = $ownerNode->getPath();
|
|
|
|
|
$this->rootPath = $ownerNode->getInternalPath();
|
|
|
|
@ -177,6 +190,7 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto
|
|
|
|
|
if (!$this->nonMaskedStorage) {
|
|
|
|
|
$this->nonMaskedStorage = $this->storage;
|
|
|
|
|
}
|
|
|
|
|
self::$initDepth--;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|