Skip to content

Fixed #15298 - use correct disk for S3 signatures #16405

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

snipe
Copy link
Member

@snipe snipe commented Mar 4, 2025

This should fix #15298, where the S3 signature file was not rendering correctly.

@uberbrady - can you double check this though? We do a lot of shenanigans around flysystem.

@snipe snipe requested a review from uberbrady March 4, 2025 13:40
Copy link

what-the-diff bot commented Mar 4, 2025

PR Summary

  • Enhancement in Accessing File Resources
    The code interacting with the file system has been adjusted. Instead of previously using the file system driver, we now use the $disk variable directly. This change makes our code more efficient and straightforward.

  • Modification in File Permissions
    The condition in the control-flow structure now handles 's3_private' instead of 's3' for generating a short-lived URL for file access. This improvement ensures that our file access is more secure and limits unauthorized access.

@snipe
Copy link
Member Author

snipe commented Mar 4, 2025

Well balls.

In testing this, I set my file driver to S3, which breaks the backup.

-- Starting backup...
Dumping database snipeit-local...
Determining files to backup...
Zipping 3773 files and directories...
Created zip containing 3773 files and directories. Size is 339.94 MB
Copying zip failed because: Could not connect to disk backup because: InvalidArgumentException: Driver [s3_private] is not supported. in /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php:149
Stack trace:
#0 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php(120): Illuminate\Filesystem\FilesystemManager->resolve('backup')
#1 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php(83): Illuminate\Filesystem\FilesystemManager->get('backup')
#2 /Users/snipe/Herd/snipe-it/vendor/spatie/laravel-backup/src/BackupDestination/BackupDestination.php(58): Illuminate\Filesystem\FilesystemManager->disk('backup')
#3 /Users/snipe/Herd/snipe-it/vendor/spatie/laravel-backup/src/BackupDestination/BackupDestinationFactory.php(12): Spatie\Backup\BackupDestination\BackupDestination::create('backup', 'backups')
#4 [internal function]: Spatie\Backup\BackupDestination\BackupDestinationFactory::Spatie\Backup\BackupDestination\{closure}('backup', 0)
#5 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Collections/Arr.php(609): array_map(Object(Closure), Array, Array)
#6 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Collections/Collection.php(795): Illuminate\Support\Arr::map(Array, Object(Closure))
#7 /Users/snipe/Herd/snipe-it/vendor/spatie/laravel-backup/src/BackupDestination/BackupDestinationFactory.php(12): Illuminate\Support\Collection->map(Object(Closure))
#8 /Users/snipe/Herd/snipe-it/vendor/spatie/laravel-backup/src/Tasks/Backup/BackupJobFactory.php(16): Spatie\Backup\BackupDestination\BackupDestinationFactory::createFromArray(Array)
#9 /Users/snipe/Herd/snipe-it/vendor/spatie/laravel-backup/src/Commands/BackupCommand.php(34): Spatie\Backup\Tasks\Backup\BackupJobFactory::createFromArray(Array)
#10 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Spatie\Backup\Commands\BackupCommand->handle()
#11 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#12 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#13 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#14 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/Container.php(694): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#15 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Console/Command.php(213): Illuminate\Container\Container->call(Array)
#16 /Users/snipe/Herd/snipe-it/vendor/symfony/console/Command/Command.php(279): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArrayInput), Object(Illuminate\Console\OutputStyle))
#17 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Illuminate\Console\OutputStyle))
#18 /Users/snipe/Herd/snipe-it/vendor/spatie/laravel-backup/src/Commands/BaseCommand.php(28): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Illuminate\Console\OutputStyle))
#19 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php(68): Spatie\Backup\Commands\BaseCommand->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Illuminate\Console\OutputStyle))
#20 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php(29): Illuminate\Console\Command->runCommand('backup:run', Array, Object(Illuminate\Console\OutputStyle))
#21 /Users/snipe/Herd/snipe-it/app/Console/Commands/SystemBackup.php(50): Illuminate\Console\Command->call('backup:run')
#22 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Console\Commands\SystemBackup->handle()
#23 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#24 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#25 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#26 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Container/Container.php(694): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#27 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Console/Command.php(213): Illuminate\Container\Container->call(Array)
#28 /Users/snipe/Herd/snipe-it/vendor/symfony/console/Command/Command.php(279): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#29 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Console/Command.php(182): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#30 /Users/snipe/Herd/snipe-it/vendor/symfony/console/Application.php(1094): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#31 /Users/snipe/Herd/snipe-it/vendor/symfony/console/Application.php(342): Symfony\Component\Console\Application->doRunCommand(Object(App\Console\Commands\SystemBackup), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#32 /Users/snipe/Herd/snipe-it/vendor/symfony/console/Application.php(193): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#33 /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#34 /Users/snipe/Herd/snipe-it/artisan(33): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#35 {main}.
Backup failed because: Could not connect to disk backup because: InvalidArgumentException: Driver [s3_private] is not supported. in /Users/snipe/Herd/snipe-it/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php:149
Stack trace:

I think this is a kind of known issue with Spatie, but not sure if there's a workaround.

@snipe
Copy link
Member Author

snipe commented Mar 4, 2025

This also might not be related to this PR though, as I was testing the upgrade script when I saw this error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant