Built-in File Manager (#458)

This commit is contained in:
Saeed Vaziry
2025-02-16 19:56:21 +01:00
committed by GitHub
parent 75e554ad74
commit e2b9d18a71
17 changed files with 907 additions and 29 deletions

View File

@ -15,16 +15,12 @@ class ManageBackupFile
*/
public function download(BackupFile $file): StreamedResponse
{
$localFilename = "backup_{$file->id}_{$file->name}.zip";
$file->backup->server->ssh()->download(
Storage::disk('tmp')->path(basename($file->path())),
$file->path()
);
if (! Storage::disk('backups')->exists($localFilename)) {
$file->backup->server->ssh()->download(
Storage::disk('backups')->path($localFilename),
$file->path()
);
}
return Storage::disk('backups')->download($localFilename, $file->name.'.zip');
return Storage::disk('tmp')->download(basename($file->path()));
}
public function delete(BackupFile $file): void

View File

@ -0,0 +1,39 @@
<?php
namespace App\Actions\FileManager;
use App\Exceptions\SSHError;
use App\Models\File;
use App\Models\Server;
use App\Models\User;
use Illuminate\Validation\Rule;
class FetchFiles
{
/**
* @throws SSHError
*/
public function fetch(User $user, Server $server, array $input): void
{
File::parse(
$user,
$server,
$input['path'],
$input['user'],
$server->os()->ls($input['path'], $input['user'])
);
}
public static function rules(Server $server): array
{
return [
'path' => [
'required',
],
'user' => [
'required',
Rule::in($server->getSshUsers()),
],
];
}
}