From a566a2ae648ca995d997c02c5e0931149752facc Mon Sep 17 00:00:00 2001 From: Shuki Vaknin Date: Wed, 11 Feb 2026 01:54:30 +0200 Subject: [PATCH] Relax upload type checks for .zst backups --- .../Commands/Jabali/ImportProcessCommand.php | 2 +- app/Filament/Admin/Pages/DirectAdminMigration.php | 8 -------- app/Filament/Jabali/Pages/DirectAdminMigration.php | 14 +++----------- bin/jabali-agent | 6 +++--- 4 files changed, 7 insertions(+), 23 deletions(-) diff --git a/app/Console/Commands/Jabali/ImportProcessCommand.php b/app/Console/Commands/Jabali/ImportProcessCommand.php index fb89722..4cd77f0 100644 --- a/app/Console/Commands/Jabali/ImportProcessCommand.php +++ b/app/Console/Commands/Jabali/ImportProcessCommand.php @@ -478,7 +478,7 @@ class ImportProcessCommand extends Command { $archivePath = strtolower($archivePath); - if (str_ends_with($archivePath, '.tar.zst')) { + if (str_ends_with($archivePath, '.tar.zst') || str_ends_with($archivePath, '.zst')) { return 'tar --zstd -xf'; } diff --git a/app/Filament/Admin/Pages/DirectAdminMigration.php b/app/Filament/Admin/Pages/DirectAdminMigration.php index e58b6ab..4fef801 100644 --- a/app/Filament/Admin/Pages/DirectAdminMigration.php +++ b/app/Filament/Admin/Pages/DirectAdminMigration.php @@ -192,14 +192,6 @@ class DirectAdminMigration extends Page implements HasActions, HasForms ->disk('backups') ->directory('directadmin-migrations') ->preserveFilenames() - ->acceptedFileTypes([ - 'application/gzip', - 'application/x-gzip', - 'application/zstd', - 'application/x-zstd', - 'application/x-tar', - 'application/octet-stream', - ]) ->visible(fn (Get $get): bool => $get('importMethod') === 'backup_file'), TextInput::make('backupFilePath') ->label(__('Backup File Path')) diff --git a/app/Filament/Jabali/Pages/DirectAdminMigration.php b/app/Filament/Jabali/Pages/DirectAdminMigration.php index 445ed7b..f4be28f 100644 --- a/app/Filament/Jabali/Pages/DirectAdminMigration.php +++ b/app/Filament/Jabali/Pages/DirectAdminMigration.php @@ -230,14 +230,6 @@ class DirectAdminMigration extends Page implements HasActions, HasForms ->label(__('DirectAdmin Backup Archive')) ->storeFiles(false) ->required() - ->acceptedFileTypes([ - 'application/octet-stream', - 'application/x-tar', - 'application/zstd', - 'application/x-zstd', - 'application/gzip', - 'application/x-gzip', - ]) ->maxSize(512000) // 500MB in KB ->helperText(__('Supported formats: .tar.zst, .tar.gz, .tgz (max 500MB via upload)')), ]) @@ -256,8 +248,8 @@ class DirectAdminMigration extends Page implements HasActions, HasForms $filename = (string) $file->getClientOriginalName(); $filename = basename($filename); - if (! preg_match('/\\.(tar\\.zst|tar\\.gz|tgz)$/i', $filename)) { - throw new Exception(__('Backup must be a .tar.zst, .tar.gz or .tgz file.')); + if (! preg_match('/\\.(tar\\.zst|zst|tar\\.gz|tgz)$/i', $filename)) { + throw new Exception(__('Backup must be a .zst, .tar.zst, .tar.gz or .tgz file.')); } $maxBytes = 500 * 1024 * 1024; @@ -728,7 +720,7 @@ class DirectAdminMigration extends Page implements HasActions, HasForms } $name = (string) ($item['name'] ?? ''); - if (! preg_match('/\\.(tar\\.zst|tar\\.gz|tgz)$/i', $name)) { + if (! preg_match('/\\.(tar\\.zst|zst|tar\\.gz|tgz)$/i', $name)) { continue; } diff --git a/bin/jabali-agent b/bin/jabali-agent index ba14373..c0663d8 100755 --- a/bin/jabali-agent +++ b/bin/jabali-agent @@ -12682,7 +12682,7 @@ function discoverDirectAdminBackup(string $backupPath, string $extractDir): arra $accounts = []; $tarArgs = ''; - if (preg_match('/\\.tar\\.zst$/i', $backupPath)) { + if (preg_match('/\\.(tar\\.zst|zst)$/i', $backupPath)) { $tarArgs = '--zstd'; } elseif (preg_match('/\\.(tar\\.gz|tgz)$/i', $backupPath)) { $tarArgs = '-I pigz'; @@ -12725,7 +12725,7 @@ function discoverDirectAdminBackup(string $backupPath, string $extractDir): arra // Check for multiple user backups (full server backup) foreach ($fileList as $file) { - if (preg_match('/user\\.([a-z0-9_]+)\\.(?:tar\\.zst|tar\\.gz|tgz)$/i', $file, $matches)) { + if (preg_match('/user\\.([a-z0-9_]+)\\.(?:tar\\.zst|zst|tar\\.gz|tgz)$/i', $file, $matches)) { $username = $matches[1]; // Extract just this user's backup @@ -12735,7 +12735,7 @@ function discoverDirectAdminBackup(string $backupPath, string $extractDir): arra $innerPath = "$extractDir/$innerBackup"; if (file_exists($innerPath)) { $innerTarArgs = ''; - if (preg_match('/\\.tar\\.zst$/i', $innerPath)) { + if (preg_match('/\\.(tar\\.zst|zst)$/i', $innerPath)) { $innerTarArgs = '--zstd'; } elseif (preg_match('/\\.(tar\\.gz|tgz)$/i', $innerPath)) { $innerTarArgs = '-I pigz';