From 324a2ea3f20aacc00dab254b3c767567d563b7ff Mon Sep 17 00:00:00 2001 From: Charles GTE Date: Sat, 4 Jul 2026 12:24:37 +0200 Subject: [PATCH] fix: security (#75) --- docker-compose.yml | 2 +- src/services/backup/uploader.rs | 1 + src/services/storage/mod.rs | 1 + src/services/storage/providers/azure_blob/mod.rs | 1 + src/services/storage/providers/google_cloud_storage/mod.rs | 1 + src/services/storage/providers/google_drive/mod.rs | 1 + src/services/storage/providers/local.rs | 5 +++++ src/services/storage/providers/s3/mod.rs | 1 + 8 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1932027..772ded4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,7 +19,7 @@ services: APP_ENV: development LOG: debug TZ: "Europe/Paris" - EDGE_KEY: "eyJzZXJ2ZXJVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojg4ODciLCJhZ2VudElkIjoiNDA1MTA4YzQtMDJjYy00NTlhLTkxNjItODExNTc3NjAzMjhjIiwibWFzdGVyS2V5QjY0IjoiMUh0djdtWCtYVkJxL0IzUEV2WDlZZjlQeUdVZW5oRHlXemo5THRqNW90WT0ifQ==" + EDGE_KEY: "eyJzZXJ2ZXJVcmwiOiJodHRwOi8vbG9jYWxob3N0Ojg4ODciLCJhZ2VudElkIjoiMDJlYjQ5MjEtY2VhZC00NjlhLTg2NzItM2IyY2YwZDEzNWE1IiwibWFzdGVyS2V5QjY0Ijoidkd4UU5vbGJxcU1XYWExQWU1Y1JDZ1BTVFBrMHo5cUJPNW5xRHN3bGh2OD0ifQ==" #CHUNK_SIZE_MB: "1" #POOLING: 1 #DATABASES_CONFIG_FILE: "config.toml" diff --git a/src/services/backup/uploader.rs b/src/services/backup/uploader.rs index 78fa382..be2ba9e 100644 --- a/src/services/backup/uploader.rs +++ b/src/services/backup/uploader.rs @@ -104,6 +104,7 @@ impl BackupService { method, &storage, Some(encrypt), + &backup_storage_id, ) .await; diff --git a/src/services/storage/mod.rs b/src/services/storage/mod.rs index 39285fe..a8a56fb 100644 --- a/src/services/storage/mod.rs +++ b/src/services/storage/mod.rs @@ -22,6 +22,7 @@ pub trait StorageProvider: Send + Sync { method: BackupMethod, config: &DatabaseStorage, encrypt: Option, + backup_storage_id: &str, ) -> UploadResult; } diff --git a/src/services/storage/providers/azure_blob/mod.rs b/src/services/storage/providers/azure_blob/mod.rs index 3945e26..b0b5e6b 100644 --- a/src/services/storage/providers/azure_blob/mod.rs +++ b/src/services/storage/providers/azure_blob/mod.rs @@ -26,6 +26,7 @@ impl StorageProvider for AzureBlobProvider { _method: BackupMethod, storage: &DatabaseStorage, encrypt: Option, + _backup_storage_id: &str, ) -> UploadResult { let Some(file_path) = result.backup_file else { return UploadResult { diff --git a/src/services/storage/providers/google_cloud_storage/mod.rs b/src/services/storage/providers/google_cloud_storage/mod.rs index 2716fe1..453a63e 100644 --- a/src/services/storage/providers/google_cloud_storage/mod.rs +++ b/src/services/storage/providers/google_cloud_storage/mod.rs @@ -28,6 +28,7 @@ impl StorageProvider for GoogleCloudStorageProvider { _method: BackupMethod, storage: &DatabaseStorage, encrypt: Option, + _backup_storage_id: &str, ) -> UploadResult { let Some(file_path) = result.backup_file else { return UploadResult { diff --git a/src/services/storage/providers/google_drive/mod.rs b/src/services/storage/providers/google_drive/mod.rs index 864cf75..89b11b5 100644 --- a/src/services/storage/providers/google_drive/mod.rs +++ b/src/services/storage/providers/google_drive/mod.rs @@ -26,6 +26,7 @@ impl StorageProvider for GoogleDriveProvider { _method: BackupMethod, storage: &DatabaseStorage, encrypt: Option, + _backup_storage_id: &str, ) -> UploadResult { let Some(file_path) = result.backup_file else { return UploadResult { diff --git a/src/services/storage/providers/local.rs b/src/services/storage/providers/local.rs index b857ad7..a574faa 100644 --- a/src/services/storage/providers/local.rs +++ b/src/services/storage/providers/local.rs @@ -23,6 +23,7 @@ impl StorageProvider for LocalProvider { method: BackupMethod, storage: &DatabaseStorage, encrypt: Option, + backup_storage_id: &str, ) -> UploadResult { let Some(file_path) = result.backup_file else { return UploadResult { @@ -82,6 +83,10 @@ impl StorageProvider for LocalProvider { "X-Generated-Id", HeaderValue::from_str(&result.generated_id).unwrap(), ); + extra_headers.insert( + "X-Backup-Storage-Id", + HeaderValue::from_str(backup_storage_id).unwrap(), + ); extra_headers.insert("X-Status", HeaderValue::from_str(&result.status).unwrap()); extra_headers.insert( "X-Method", diff --git a/src/services/storage/providers/s3/mod.rs b/src/services/storage/providers/s3/mod.rs index 368d021..f01db64 100644 --- a/src/services/storage/providers/s3/mod.rs +++ b/src/services/storage/providers/s3/mod.rs @@ -34,6 +34,7 @@ impl StorageProvider for S3Provider { _method: BackupMethod, storage: &DatabaseStorage, encrypt: Option, + _backup_storage_id: &str, ) -> UploadResult { let Some(file_path) = result.backup_file else { return UploadResult {