From 034a310702d429d38af01408450f7a499ce5acc6 Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Sun, 23 Aug 2020 18:06:47 -0700 Subject: [PATCH] Use checksum more broadly, not specifically SHA256 --- app/Models/Backup.php | 6 +-- .../Api/Client/BackupTransformer.php | 2 +- ...31_modify_checksums_column_for_backups.php | 41 +++++++++++++++++++ resources/scripts/api/server/types.d.ts | 2 +- resources/scripts/api/transformers.ts | 2 +- .../server/backups/BackupContextMenu.tsx | 2 +- .../components/server/backups/BackupRow.tsx | 2 +- .../server/backups/ChecksumModal.tsx | 2 +- 8 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 database/migrations/2020_08_23_175331_modify_checksums_column_for_backups.php diff --git a/app/Models/Backup.php b/app/Models/Backup.php index e164b1ae..5a8ab28e 100644 --- a/app/Models/Backup.php +++ b/app/Models/Backup.php @@ -12,7 +12,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @property string $name * @property string[] $ignored_files * @property string $disk - * @property string|null $sha256_hash + * @property string|null $checksum * @property int $bytes * @property \Carbon\CarbonImmutable|null $completed_at * @property \Carbon\CarbonImmutable $created_at @@ -62,7 +62,7 @@ class Backup extends Model */ protected $attributes = [ 'is_successful' => true, - 'sha256_hash' => null, + 'checksum' => null, 'bytes' => 0, ]; @@ -76,7 +76,7 @@ class Backup extends Model 'name' => 'required|string', 'ignored_files' => 'array', 'disk' => 'required|string', - 'sha256_hash' => 'nullable|string', + 'checksum' => 'nullable|string', 'bytes' => 'numeric', ]; diff --git a/app/Transformers/Api/Client/BackupTransformer.php b/app/Transformers/Api/Client/BackupTransformer.php index 15d6b357..d5acd41f 100644 --- a/app/Transformers/Api/Client/BackupTransformer.php +++ b/app/Transformers/Api/Client/BackupTransformer.php @@ -25,7 +25,7 @@ class BackupTransformer extends BaseClientTransformer 'is_successful' => $backup->is_successful, 'name' => $backup->name, 'ignored_files' => $backup->ignored_files, - 'sha256_hash' => $backup->sha256_hash, + 'checksum' => $backup->checksum, 'bytes' => $backup->bytes, 'created_at' => $backup->created_at->toIso8601String(), 'completed_at' => $backup->completed_at ? $backup->completed_at->toIso8601String() : null, diff --git a/database/migrations/2020_08_23_175331_modify_checksums_column_for_backups.php b/database/migrations/2020_08_23_175331_modify_checksums_column_for_backups.php new file mode 100644 index 00000000..8a9013cd --- /dev/null +++ b/database/migrations/2020_08_23_175331_modify_checksums_column_for_backups.php @@ -0,0 +1,41 @@ +renameColumn('sha256_hash', 'checksum'); + }); + + Schema::table('backups', function (Blueprint $table) { + DB::update('UPDATE backups SET checksum = CONCAT(\'sha256:\', checksum)'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('backups', function (Blueprint $table) { + $table->renameColumn('checksum', 'sha256_hash'); + }); + + Schema::table('backups', function (Blueprint $table) { + DB::update('UPDATE backups SET sha256_hash = SUBSTRING(sha256_hash, 8)'); + }); + } +} diff --git a/resources/scripts/api/server/types.d.ts b/resources/scripts/api/server/types.d.ts index e11a39c4..b37fae40 100644 --- a/resources/scripts/api/server/types.d.ts +++ b/resources/scripts/api/server/types.d.ts @@ -3,7 +3,7 @@ export interface ServerBackup { isSuccessful: boolean; name: string; ignoredFiles: string; - sha256Hash: string; + checksum: string; bytes: number; createdAt: Date; completedAt: Date | null; diff --git a/resources/scripts/api/transformers.ts b/resources/scripts/api/transformers.ts index 53ee514e..595f2b9c 100644 --- a/resources/scripts/api/transformers.ts +++ b/resources/scripts/api/transformers.ts @@ -46,7 +46,7 @@ export const rawDataToServerBackup = ({ attributes }: FractalResponseData): Serv isSuccessful: attributes.is_successful, name: attributes.name, ignoredFiles: attributes.ignored_files, - sha256Hash: attributes.sha256_hash, + checksum: attributes.checksum, bytes: attributes.bytes, createdAt: new Date(attributes.created_at), completedAt: attributes.completed_at ? new Date(attributes.completed_at) : null, diff --git a/resources/scripts/components/server/backups/BackupContextMenu.tsx b/resources/scripts/components/server/backups/BackupContextMenu.tsx index 9542389c..422155cf 100644 --- a/resources/scripts/components/server/backups/BackupContextMenu.tsx +++ b/resources/scripts/components/server/backups/BackupContextMenu.tsx @@ -66,7 +66,7 @@ export default ({ backup }: Props) => { appear visible={visible} onDismissed={() => setVisible(false)} - checksum={backup.sha256Hash} + checksum={backup.checksum} /> } { items: data.items.map(b => b.uuid !== backup.uuid ? b : ({ ...b, isSuccessful: parsed.is_successful || true, - sha256Hash: parsed.sha256_hash || '', + checksum: parsed.checksum || '', bytes: parsed.file_size || 0, completedAt: new Date(), })), diff --git a/resources/scripts/components/server/backups/ChecksumModal.tsx b/resources/scripts/components/server/backups/ChecksumModal.tsx index 91b27590..f37774f5 100644 --- a/resources/scripts/components/server/backups/ChecksumModal.tsx +++ b/resources/scripts/components/server/backups/ChecksumModal.tsx @@ -6,7 +6,7 @@ const ChecksumModal = ({ checksum, ...props }: RequiredModalProps & { checksum:

Verify file checksum

- The SHA256 checksum of this file is: + The checksum of this file is:

             {checksum}