2016-11-09 22:58:14 +00:00
|
|
|
<?php
|
2016-12-14 21:56:25 +00:00
|
|
|
|
2017-09-20 03:10:14 +00:00
|
|
|
namespace Pterodactyl\Console\Commands\Maintenance;
|
2016-11-09 22:58:14 +00:00
|
|
|
|
2017-12-17 19:07:38 +00:00
|
|
|
use SplFileInfo;
|
2017-09-20 03:10:14 +00:00
|
|
|
use Carbon\Carbon;
|
2016-11-09 22:58:14 +00:00
|
|
|
use Illuminate\Console\Command;
|
2022-10-14 16:59:20 +00:00
|
|
|
use Illuminate\Contracts\Filesystem\Filesystem;
|
2017-09-20 03:10:14 +00:00
|
|
|
use Illuminate\Contracts\Filesystem\Factory as FilesystemFactory;
|
2016-11-09 22:58:14 +00:00
|
|
|
|
2017-09-20 03:10:14 +00:00
|
|
|
class CleanServiceBackupFilesCommand extends Command
|
2016-11-09 22:58:14 +00:00
|
|
|
{
|
2021-01-23 20:33:34 +00:00
|
|
|
public const BACKUP_THRESHOLD_MINUTES = 5;
|
2017-11-12 23:16:54 +00:00
|
|
|
|
2017-09-20 03:10:14 +00:00
|
|
|
protected $description = 'Clean orphaned .bak files created when modifying services.';
|
|
|
|
|
|
|
|
protected $signature = 'p:maintenance:clean-service-backups';
|
2016-11-09 22:58:14 +00:00
|
|
|
|
2022-10-14 16:59:20 +00:00
|
|
|
protected Filesystem $disk;
|
|
|
|
|
2016-11-09 22:58:14 +00:00
|
|
|
/**
|
2017-09-20 03:10:14 +00:00
|
|
|
* CleanServiceBackupFilesCommand constructor.
|
2016-11-09 22:58:14 +00:00
|
|
|
*/
|
2017-12-17 19:07:38 +00:00
|
|
|
public function __construct(FilesystemFactory $filesystem)
|
2016-11-09 22:58:14 +00:00
|
|
|
{
|
|
|
|
parent::__construct();
|
2017-09-20 03:10:14 +00:00
|
|
|
|
|
|
|
$this->disk = $filesystem->disk();
|
2016-11-09 22:58:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-09-20 03:10:14 +00:00
|
|
|
* Handle command execution.
|
2016-11-09 22:58:14 +00:00
|
|
|
*/
|
|
|
|
public function handle()
|
|
|
|
{
|
2017-09-20 03:10:14 +00:00
|
|
|
$files = $this->disk->files('services/.bak');
|
2016-11-09 22:58:14 +00:00
|
|
|
|
2017-12-17 19:07:38 +00:00
|
|
|
collect($files)->each(function (SplFileInfo $file) {
|
|
|
|
$lastModified = Carbon::createFromTimestamp($this->disk->lastModified($file->getPath()));
|
|
|
|
if ($lastModified->diffInMinutes(Carbon::now()) > self::BACKUP_THRESHOLD_MINUTES) {
|
|
|
|
$this->disk->delete($file->getPath());
|
|
|
|
$this->info(trans('command/messages.maintenance.deleting_service_backup', ['file' => $file->getFilename()]));
|
2016-11-09 22:58:14 +00:00
|
|
|
}
|
2017-09-20 03:10:14 +00:00
|
|
|
});
|
2016-11-09 22:58:14 +00:00
|
|
|
}
|
|
|
|
}
|