# Data-Coupler ## Panoramica Data-Coupler è una soluzione integrata per la gestione di connessioni dati e credenziali, composta da tre progetti principali: - **CredentialManager**: Libreria per la gestione sicura delle credenziali - **DataConnection**: Libreria per connessioni a database e API REST - **Data_Coupler**: Applicazione Blazor Server per l'interfaccia utente ## Architettura ### CredentialManager Libreria responsabile per: - Gestione sicura delle credenziali (Database, REST API) - Crittografia dei dati sensibili - Persistenza su database SQLite - Validazione delle credenziali ### DataConnection Libreria per connessioni dati che include: - Supporto per database: SQL Server, MySQL, PostgreSQL, Oracle, SQLite, DB2, SAP HANA - Gestione connessioni REST API - Integrazione con CredentialManager per l'autenticazione - Factory pattern per la gestione di diversi provider ### Data_Coupler Applicazione Blazor Server che fornisce: - Interfaccia web per la gestione delle credenziali - CRUD completo per credenziali database e REST API - Test delle connessioni - Validazione form integrata ## Configurazione ### 1. Database delle Credenziali L'applicazione utilizza SQLite per memorizzare le credenziali. Il database viene automaticamente creato in: ``` Data_Coupler/wwwroot/data/credentials.db ``` ### 2. Registrazione Servizi Nel `Program.cs` di Data_Coupler: ```csharp // Add CredentialManager services builder.Services.AddDataConnectionCredentialManagement("Data Source=wwwroot/data/credentials.db"); ``` ## Utilizzo ### Gestione Credenziali via Web Interface 1. Avviare l'applicazione Data_Coupler 2. Navigare su `/credentials` 3. Utilizzare l'interfaccia per: - Aggiungere nuove credenziali (Database/REST API) - Modificare credenziali esistenti - Testare le connessioni - Eliminare credenziali ### Utilizzo Programmatico ```csharp // Iniettare il servizio @inject IDataConnectionCredentialService CredentialService // Ottenere opzioni per connessione database var dbOptions = await CredentialService.GetDbManagerOptionsAsync("MyDatabase"); // Ottenere opzioni per API REST var apiOptions = await CredentialService.GetRestServiceOptionsAsync("MyApi"); // Gestire credenziali var credential = new DatabaseCredential { Name = "Test", DatabaseType = DatabaseType.SqlServer, Host = "localhost", Port = 1433, DatabaseName = "TestDB", Username = "user", Password = "password" }; await CredentialService.SaveDatabaseCredentialAsync(credential); ``` ## Struttura dei Progetti ``` Data-Coupler/ ├── CredentialManager/ # Gestione credenziali │ ├── Data/ # DbContext e configurazioni │ ├── Models/ # Modelli per credenziali │ └── Services/ # Servizi core ├── DataConnection/ # Connessioni dati │ ├── CredentialManagement/ # Integrazione con CredentialManager │ │ ├── Interfaces/ # Interfacce servizi │ │ ├── Models/ # Extension methods e conversioni │ │ └── Services/ # Implementazione servizi │ ├── DB/ # Gestione database │ └── REST/ # Gestione API REST └── Data_Coupler/ # Applicazione Blazor ├── Pages/ # Pagine Blazor │ └── CredentialManagement.razor ├── Shared/ # Componenti condivisi └── wwwroot/data/ # Database SQLite ``` ## Build e Deployment ### Prerequisiti - .NET 9.0 SDK - Visual Studio 2022 o VS Code - Docker (opzionale, per deployment containerizzato) ### Build Locale ```bash dotnet build Data_Coupler.sln ``` ### Esecuzione Locale ```bash dotnet run --project Data_Coupler/Data_Coupler.csproj ``` L'applicazione sarà disponibile su: - HTTP: http://localhost:7550 ### 🐳 Deployment Docker **Quick Start con Docker:** ```bash # Pull e run (immagine pubblica) docker run -d -p 7550:7550 -v data-coupler-data:/var/lib/Data_Coupler ghcr.io/alessiodalsi/data-coupler:latest # Con Docker Compose docker-compose up -d ``` **Build Locale:** ```bash # Linux docker build -t data-coupler:local -f Dockerfile . # Windows docker build -t data-coupler:local-windows -f Dockerfile.windows . # Script automatico (PowerShell) .\build-docker.ps1 -Target all -Test # Script automatico (Bash) ./build-docker.sh all ``` **Immagini Disponibili:** - **Linux**: `ghcr.io/alessiodalsi/data-coupler:latest` - **Windows**: `ghcr.io/alessiodalsi/data-coupler:latest-windows` - **Dev**: `ghcr.io/alessiodalsi/data-coupler:dev-latest` - **Staging**: `ghcr.io/alessiodalsi/data-coupler:staging-latest` 📚 **Documentazione Docker Completa**: Vedi [DOCKER_DEPLOYMENT.md](DOCKER_DEPLOYMENT.md) e [GITHUB_ACTIONS_SETUP.md](GITHUB_ACTIONS_SETUP.md) ## Caratteristiche di Sicurezza - **Crittografia**: Le password vengono crittografate prima del salvataggio - **Validazione**: Validazione completa dei dati in input - **Isolamento**: Ogni progetto ha responsabilità specifiche - **Type Safety**: Uso di tipi forti per evitare errori ## Testing L'applicazione include funzionalità di test per: - Connessioni database - Chiamate API REST - Validazione credenziali Il testing può essere eseguito direttamente dall'interfaccia web. ## Log e Monitoring I servizi utilizzano ILogger per tracciare: - Operazioni CRUD sulle credenziali - Test di connessione - Errori e eccezioni ## Contributi Per contribuire al progetto: 1. Fork del repository 2. Creare un branch per la feature 3. Implementare i cambiamenti 4. Testare thoroughly 5. Creare una Pull Request ## Licenza [Specificare la licenza del progetto]