Fix some file management bugs, closes #621

This commit is contained in:
Dane Everitt 2018-01-01 13:21:10 -06:00
parent ffc8d4875f
commit 0ec5a4e08c
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
5 changed files with 12 additions and 7 deletions

View file

@ -95,11 +95,10 @@ class FileActionsController extends Controller
* @param string $file
* @return \Illuminate\View\View
*
* @throws \Illuminate\Auth\Access\AuthorizationException
* @throws \Pterodactyl\Exceptions\DisplayException
* @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException
* @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
*/
public function update(UpdateFileContentsFormRequest $request, string $uuid, string $file): View
public function view(UpdateFileContentsFormRequest $request, string $uuid, string $file): View
{
$server = $request->attributes->get('server');

View file

@ -101,7 +101,7 @@ class RemoteRequestController extends Controller
$this->repository->setNode($server->node_id)
->setAccessServer($server->uuid)
->setAccessToken($request->attributes->get('server_token'))
->putContent($request->input('file'), $request->input('contents'));
->putContent($request->input('file'), $request->input('contents') ?? '');
return response('', 204);
} catch (RequestException $exception) {

View file

@ -12,6 +12,7 @@ namespace Pterodactyl\Http\Requests\Server;
use GuzzleHttp\Exception\RequestException;
use Illuminate\Contracts\Config\Repository;
use Pterodactyl\Exceptions\Http\Server\FileSizeTooLargeException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Pterodactyl\Contracts\Repository\Daemon\FileRepositoryInterface;
use Pterodactyl\Exceptions\Http\Server\FileTypeNotEditableException;
use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException;
@ -80,7 +81,12 @@ class UpdateFileContentsFormRequest extends ServerFormRequest
->setAccessToken($token)
->getFileStat($this->route()->parameter('file'));
} catch (RequestException $exception) {
throw new DaemonConnectionException($exception);
switch ($exception->getCode()) {
case 404:
throw new NotFoundHttpException;
default:
throw new DaemonConnectionException($exception);
}
}
if (! $stats->file || ! in_array($stats->mime, $config->get('pterodactyl.files.editable'))) {