aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2024-01-15 19:38:32 +0100
committerRobin Appelman <robin@icewind.nl>2024-01-15 19:38:32 +0100
commit2b0b5c9b0d7454087d19b31221299e18c30f60ef (patch)
treef4bb2d6d3d4f7545bff49c51a755132c23310c8f
parentebeb85bc73580fa10ab15a299e244634621878b1 (diff)
downloadnextcloud-server-storage-debug-info.tar.gz
nextcloud-server-storage-debug-info.zip
add command to list mounts for userstorage-debug-info
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r--core/Command/Info/UserMounts.php69
-rw-r--r--core/register_command.php1
-rw-r--r--lib/composer/composer/LICENSE2
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
5 files changed, 72 insertions, 2 deletions
diff --git a/core/Command/Info/UserMounts.php b/core/Command/Info/UserMounts.php
new file mode 100644
index 00000000000..e762e3c71c9
--- /dev/null
+++ b/core/Command/Info/UserMounts.php
@@ -0,0 +1,69 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2024 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\Core\Command\Info;
+
+use OCP\Files\IRootFolder;
+use OCP\Files\Mount\IMountPoint;
+use OCP\IUserManager;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class UserMounts extends Command {
+ public function __construct(
+ private FileUtils $fileUtils,
+ private IUserManager $userManager,
+ private IRootFolder $rootFolder,
+ ) {
+ parent::__construct();
+ }
+
+ protected function configure(): void {
+ $this
+ ->setName('info:user:mounts')
+ ->setDescription('list mounted storages available for a user')
+ ->addArgument('user', InputArgument::REQUIRED, "User id to get mounted storages for");
+ }
+
+ public function execute(InputInterface $input, OutputInterface $output): int {
+ $userId = $input->getArgument('user');
+ $user = $this->userManager->get($userId);
+ if (!$user) {
+ $output->writeln("<error>user $userId not found</error>");
+ return 1;
+ }
+
+ $userFolder = $this->rootFolder->getUserFolder($userId);
+ $mounts = $this->rootFolder->getMountsIn($userFolder->getPath());
+ $mounts[] = $userFolder->getMountPoint();
+ usort($mounts, fn (IMountPoint $a, IMountPoint $b) => $a->getMountPoint() <=> $b->getMountPoint());
+
+ foreach ($mounts as $mount) {
+ $mountInfo = $this->fileUtils->formatMountType($mount);
+ $output->writeln("<info>{$mount->getMountPoint()}</info>: $mountInfo");
+ }
+ return 0;
+ }
+}
diff --git a/core/register_command.php b/core/register_command.php
index 5a6e00c8a22..5cbaad8dd69 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -107,6 +107,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(\OC::$server->get(OC\Core\Command\Info\File::class));
$application->add(\OC::$server->get(OC\Core\Command\Info\Space::class));
+ $application->add(\OC::$server->get(OC\Core\Command\Info\UserMounts::class));
$application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), new \OC\DB\ConnectionFactory(\OC::$server->getSystemConfig())));
$application->add(new OC\Core\Command\Db\ConvertMysqlToMB4(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection(), \OC::$server->getURLGenerator(), \OC::$server->get(LoggerInterface::class)));
diff --git a/lib/composer/composer/LICENSE b/lib/composer/composer/LICENSE
index f27399a042d..62ecfd8d004 100644
--- a/lib/composer/composer/LICENSE
+++ b/lib/composer/composer/LICENSE
@@ -1,4 +1,3 @@
-
Copyright (c) Nils Adermann, Jordi Boggiano
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -18,4 +17,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 61fd3193fa2..f0e449ec883 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -1071,6 +1071,7 @@ return array(
'OC\\Core\\Command\\Info\\File' => $baseDir . '/core/Command/Info/File.php',
'OC\\Core\\Command\\Info\\FileUtils' => $baseDir . '/core/Command/Info/FileUtils.php',
'OC\\Core\\Command\\Info\\Space' => $baseDir . '/core/Command/Info/Space.php',
+ 'OC\\Core\\Command\\Info\\UserMounts' => $baseDir . '/core/Command/Info/UserMounts.php',
'OC\\Core\\Command\\Integrity\\CheckApp' => $baseDir . '/core/Command/Integrity/CheckApp.php',
'OC\\Core\\Command\\Integrity\\CheckCore' => $baseDir . '/core/Command/Integrity/CheckCore.php',
'OC\\Core\\Command\\Integrity\\SignApp' => $baseDir . '/core/Command/Integrity/SignApp.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index eaacd3939c4..14ed7f984b4 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -1104,6 +1104,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Core\\Command\\Info\\File' => __DIR__ . '/../../..' . '/core/Command/Info/File.php',
'OC\\Core\\Command\\Info\\FileUtils' => __DIR__ . '/../../..' . '/core/Command/Info/FileUtils.php',
'OC\\Core\\Command\\Info\\Space' => __DIR__ . '/../../..' . '/core/Command/Info/Space.php',
+ 'OC\\Core\\Command\\Info\\UserMounts' => __DIR__ . '/../../..' . '/core/Command/Info/UserMounts.php',
'OC\\Core\\Command\\Integrity\\CheckApp' => __DIR__ . '/../../..' . '/core/Command/Integrity/CheckApp.php',
'OC\\Core\\Command\\Integrity\\CheckCore' => __DIR__ . '/../../..' . '/core/Command/Integrity/CheckCore.php',
'OC\\Core\\Command\\Integrity\\SignApp' => __DIR__ . '/../../..' . '/core/Command/Integrity/SignApp.php',