Controlador inteligente para Caddy Server con persistencia en base de datos. Este proyecto permite gestionar rutas dinámicamente a través de una API segura, garantizando que la configuración se mantenga incluso después de reinicios.
- Gestión Dinámica de Rutas: Registro y eliminación de rutas mediante API.
- Persistencia Robusta: Sincronización automática con SQL Server mediante EF Core.
- Restauración Atómica: Estrategia de "Intergalactic Restore" usando el endpoint
/loadde Caddy para reemplazos de configuración seguros. - Seguridad: Autenticación basada en Master Key y API Keys.
- Monitoreo de Versión: Seguimiento de la versión del proyecto y de la instancia de Caddy conectada.
La solución está dividida en cuatro componentes principales:
LIN.Cloud.Caddy: Capa de API Web y controladores.LIN.Cloud.Caddy.Persistence: Capa de acceso a datos (DbContext, Repositorios).LIN.Cloud.Caddy.Services: Lógica de negocio e integración directa con la API de Caddy.LIN.Cloud.Caddy.Test: Suite de pruebas unitarias para garantizar la estabilidad.
Asegúrate de configurar los siguientes valores en tu appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Tu-Cadena-De-Conexión"
},
"Caddy": {
"AdminBaseUrl": "http://127.0.0.1:2019"
},
"Authentication": {
"MasterKey": "tu-clave-maestra",
"DefaultApiKey": "tu-api-key-por-defecto"
}
}POST /api/client/register: Registra una nueva ruta (Host + Puerto).DELETE /api/client/remove/{id}: Elimina una ruta por su ID.POST /api/client/restore: Sincroniza todas las rutas de la DB con Caddy.GET /api/client/version: Obtiene la versión del proyecto y de Caddy.
Para ejecutar las pruebas unitarias:
dotnet test- Alexander Giraldo - LIN Cloud Lake