1
1
mirror of https://github.com/pterodactyl/panel.git synced 2024-10-26 12:52:28 +02:00

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'))) {

View File

@ -137,7 +137,7 @@
<td data-identifier="name" data-name="{{ rawurlencode($file['entry']) }}" data-path="@if($file['directory'] !== ''){{ rawurlencode($file['directory']) }}@endif/">
@if(in_array($file['mime'], $editableMime))
@can('edit-files', $server)
<a href="/server/{{ $server->uuidShort }}/files/edit/@if($file['directory'] !== ''){{ rawurlencode($file['directory']) }}/@endif{{ rawurlencode($file['entry']) }}" class="edit_file">{{ $file['entry'] }}</a>
<a href="/server/{{ $server->uuidShort }}/files/edit/@if($file['directory'] !== ''){{ $file['directory'] }}/@endif{{ $file['entry'] }}" class="edit_file">{{ $file['entry'] }}</a>
@else
{{ $file['entry'] }}
@endcan

View File

@ -52,7 +52,7 @@ Route::group(['prefix' => 'databases'], function () {
Route::group(['prefix' => 'files'], function () {
Route::get('/', 'Files\FileActionsController@index')->name('server.files.index');
Route::get('/add', 'Files\FileActionsController@create')->name('server.files.add');
Route::get('/edit/{file}', 'Files\FileActionsController@update')->name('server.files.edit')->where('file', '.*');
Route::get('/edit/{file}', 'Files\FileActionsController@view')->name('server.files.edit')->where('file', '.*');
Route::get('/download/{file}', 'Files\DownloadController@index')->name('server.files.edit')->where('file', '.*');
Route::post('/directory-list', 'Files\RemoteRequestController@directory')->name('server.files.directory-list');