Beispiel #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]);
 }
Beispiel #2
0
 /**
  * Save the contents of a requested file on the Scales instance.
  *
  * @param  string $file
  * @param  string $content
  * @return boolean
  */
 public function saveFileContents($file, $content)
 {
     if (empty($file)) {
         throw new Exception('A valid file and path must be specified to save a file.');
     }
     $file = (object) pathinfo($file);
     if (!in_array($file->extension, HelperRepository::editableFiles())) {
         throw new DisplayException('You do not have permission to edit this type of file.');
     }
     $file->dirname = in_array($file->dirname, ['.', './', '/']) ? null : trim($file->dirname, '/') . '/';
     $res = $this->client->request('POST', '/server/file/' . rawurlencode($file->dirname . $file->basename), ['headers' => $this->headers, 'json' => ['content' => $content]]);
     if ($res->getStatusCode() !== 204) {
         throw new DisplayException('An error occured while attempting to save this file. ' . $res->getBody());
     }
     return true;
 }