feat: Enhance configuration forms and validation for storage providers

- Added hidden input fields to ensure critical values are submitted with the form for S3 and other storage providers.
- Implemented JavaScript functionality to auto-populate hidden fields based on user input for S3-compatible providers.
- Updated validation logic for WebDAV and SMB providers to ensure required fields are checked.
- Enhanced the configuration handler to explicitly set fields for various storage provider types, including S3, Wasabi, MinIO, and B2.
- Improved error handling and logging for form submissions and provider credential management.
This commit is contained in:
StarFleetCPTN committed 2025-04-18 02:43:22 -07:00
1 parent 776c4971a6
commit dc665b9fa4
8 files changed
+661 -30

No files matched your search

+15 -2
View File
@@ -104,7 +104,15 @@ func createTempTransferConfig(provider *db.StorageProvider) *db.TransferConfig {
config.SetSourcePassiveMode(passive)
}
case db.ProviderTypeS3:
case db.ProviderTypeS3, db.ProviderTypeWasabi, db.ProviderTypeMinio:
config.SourceAccessKey = provider.AccessKey
config.SourceSecretKey = provider.SecretKey
config.SourceBucket = provider.Bucket
config.SourceRegion = provider.Region
config.SourceEndpoint = provider.Endpoint
case db.ProviderTypeB2:
// B2 uses AccessKey as account and SecretKey as application key
config.SourceAccessKey = provider.AccessKey
config.SourceSecretKey = provider.SecretKey
config.SourceBucket = provider.Bucket
@@ -162,13 +170,18 @@ func (s *ConnectorService) decryptProviderCredentials(provider *db.StorageProvid
provider.Password = password
}
case db.ProviderTypeS3:
case db.ProviderTypeS3, db.ProviderTypeWasabi, db.ProviderTypeMinio, db.ProviderTypeB2:
if provider.EncryptedSecretKey != "" {
secretKey, err := s.credentialEncryptor.Decrypt(provider.EncryptedSecretKey)
if err != nil {
return fmt.Errorf("failed to decrypt secret key: %w", err)
}
provider.SecretKey = secretKey
log.Printf("DEBUG: Decrypted secret key for %s provider (ID: %d, Type: %s) with length: %d",
provider.Name, provider.ID, provider.Type, len(provider.SecretKey))
} else {
log.Printf("WARNING: No encrypted secret key found for %s provider (ID: %d, Type: %s)",
provider.Name, provider.ID, provider.Type)
}
case db.ProviderTypeOneDrive, db.ProviderTypeGoogleDrive, db.ProviderTypeGooglePhoto: