protected function execute(InputInterface $input, OutputInterface $output) { $listCommand = new ListCommand($this->globalService, $this->userService, $this->userSession, $this->userManager); $listInput = new ArrayInput([], $listCommand->getDefinition()); $listInput->setArgument('user_id', $input->getArgument('user_id')); $listInput->setOption('output', 'json_pretty'); $listInput->setOption('show-password', true); $listInput->setOption('full', true); $listCommand->execute($listInput, $output); }
protected function execute(InputInterface $input, OutputInterface $output) { $mountId = $input->getArgument('mount_id'); try { $mount = $this->globalService->getStorage($mountId); } catch (NotFoundException $e) { $output->writeln('<error>Mount with id "' . $mountId . ' not found, check "occ files_external:list" to get available mounts"</error>'); return 404; } $noConfirm = $input->getOption('yes'); if (!$noConfirm) { $listCommand = new ListCommand($this->globalService, $this->userService, $this->userSession, $this->userManager); $listInput = new ArrayInput([], $listCommand->getDefinition()); $listInput->setOption('output', $input->getOption('output')); $listCommand->listMounts(null, [$mount], $listInput, $output); $questionHelper = $this->getHelper('question'); $question = new ConfirmationQuestion('Delete this mount? [y/N] ', false); if (!$questionHelper->ask($input, $output, $question)) { return; } } $this->globalService->removeStorage($mountId); }
private function showMount($user, StorageConfig $mount, InputInterface $input, OutputInterface $output) { $listCommand = new ListCommand($this->globalService, $this->userService, $this->userSession, $this->userManager); $listInput = new ArrayInput([], $listCommand->getDefinition()); $listInput->setOption('output', $input->getOption('output')); $listInput->setOption('show-password', true); $listCommand->listMounts($user, [$mount], $listInput, $output); }
protected function execute(InputInterface $input, OutputInterface $output) { $user = $input->getOption('user'); $path = $input->getArgument('path'); if ($path === '-') { $json = file_get_contents('php://stdin'); } else { if (!file_exists($path)) { $output->writeln('<error>File not found: ' . $path . '</error>'); return 1; } $json = file_get_contents($path); } if (!is_string($json) || strlen($json) < 2) { $output->writeln('<error>Error while reading json</error>'); return 1; } $data = json_decode($json, true); if (!is_array($data)) { $output->writeln('<error>Error while parsing json</error>'); return 1; } $isLegacy = isset($data['user']) || isset($data['group']); if ($isLegacy) { $this->importLegacyStorageService->setData($data); $mounts = $this->importLegacyStorageService->getAllStorages(); foreach ($mounts as $mount) { if ($mount->getBackendOption('password') === false) { $output->writeln('<error>Failed to decrypt password</error>'); return 1; } } } else { if (!isset($data[0])) { //normalize to an array of mounts $data = [$data]; } $mounts = array_map([$this, 'parseData'], $data); } if ($user) { // ensure applicables are correct for personal mounts foreach ($mounts as $mount) { $mount->setApplicableGroups([]); $mount->setApplicableUsers([$user]); } } $storageService = $this->getStorageService($user); $existingMounts = $storageService->getAllStorages(); foreach ($mounts as $mount) { foreach ($existingMounts as $existingMount) { if ($existingMount->getMountPoint() === $mount->getMountPoint() && $existingMount->getApplicableGroups() === $mount->getApplicableGroups() && $existingMount->getApplicableUsers() == $mount->getApplicableUsers() && $existingMount->getBackendOptions() == $mount->getBackendOptions()) { $output->writeln("<error>Duplicate mount (" . $mount->getMountPoint() . ")</error>"); return 1; } } } if ($input->getOption('dry')) { if (count($mounts) === 0) { $output->writeln('<error>No mounts to be imported</error>'); return 1; } $listCommand = new ListCommand($this->globalService, $this->userService, $this->userSession, $this->userManager); $listInput = new ArrayInput([], $listCommand->getDefinition()); $listInput->setOption('output', $input->getOption('output')); $listInput->setOption('show-password', true); $listCommand->listMounts($user, $mounts, $listInput, $output); } else { foreach ($mounts as $mount) { $storageService->addStorage($mount); } } return 0; }