Ejemplo n.º 1
0
 /**
  * Returns a listing of files in a given directory for a server.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  string $uuid`
  * @return \Illuminate\Contracts\View\View
  */
 public function postDirectoryList(Request $request, $uuid)
 {
     $server = Models\Server::getByUUID($uuid);
     $this->directory = '/' . trim(urldecode($request->input('directory', '/')), '/');
     $this->authorize('list-files', $server);
     $prevDir = ['header' => $this->directory !== '/' ? $this->directory : ''];
     if ($this->directory !== '/') {
         $prevDir['first'] = true;
     }
     // Determine if we should show back links in the file browser.
     // This code is strange, and could probably be rewritten much better.
     $goBack = explode('/', rtrim($this->directory, '/'));
     if (isset($goBack[2]) && !empty($goBack[2])) {
         $prevDir['show'] = true;
         $prevDir['link'] = '/' . trim(str_replace(end($goBack), '', $this->directory), '/');
         $prevDir['link_show'] = trim($prevDir['link'], '/');
     }
     $controller = new Repositories\Daemon\FileRepository($uuid);
     try {
         $directoryContents = $controller->returnDirectoryListing($this->directory);
     } catch (DisplayException $ex) {
         return response($ex->getMessage(), 500);
     } catch (\Exception $ex) {
         Log::error($ex);
         return response('An error occured while attempting to load the requested directory, please try again.', 500);
     }
     return view('server.files.list', ['server' => $server, 'files' => $directoryContents->files, 'folders' => $directoryContents->folders, 'extensions' => Repositories\HelperRepository::editableFiles(), 'directory' => $prevDir]);
 }